勤務時間や稼働時間についての日跨りのデータを日別に分割したい場合、Intervalmatchを使ってデータを分けることができます。例えば下記のようなデータの分割を行ってみます。
元データ
Intervalmatchを使うと、開始時間と終了時間を持つ間隔データと、時刻を持つデータをマッチングさせることができます。この機能を応用して、ソースデータに各日付の0時をマッチングさせます。カレンダーはサンプルでは Inline Load で与えていますが、スクリプトで作成することもできます。(参考:Qlik Senseのマスターカレンダー作成テンプレート)
ソースデータとカレンダーをLoadした後、下記の命令でソースデータとカレンダーを紐づけます。
Inner Join IntervalMatch ( Time )
LOAD Start, End
Resident data;
合成キーを整理するため、ソースデータとカレンダーをJoinし、カレンダをDropします。
left join(data)
Load *
Resident Calendar;
drop tables Calendar;
この段階で下図の左のテーブルが作成できます。このテーブルを2回ロードして目的のデータを作成します。
ポイントは、同じIDの2件目以降のデータからは、前日0時からTimeまでのデータを作成すること、最終のデータからは、直前の0時からEndまでのデータを作成すること、さらに0時開始、0時終了のデータについては重複をさけることです。
詳細は添付アプリを、Intervalmatchについては、Helpをご参照ください。