QlikSenseのJOINの見え方

QlikSenseでのJOINが、SQLでのJOINと若干挙動が違うのと、
データモデルビューワで見ても正しいかわからなかったので、
メモとして残します。

以下のようなテーブルを作って試していきます。

**t1**

| USER_ID | NAME |
|:-:|:-:|
|1   |A   |
|2   |B   |
|3   |C   |
|4   |D   |

**t2**

| USER_ID | CASH |
|:-:|:-:|
|1   |123   |
|2   |453   |
|3   |987   |
|5   |1023   |

# まずは単純なLOAD （JOINを明記しない）

```QlikSense:test
t1:
LOAD
    USER_ID,
    NAME
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet1);

t2:
LOAD
    USER_ID,
    CASH
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet2);
```

データモデルビューワの見え方
ER図っぽい感じになって、KEYがUSER_IDなのもわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/f5d34892-932d-272f-5166-de4b56e80a43.png)

結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/2f84384c-ef0f-500f-b861-414cd05ed6ab.png)

OUTER JOINっぽい挙動をしました。

# LEFT JOIN LOAD


```QlikSense:test
t1:
LOAD
    USER_ID,
    NAME
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet1);

t2:
LEFT JOIN LOAD
    USER_ID,
    CASH
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet2);
```

データモデルビューワの見え方
一個にくっついてしまいました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/97501171-8538-cc95-3733-05ae69b66285.png)

プレビューはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/04e17064-3b90-cfe8-18f9-97266606ccf1.png)
ちゃんと結果はLEFT JOINでした。

# RIGHT JOIN LOAD
LEFTを見た時点で結果はお察しですが、全部確認していきます。

```QlikSense:test
t1:
LOAD
    USER_ID,
    NAME
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet1);

t2:
RIGHT JOIN LOAD
    USER_ID,
    CASH
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet2);
```
データモデルビューワの見え方
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/39957e73-d829-be75-5cf4-ed1d3f50ff6d.png)

プレビューはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/715df15b-a2e9-ebd7-65dd-a2a2c76bfc2f.png)

# INNER JOIN LOAD
```QlikSense:test
t1:
LOAD
    USER_ID,
    NAME
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet1);

t2:
INNER JOIN LOAD
    USER_ID,
    CASH
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet2);
```

データモデルビューワの見え方

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/a1894433-77f4-db47-b54a-236012ca8e7a.png)

プレビューはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/39ec2b32-b025-a70c-8c36-3d51e0470179.png)

# OUTER JOIN LOAD
```QlikSense:test
t1:
LOAD
    USER_ID,
    NAME
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet1);

t2:
OUTER JOIN LOAD
    USER_ID,
    CASH
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet2);
```

データモデルビューワの見え方
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/9731d28e-01c8-0110-8d18-261bee5407dc.png)

プレビューはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/cada80ef-4cb8-eb14-a3e5-88b59930fb21.png)

データモデルビューワがあまり役に立たないですね。。。

# CROSS JOIN LOAD　は存在しない
存在しないけど、JOIN_KEYがなければ勝手にCROSS JOIN っぽくなります

```QlikSense:test
t1:
LOAD
    USER_ID,
    NAME
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet1);

t2:
LOAD
    USER_ID AS USER_ID1, //名前が違うとJOIN_KEYにならないので、名前を変えます。
    CASH
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet2);
```
データモデルビューワの見え方
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/bed59f79-17ca-3d68-a10c-561215890b91.png)

結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/024e5928-e6d0-997f-4c97-f44eafa1ea07.png)

LOADするテーブル数が増えると、データモデルビューワで1個にしちゃうこの挙動はつらい。。。

今度はデータマネージャを試してみたいと思います。

----
# 追記 JOIN LOAD
LEFT/RIGHT/OUTER/INNERを書いてないJOINの存在を忘れていました。。。

```QlikSense:test
t1:
LOAD
    USER_ID,
    NAME
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet1);

t2:
JOIN LOAD
    USER_ID,
    CASH
FROM [lib://AttachedFiles/test.xlsx]
(ooxml, embedded labels, table is Sheet2);
```
データモデルビューワの見え方
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/26c24dcd-2092-e656-0960-f76bb8b3f1bf.png)

プレビューはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621346/94de0e89-f249-df89-edf9-8f318290805b.png)

OUTER JOINっぽい挙動が多いですね。
データがなくなっちゃうよりは多い方がいいっていうスタンスなんでしょうかね。