勤務時間や稼働時間についての日跨りのデータを日別に分割したい場合、Intervalmatchを使ってデータを分けることができます。例えば下記のようなデータの分割を行ってみます。
元データ
![コメント 2019-11-18 155327.png コメント 2019-11-18 155327.png](https://community.qlik.com/t5/image/serverpage/image-id/23829iE745FAA4DDF4F115/image-size/large?v=v2&px=999)
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時終了のデータについては重複をさけることです。
![コメント 2019-11-18 155539.png コメント 2019-11-18 155539.png](https://community.qlik.com/t5/image/serverpage/image-id/23830i8400B8FE59F8FAA5/image-size/large?v=v2&px=999)
詳細は添付アプリを、Intervalmatchについては、Helpをご参照ください。