🖥️
スタースキーマの基データのつくりかた(キーのない外部結合)
BIでデータを構築するとき、特に複雑なスタースキーマを作るときにテーブル同士を外部結合させる必要が出てきます。
テーブル同士がキー結合できれば良いのですが、例えばカレンダーマスタと組織マスタのように関連するキーがない場合はどうするか。
つまりカレンダーマスタには
年月日 | 年度 | 半期 | 四半期 |
---|---|---|---|
20211108 | 2021年度 | 下期 | 3Q |
20211109 | 2021年度 | 下期 | 3Q |
20211110 | 2021年度 | 下期 | 3Q |
20211111 | 2021年度 | 下期 | 3Q |
20211112 | 2021年度 | 下期 | 3Q |
というデータがあって、組織マスタは
組織コード | 組織名 | 地区 |
---|---|---|
001 | A部門 | 東京 |
002 | B部門 | 東京 |
003 | C部門 | 大阪 |
という形になっているときに、
年月日 | 年度 | 半期 | 四半期 | 組織コード | 組織名 | 地区 |
---|---|---|---|---|---|---|
20211108 | 2021年度 | 下期 | 3Q | 001 | A部門 | 東京 |
20211108 | 2021年度 | 下期 | 3Q | 002 | B部門 | 東京 |
20211108 | 2021年度 | 下期 | 3Q | 003 | C部門 | 大阪 |
20211109 | 2021年度 | 下期 | 3Q | 001 | A部門 | 東京 |
20211109 | 2021年度 | 下期 | 3Q | 002 | B部門 | 東京 |
20211109 | 2021年度 | 下期 | 3Q | 003 | C部門 | 大阪 |
20211110 | 2021年度 | 下期 | 3Q | 001 | A部門 | 東京 |
20211110 | 2021年度 | 下期 | 3Q | 002 | B部門 | 東京 |
20211110 | 2021年度 | 下期 | 3Q | 003 | C部門 | 大阪 |
20211111 | 2021年度 | 下期 | 3Q | 001 | A部門 | 東京 |
20211111 | 2021年度 | 下期 | 3Q | 002 | B部門 | 東京 |
20211111 | 2021年度 | 下期 | 3Q | 003 | C部門 | 大阪 |
20211112 | 2021年度 | 下期 | 3Q | 001 | A部門 | 東京 |
20211112 | 2021年度 | 下期 | 3Q | 002 | B部門 | 東京 |
20211112 | 2021年度 | 下期 | 3Q | 003 | C部門 | 大阪 |
というデータを作りたいのです。
こんなときは以下のようなSQLを書いてみましょう。
SELECT
a.*,
b.*
FROM
(select *, 'A' AS col1 from カレンダーマスタ) a
LEFT OUTER JOIN
(select *, 'A' as col2 from 組織マスタ) b
ON
a.col1 = b.col2
結合する項目をダミーでつくってしまえば良いのですね。
どのBIツールでも似たような悩みがあると思いますので、参考になれば幸いです。
Discussion