メイン コンテンツをスキップする 補完的コンテンツへスキップ

不連続データと Intervalmatch

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

 

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

テーブル OrderLog
スタート (Start) End 順序
01:00 03:35 A
02:30 07:58 B
03:04 10:27 C
07:23 11:43 D

 

テーブル EventLog
時刻 イベント (Event) コメント
00:00 0 シフト 1 の開始
01:18 1 ラインの停止
02:23 2 ラインの再開 50%
04:15 3 ラインの速度 100%
08:00 4 シフト 2 の開始
11:43 5 製造の終了

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

SELECT * from OrderLog;

SELECT * from EventLog;

Intervalmatch (Time) SELECT Start,End from OrderLog;

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

A table in QlikView combining the above tables.

主に注文 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 からデータをロードすると、次のテーブルが生成されます。

テーブル 1 の例
キー FirstDate チーム
000110 2011-01-21 Southwest
000110 - Northwest
000120 - Northwest
000120 2013-03-05 Southwest
000120 2013-03-05 Northwest
000120 2013-01-06 Southwest

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

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

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

テーブル 2 の例
キー [Name] (名前) 日付 売上高
000110 Spengler Aaron 2009-08-18 100
000110 Spengler Aaron 2009-12-25 200
000110 Spengler Aaron 2011-02-03 300
000110 Spengler Aaron 2011-05-05 400
000120 Ballard John 2011-06-04 500
000120 Ballard John 2013-01-20 600
000120 Ballard John 2013-03-10 700
000120 Ballard John 2013-03-13 800
000120 Ballard John 2013-09-21 900

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

テーブル 3 の例
キー チーム [Name] (名前) FirstDate LastDate 日付 売上高
000110 Northwest Spengler Aaron - 2011-01-20 2009-08-18 100
000110 Northwest Spengler Aaron - 2011-01-20 2009-12-25 200
000110 Southwest Spengler Aaron 2011-01-21 - 2011-02-03 300
000110 Southwest Spengler Aaron 2011-01-21 - 2011-05-05 400
000120 Northwest Ballard John - 2013-01-05 2011-06-04 500
000120 Southwest Ballard John 2013-01-06 2013-03-04 2013-01-20 600
000120 Southwest Ballard John 2013-03-05 - 2013-03-10 700
000120 Southwest Ballard John 2013-03-05 - 2013-03-13 800
000120 Southwest Ballard John 2013-03-05 - 2013-09-21 900

このページは役に立ちましたか?

このページまたはコンテンツに、タイポ、ステップの省略、技術的エラーなどの問題が見つかった場合は、お知らせください。改善に役立たせていただきます。

分析の近代化プログラムに参加する

Remove banner from view

分析最新化プログラムにより、重要な QlikView app を危険にさらすことなく最新化しましょう。 ここをクリック して詳細を表示するか、次にお問い合わせください。 ampquestions@qlik.com