🖥️

スタースキーマの基データのつくりかた(キーのない外部結合)

2021/11/08に公開

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