お問い合わせ
4 分で読むことができます。

Qlik Senseのスクリプト上級テクニック【DeclareとDerive-カレンダー軸を自動生成】

執筆者 Deck 更新日時 2017年11月01日

Topics: Script 上級者
Qlik Senseのスクリプト上級テクニック【DeclareとDerive-カレンダー軸を自動生成】

目次

定義から項目軸を自動生成する

こんにちは。Deckです。

今回はQlik Senseを使いこなす上級者向けの機能であるDeclareとDeriveによる項目の自動生成を解説します。

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文を使って取り込みするときの文法と似ていますが、以下のような違いがあります。

  • LOADではなくDECLARE FIELD DEFINITION文である
  • どの年月日が来ても処理できるように、年月日の代わりに「$1」を使う
  • 項目名 Tagged ('$タグ名')で項目にタグ付けをする(※$dateや$numeric等のタグによってデフォルトのソート順を決めることができます)
  • FROMやRESIDENTは使わない

 

カレンダー定義スクリプトの例を示します。必要に応じて項目を増減しましょう。

カレンダー:
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文を解説しました。

もしカレンダー項目がいくつもあるデータを分析しなければならない場面に出会ったらカレンダー項目の自動生成を試してみましょう。

 

この記事は、以上です。

Qlik Senseを体験してみませんか?

INSIGHT LABではQlik紹介セミナーを定期開催しています。Qlik SenseとQlikViewの簡単な製品概要から、Qlikの特性である「連想技術」のご紹介、デモを通してQlik SenseとQlikViewの操作感や美しいインターフェースをご覧いただきます。企業の大切な資産である膨大なデータからビジネスを発見する 「Business Discovery」を是非ご体験ください。

詳細はこちら

Deck

執筆者 Deck

BIスペシャリスト