メイン コンテンツをスキップする

不連続データと Intervalmatch

intervalmatch プレフィックスをLOAD または SELECT ステートメントで使用すると、不連続の数値が 1 つ以上の数値間隔にリンクされます。これはとても強力な機能であり、次の例のような実稼働環境などで使用できます。

Example:  

次の 2 つのテーブルを見てください。最初のテーブルは、さまざまな注文 (Order) の製造の開始時刻 (Start) と終了時刻 (End) を示しています。2 つ目のテーブルには個々のイベントが含まれています。どの注文がイベントの影響を受けたか、どの注文がどのシフトで処理されたかを知るには、どのように個々のイベントを注文に関連付ければよいでしょうか。

Table OrderLog

Table EventLog

Table of discrete numeric values (Event)

まず、通常どおりに 2つのテーブルをロードします。次に、Time 項目を Start 項目と End 項目で定義される間隔にリンクします。

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

これで、以下のように QlikView でテーブルを作成できます。

主に注文 A がライン ストップ (Line stop) の影響を受けた一方で、ライン スピード (Line speed) の減少は注文 BC にも影響を及ぼしたことが分かります。注文 CD だけは、一部が Shift 2 で処理されました。

intervalmatch を使用する場合は、次の点に注意してください。

  • intervalmatch ステートメントの前に、不連続データ ポイントを含む項目 (上の例では Time) が QlikView に読み取られている必要があります。intervalmatch ステートメントは、データベース テーブルからこの項目を読み取りません。
  • intervalmatch LOAD または SELECT ステートメントで読み取られたテーブルは、厳密に 2 つの項目 (上記の例では、StartEnd) を含んでいる必要があります。他の項目へのリンクを確立するには、間隔項目と共に、個別の LOAD または SELECT ステートメント (上記の例では最初の SELECT ステートメント) で他の項目を読み取る必要があります。
  • 間隔は常に閉じているので、終端は間隔に含まれます。NULL の範囲は間隔を無限に拡張しますが、数値以外の範囲は間隔を無視します。
  • 間隔は重なる場合があり、不連続値は一致する間隔すべてにリンクされます。

拡張された intervalmatch 構文を使用した穏やかに変化する軸 (SCD) 問題の解決

拡張された intervalmatch 構文を使用して、ソース データ内で穏やかに変化する軸 (SCD) の既知の問題を処理することができます。

サンプル スクリプト:

SET NullInterpret='';

 

IntervalTable:

LOAD Key, ValidFrom, Team from IntervalTable.xls;

NullAsValue FirstDate,LastDate;

 

Key:

LOAD

Key,

ValidFrom as FirstDate,

date(if(Key=previous(Key),

previous(ValidFrom) - 1)) as LastDate,

Team

RESIDENT IntervalTable order by Key, ValidFrom desc;

 

drop table IntervalTable;

 

Transact:

LOAD Key, Name, Date, Sales from Transact.xls;

 

INNER JOIN intervalmatch (Date,Key) LOAD FirstDate, LastDate, Key RESIDENT Key;

欠損値は NULL 値ではなく空の文字列として定義されるため、nullinterpret ステートメントはテーブル ファイルからデータを読み取る場合にのみ必要となります。NULL

IntervalTable からデータをロードすると、次のテーブルが生成されます。

nullasvalue ステートメントでは、リストされている項目に NULL 値をマップできます。

previous および order by を使用して、KeyFirstDateLastDate (属性項目) を作成します。その後、このキー テーブルで置き換えられた IntervalTable がドロップされます。

Transact からデータをロードすると、次のテーブルが生成されます。

inner join に続く intervalmatch ステートメントは、Transact に接続する合成キーで上記のキーを置き換えます。その結果、次のテーブルが生成されます。

Join the Analytics Modernization Program

Modernize by leveraging your QlikView investment to begin using Qlik Sense on the Cloud.

Want to know more?
Remove banner from view