WoW2020W7 からの学び:正規表現を使ったパラメータアクション^^

WoW2020 W7
今回のお題はまだまだ勉強が必要な”パラメーターアクション”。
デフォルト表示はカテゴリごとの売上。両サイドに配置されてテキストボックスに予測、ターゲットを入力しカテゴリを選択するとチャートに反映される仕組み。

積み重ねの成果?なのかVizを見てダッシュボード上のシート配置は予測できるようになってきたけど、ダッシュボードアクションはまだまだ。。。

ダッシュボードアクションが頭の中だけでも構築できるレベルを目指し、今回もしっかりと振り返り^^

【今回の学び】

◆背景色の付け方。
まとめたコンテナで色設定すると簡単!
基本的な機能だけど、この発想にいたれていない。

◆シート内への空白スペース配置。

列、または行に””ディメンションを配置。
柔軟にレイアウトを整えている。

◆正規表現^^

ーーーーー各シートの設定ーーーーー
◆売上予測カテゴリ選択
このシートで選択したカテゴリをもとに//Palameter Stringへ”カテゴリ名” "予測値+売上" "予測値"を入力。

選択した項目を//Concat Param Categoryを使い//Parameter Stringへ反映するパラメーターアクションを設定。
反映される内容は↓
//Concat Param Category
[Parameter String] + ATTR([Category]) +'_'
+STR(ROUND([Sales Forecast]+SUM([Sales]),0))+'|'+STR([Sales Forecast])+':'

例)Technology、Office Suppliesを選択した場合

Technology_341758|70000:Office Supplies_316136|70000:


//Currentで表示される//Categoryに色付け。
//Current
IF CONTAINS([Parameter String],[Category])THEN [Category] END

●はAVG(0)で位置決め。


◆メインシート

売上予測・目標設定シートの内容をカテゴリをキーに反映。両シートともほぼ同じ作りなので売上予測をもとにメモ。
カテゴリが選択されるとサイズ違いの棒グラフがテキストボックスに入力された予測値を//Current ($)で取得し表示する仕組み。

//Current ($)

INT(if contains( [Parameter String] , [Category] ) then
REGEXP_EXTRACT( [Parameter String] , [Category] +"_(\d+)") 
end)

REGEXP_EXTRACT??
正規表現パターンと一致する文字列の一部を返すことができる関数。
パターン内のキャプチャグループに一致する特定の文字列のサブ文字列が返される。
正規表現(せいきひょうげん、regular expression)とは、文字列の集合を一つの文字列で表現する方法の一つである。


正規表現、全くわからないのでここを参考に例題を解析。
正規表現関数入門【REGEXP_EXTRACT】
サルにもわかる正規表現入門

例題のパターン部分は" [a-z]+¥s+(¥d+) "


パターン内に書かれたそれぞれの意味を調べてみた。


[a-z]は文字の集合。文字の範囲内にマッチ。

¥sは空白文字。
¥dは数字にマッチ。全角文字にはマッチしない。
+ は直前の文字の1回以上の繰返しにマッチ。{1,}と同様
例えば /a+/ は”candy”の”a”や”caaaaaaandy”の全てのaにマッチする。
()は正規表現のグループ化。カッコ内は記録される。

【参考】

* 直前の文字がないか、直前の文字が一つ以上繰り返し
+ 直前の文字が最低でも1つは繰り返し
? 直前の文字がないか、ひとつだけあるか?

返されるのは、パターン内のキャプチャグループに一致する文字列のサブ文字列。

キャプチャグループ??
正規表現あれこれ
ここから調べてみたら、キャプチャは()カッコ内の文字列を記録し、参照できるようにすること。
なので、返ってくるのは()で囲まれた¥d+=123

今回のケースだとパターンはこの部分。
[Category] +"_(\d+)"

\d :全ての数字
//Parameter Stringに入っているのはTechnology_341758|70000:
なので返ってくるのは「341758」

長くなったけど、上記より
//Current ($)は「341758」

この数値は全レコードに適用されるので合計ではなく最大値で設定!
完璧じゃないけど、やっと理解できた!

Targetシートも同じ考えで作成^^



◆Resetボタン

//Reset
   REPLACE([Parameter String],[Parameter String],"")
//False →"False"
//True →"True"
resetシートを選択することで//Parameter Stringに//Resetが適用せれるよう、パラメータアクションを設定。アクションはシート全体にかかっているのでリセットマーク以外を選択してもアクション発動。またフィルターアクションを使いresetシート選択時に設定されるフィルターを自動解除。



あとは、ツールヒントとマークラベルを整理すれば完成!!

ツールヒント、マークラベルでもたくさんの学びあり^^

今回は、自力どころか再現もかなり難しかった(T T)

だけど、少し時間をかけて正規表現を勉強したおかげで、かなり視野が広がった気がする^^
もっと引き出しが増えるように、来週もがんばるぞ〜




コメント

このブログの人気の投稿

【解決!】セカンドスクリーンに表示されるデスクトップアイコンをメインスクリーンに表示する方法

以外と簡単!?tableau パラメーターアクションを使ってドリルダウンする方法