こんにちは。Deckです。
今回はQlik Senseを使いこなす上級者向けの機能であるDeclareとDeriveによる項目の自動生成を解説します。
データ分析をしていると、取り込みたいデータソースに「受注年月日」「発送年月日」「支払年月日」などカレンダー項目がいくつもあるものに出くわすことがあると思います。
このようなときにカレンダーの定義を1度定義するだけでそれぞれのカレンダー項目が作成できる機能を使ってみましょう。
なお、このDeclareとDeriveはQlik Senseのデータ マネージャーから派生した機能であり、QlikViewでは利用できませんのでご注意ください。
今回は下図のような「受注年月日」「発送年月日」「支払年月日」などカレンダー項目がいくつもあるテーブルを想定しています。
QlikViewと同様にそれぞれの年月日に対してカレンダーテーブルを作成することもできますが、ここでは一括でカレンダー項目を作成してみましょう。
まずはデータ ロード エディタでテーブルを読み込みましょう。
注文明細サンプル:
LOAD 明細番号,
注文年月日,
発送年月日,
支払年月日,
商品,
顧客ID,
金額
FROM [ディレクトリ構造に合わせて変更してください\注文明細サンプル_複数カレンダー.CSV]
(txt, codepage is 932,embedded labels,delimiter is ',', msq)
;
カレンダー項目の定義を作成します。定義方法は以下の通りです。
テーブル名:
Declare Field[s] Definition Tagged ('$タグ名') Fields 定義 as 項目名 [Tagged ('タグ名')] ;
LOAD文を使って取り込みするときの文法と似ていますが、以下のような違いがあります。
カレンダー定義スクリプトの例を示します。必要に応じて項目を増減しましょう。
カレンダー:
Declare Field Definition Tagged ('$date')
Fields
Date($1,'YYYY/MM/DD') as 年月日 Tagged ('$axis', '$date'),
Dual(Num($1),Year($1)) as 年 Tagged ('$axis', '$year'),
Dual(Num(Year($1) - If(Month($1)<=3, 1, 0),'0000'), Year($1)) as 年度 Tagged ('$axis', '$fiscalyear'),
Dual(Num(Month($1)), Month($1) + If(Month($1)<=3, 9, -3)) as 月 Tagged ('$axis', '$month'),
Dual(Num(Day($1)), Day($1)) as 日 Tagged ('$axis', '$day')
;
定義したスクリプトを利用し、実際にカレンダー軸を作成します。
宣言された定義を利用するにはDERIVE文を使います。
Derive Field From Field[s] 項目名 Using 定義名;
Derive Field From Field 注文年月日,発送年月日,支払年月日 Using カレンダー;
定義ができたらアプリをリロードしてみましょう。
シートの編集画面から項目一覧を見てみると項目にカレンダーのマークが出ています。
作成された項目は子項目として同じテーブル中に存在しており、ドラッグ&ドロップでチャートに追加したり絞り込みをすることができます。
項目を参照するには[項目名.カレンダー名.カレンダー項目名]の書式でアクセスできます。
例として注文年度をフィルターパネルで表示したい場合は項目に[注文年月日.カレンダー.年度]と記入します。
データ モデル ビューワを開いたときの項目一覧には自動作成項目は表示されません。
この記事では自動生成テーブルを定義するDeclare文とテーブル定義から項目を生成するDerive文を解説しました。
もしカレンダー項目がいくつもあるデータを分析しなければならない場面に出会ったらカレンダー項目の自動生成を試してみましょう。
この記事は、以上です。