# IntervalMatch

IntervalMatch プレフィックスを使うと、不連続数値を 1 つ以上の数値間隔に一致させるテーブル、そしてオプションとして 1 つ以上の追加キーの値を一致させるテーブルを作成できます。

構文:

IntervalMatch (matchfield)(loadstatement | selectstatement )

IntervalMatch (matchfield,keyfield1 [ , keyfield2, ... keyfield5 ] ) (loadstatement | selectstatement )

IntervalMatch プレフィックスは、間隔をロードする LOAD または SELECT ステートメントの前に配置する必要があります。不連続データ ポイントを含む項目 (以下の例では Time) および追加キーは、IntervalMatch プレフィックスを含むステートメントの前に Qlik Sense にロードされていなければなりません。このプレフィックスはデータベース テーブルからこの項目を読み取るのではなく、ロードされた間隔テーブルとキーを変換して追加列 (不連続数値データ点) を含むテーブルを生成します。また、新しいテーブルで不連続データ ポイントと間隔、キー項目の値の組み合わせごとにレコードが 1 つ存在するようレコード数を増やします。

間隔は重なる場合があり、不連続値は一致する間隔すべてにリンクされます。

IntervalMatch プレフィックスがキー項目で展開される際、プレフィックスを使用して、不連続数値を 1 つ以上の数値間隔と照合し、同時に 1 つまたは複数の追加キーを照合するテーブルが作成されます。

未定義の間隔範囲が無視されないようにするには、間隔の下限または上限を構成する項目への NULL 値のマッピングを許可しなければならない可能性があります。その場合は、NullAsValue ステートメントを使用するか、不連続数値データ ポイントの前または後で NULL 値を数値に置き換える明示的なテストを実施します。

引数：

引数

| 引数 | 説明 |
| --- | --- |
| matchfield | 間隔にリンクする不連続の数値が含まれた項目。 |
| keyfield | 変換で一致させる追加属性が含まれた項目。 |
| loadstatementorselectstatement | 最初の項目に各間隔の下限、2 つ目の項目に各間隔の上限を含むテーブルが生成されます。キー一致を使用している場合、3 つ目以降の項目には IntervalMatch ステートメントのキー項目が含まれます。間隔は常に閉じているので、終端は間隔に含まれます。数値以外の範囲では間隔が無視されます (未定義として対処)。 |

例1：

下記の 2 つのテーブルのうち、最初のテーブルは個別イベントの数を表示し、2 番目のテーブルは注文の製造開始時間と終了時間を定義します。IntervalMatch プレフィックスを使用すると、2 つのテーブルが論理的に接続され、イベントの影響を受けた注文を特定したり、どのシフトでどの注文が処理されたかを確認することができます。

```
EventLog:
LOAD * Inline [
Time, Event, Comment
00:00, 0, Start of shift 1
01:18, 1, Line stop
02:23, 2, Line restart 50%
04:15, 3, Line speed 100%
08:00, 4, Start of shift 2
11:43, 5, End of production
];

OrderLog:
LOAD * INLINE [
Start, End, Order
01:00, 03:35, A
02:30, 07:58, B
03:04, 10:27, C
07:23, 11:43, D
];

//Link the field Time to the time intervals defined by the fields Start and End.
Inner Join IntervalMatch ( Time ) 
LOAD Start, End
Resident OrderLog;
```

テーブル OrderLog には、追加の列: Time が含まれるようになりました。レコードの数も展開されます。

Table with additional column

| Time | Start | End | Order |
| --- | --- | --- | --- |
| 00:00 | - | - | - |
| 01:18 | 01:00 | 03:35 | A |
| 02:23 | 01:00 | 03:35 | A |
| 04:15 | 02:30 | 07:58 | B |
| 04:15 | 03:04 | 10:27 | C |
| 08:00 | 03:04 | 10:27 | C |
| 08:00 | 07:23 | 11:43 | D |
| 11:43 | 07:23 | 11:43 | D |

例2： (keyfield の使用)

上記の同じ例で、キー項目として ProductionLine を追加します。

```
EventLog:
```

```
LOAD * Inline [
```

Time, Event, Comment, ProductionLine

00:00, 0, Start of shift 1, P1

01:00, 0, Start of shift 1, P2

01:18, 1, Line stop, P1

02:23, 2, Line restart 50%, P1

04:15, 3, Line speed 100%, P1

08:00, 4, Start of shift 2, P1

09:00, 4, Start of shift 2, P2

11:43, 5, End of production, P1

11:43, 5, End of production, P2

];

OrderLog:

LOAD \* INLINE [

Start, End, Order, ProductionLine

01:00, 03:35, A, P1

02:30, 07:58, B, P1

03:04, 10:27, C, P1

07:23, 11:43, D, P2

];

//Link the field Time to the time intervals defined by the fields Start and End and match the values

// to the key ProductionLine.

Inner Join

IntervalMatch ( Time, ProductionLine )

LOAD Start, End, ProductionLine

Resident OrderLog;

テーブル ボックスが次のように作成できるようになりました。

Tablebox example

| ProductionLine | Time | Event | Comment | Order | Start | End |
| --- | --- | --- | --- | --- | --- | --- |
| P1 | 00:00 | 0 | Start of shift 1 | - | - | - |
| P2 | 01:00 | 0 | Start of shift 1 | - | - | - |
| P1 | 01:18 | 1 | Line stop | A | 01:00 | 03:35 |
| P1 | 02:23 | 2 | Line restart 50% | A | 01:00 | 03:35 |
| P1 | 04:15 | 3 | Line speed 100% | B | 02:30 | 07:58 |
| P1 | 04:15 | 3 | Line speed 100% | C | 03:04 | 10:27 |
| P1 | 08:00 | 4 | Start of shift 2 | C | 03:04 | 10:27 |
| P2 | 09:00 | 4 | Start of shift 2 | D | 07:23 | 11:43 |
| P1 | 11:43 | 5 | End of production | - | - | - |
| P2 | 11:43 | 5 | End of production | D | 07:23 | 11:43 |