Datasaber ワークで突然出現する機能3 (Ord8-1)
自力作成のきっかけとして、知らないとできない(答えを見てからでないとできない)という突然出てくる新機能をメモしました
なお、このブログ記事はパブリックポイント用と自分の復習用で作成しています。後日作成なので抜けているかも…。ノートつけながら進めたらよかったです(2回目)
Q10以降は次に続きます
Ord8HandsOn - Advanced I-Q1
やりたいこと:表示グラフを切り替えたいのでパラメータとグラフ表示を連携させたい
ダッシュボード上に表示を切り替えたいグラフが3つある状況です
①パラメータをフィルタにしたい
・パラメータ作成(リスト1,2,3 にそれぞれ表示グラフ名割り当て)
・計算フィールドの作成→計算式記入欄にパラメータをドラッグドロップ
パラメータを作るがフィルターにならない(「フィルター」の欄に入らない)
→パラメーターから計算フィールドを作るとフィルターとして使えるようになる
②①で作成したフィルターとグラフの連携方法
・表示したいグラフ1 でパラメータを表示させ、1番目を選んでおく
・ (1)-①でパラメータから作った計算フィールド(表示グラフ切り替え)をフィルタカードに入れる
・次に出てくるウインドウで、リストに1のみがある状態で出てくる
→1にチェックを付ける
これでグラフは『貴様に1番を付与した!本部(ダッシュボード)から番号で呼ばれたら速やかに出頭せよ!』という状態になります
Ord8-Q1
やりたいこと2:表示させないグラフの分はスペースを閉じたい
自動 ダッシュボードにグラフを投入する際に、コンテナ機能を使う
Ord8-Q2
やりたいこと:日付データ (オーダー日) の中から最終日の情報を取り出したい
ハンド 計算フィールドの作成 MAX( [オーダー日] )
※逆に一番古い日(最初に購入した日) は MIN( [オーダー日] ) で出すことができる
やりたいこと2:それを顧客別にに出したい
LOD関数を使用する。
これはVIZの軸に表示切り分けの条件となる顧客、サブカテゴリなどを必ずしも表示させなくても、あるいは表示しててもそれを無視してある条件に沿った集計を返してくれる機能です
Ord8で出てくるLOD関数と書き方
(1) { FIXED [条件]:集計式} …Q2で使用
[条件]にあてはまるもので集計
例: { FIXED [顧客 Id]:MAX([オーダー日])}
(2) { INCLUDE [条件]:集計式 }…Q3で使用
[条件]にあてはまるもので集計
例: { INCLUDE [オーダー Id]:SUM([売上])}
(3) {EXCLUDE [条件]: 集計式)}…Q8で使用
VIZに表示された[条件]分けを無視して集計
例:
{ EXCLUDE [カテゴリ1]:
sum(IF [カテゴリ1]=[Q8ソートカテゴリー] then [売上] end) }
※[Q8ソートカテゴリー] は作成したパラメータです
<それぞれの違い>
・FIXEDとINCLUDEは[条件]にあてはまるもので集計する
・EXCLUDEは[条件]にあてはまるものを除外して集計する
・FIXEDはVIZ上の切り分け条件を無視して集計する(Q3注意)
・INCLUDEはVIZ上に切り分け条件を追加したとき、それに応じて集計は修正される
・INCLUDEで作成した集計値からは分布図のビン(区切り)が作成できない
(Q4、FIXEDでは可能)
Ord8-Q3
やりたいこと:条件=顧客ごと の購入回数を集計したい
(1)自動 行に顧客ID投入→メジャー種類を カウント(個別)に変更
(2)ハンド 顧客ID 横の▼クリック→作成→計算フィールドの作成
{ FIXED [顧客 Id]:COUNTD([オーダー Id])}
入力時 COUNTD([オーダー Id]) は行の欄から(1)で作ったものをドラッグして持ってくると自動で記入される
FIXEDの条件をcount([オーダー]ID) とし、購入回数が同じ顧客をカウント
→その分布図を作ればいいのではないか?と考えました
結果、「count」はFIXED関数の条件にできにないというエラー発生
よって横軸の購入回数は(1)で作成し、そこに縦軸で(2)で作った集計値を表示させるという方法になるようです
Ord8-Q3 オプション問題
やりたいこと:VIZ上のすでに表示された条件分け(購入回数)に加えて、もう一つの条件(オーダーごと)の集計値(平均売り上げ)を出したい
・ハンド INCLUDEを使う(上記のLOD関数まとめ)
・注意点:{ FIXED [オーダー Id]:SUM([売上])}とすると、visでは購入回数横軸のグラフになっているにも関わらず、購入回数が異なるオーダーIDの売上も集計されてしまうので結果が変わってしまいます。Q3の答えも間違うので、要注意です。
別のシートで元データのクロス集計表で確認しますと(下記)、同じオーダーIDの中に違う日、違う顧客のデータが含まれています
オーダーIDって何なんですかね…という疑問はさておき
このためFIXED [オーダー Id]とした場合は、購入回数が違っていても無視され、オーダーIDでくくって集計してしまうため、意図と違った集計になってしまうということらしいです。
Ord8-Q4
売上額の分布図を作成する問題で、新機能ではないですが、つまずいた点
やりたいこと:条件(顧客ID)単位でメジャー(売上)からビンを作りたい
ビンと分布図の作成は Ord5-Q3 で出てきました。
(1) ハンド 計算フィールド作成→”顧客IDごと売上合計” をLOD関数 FIXEDで作成
(2) (1)で作成した計算値の▼→作成→ビン→10万円ごとでビンを作成
つまづきポイント:INCLUDEでは作成の選択肢のなかにビンが出てこない
INCLUDEは粒度に応じて計算をし直すから固定のビンが作成できないのではないか…と思われます。
Ord8-Q8
やりたいこと
カテゴリごとのパラメータを設定し、計算式を作成したところ、
「パラメータで選択したカテゴリとそうでないもので計算結果の行が2行に分かれてしまい、それぞれにNullの空欄ができてしまう」
状態になるので、計算式は維持して、全部同じ行に表示させたい
ハンド 計算式に上記紹介の LOD関数の EXCLUDE をかぶせて カテゴリを無視させる
{
EXCLUDE [カテゴリ]:
sum(IF [カテゴリ]=[ソート用カテゴリー] then [売上] end)
}
sum 以下が個別に計算したい内容
計算式は維持しつつ、行は分かれなくなる…感覚的にはちょっと理解できていません
Ord8-Q9
できたつもりが結果が正解と変わってしまう、というポイントがありました
やりたいこと:計算した顧客の「購入間隔(月)の平均」を横軸にして分布を作成するため、計算結果を整数にしたい
×: 自動 メジャー横の▼クリック→データ形式→整数 にする
int() の関数が適用され、切り捨てになってしまう
〇:ハンドで 購入間隔を計算する式を round() でくくり、四捨五入する
round (数値、小数点以下の桁数) これはエクセルにもある関数です
切り捨てによる整数化でもいい場合もあると思いますが、切り捨てと四捨五入ではこの設問では正解とVIZの形が違ってきてしまいます。
整数化が「切り捨て」と知らなかったのでなぜグラフの形が違うんだ~としばらく悩んでしまいました。
ちょっと不足があるかもしれませんが以上です