そもそもQlik Senseで「分析しやすい」データ構造とは?
Qlik Senseでの「分析しやすい」データ構造とは、ズバリ次の2つの条件を満たすものと言えます。
- データ構造がQlik Senseにとって扱いやすい形であること
- データ構造を人間が見たとき、つくりが理解しやすいこと
1については言うまでもありませんね。
データ構造がQlik Senseで扱うことができないと分析が立ちいかなくなってしまいます。
そして2も重要です。
データの集計自体を行うのはQlik Senseの役目とはいえ、その仕組みを作るのは人間です。
その両方のバランスをとってこそ「分析しやすい」データ構造を作ることができます。
テーブルの紐づきから見るデータ構造
「分析しやすい」データ構造と「分析しにくい」データ構造の例を挙げると、例えばこうなります。
上はちょっと極端な例ですが、「分析しやすい」データ構造のほうがよりスッキリしていることがわかると思います。
良い例であるデータ構造は次のようなルールに従って作られています。
- 分析の中心となるファクトテーブルを1つ、ファクトテーブルに紐づくマスターテーブルを作る
- 関連付けされたテーブル同士は1つの項目で紐づけ、「$Syn」テーブルが作られないようにする
- テーブル同士の関連付けをループさせない
それぞれについて、改善点を図で説明しながら解説します。
ファクトテーブルとマスターテーブル
データ構造の中心と言えるファクトテーブルはトランザクションテーブルとも呼ばれ、売上明細や販売計画など「何が起こったか」「何をする予定か」、いわゆる時系列に従ったデータを表します。
ファクトテーブルを複数取り込むことになった場合、それらは連結によって1つにまとめることが望ましいです。
マスターテーブルはファクトテーブルから参照するためのテーブルです。
「年月日から曜日を取り出す」、「複数の商品をカテゴリにまとめる」など用途に沿ったテーブルを用意しましょう。
上の例で問題になっているのはファクトテーブルが「売上」「予算」の2つに分かれたまま取り込んでいることです。
テーブルの関連付け、「$Syn」テーブル
テーブル同士の関連付けは1つ項目のみで紐づくことが望ましいです。
Qlik Senseではテーブルの関連付けが多対多で紐づくことはできませんが、このような場合は自動的に「$Syn」テーブルによって多対多の関連付けを解消してくれます。
ただし、本来ならば不必要な「$Syn」テーブルがあることで構造がややこしくなりますし、あまり多くの「$Syn」テーブルがあるとパフォーマンスにも悪影響があります。
ループ構造
このように関連付けがループするとテーブルを跨いだ集計時にルートが定まらないため関連付けが切られてしまいます。
図の赤い点線の部分は疎結合と呼ばれ、関連付けを利用することができません。
ループのあるデータ構造では集計時に予想外の結果が生じる可能性もあります。データ構造にループを発生させないように心がけましょう。
まとめ
上に書いたポイントに従ってデータ構造を構築すれば、テーブル数が増えたとしてもモデルが破綻することはないでしょう。
次回からの記事では、
- データ構造を形作る「関連付け」
- テーブルの結合「Concatenate」
- テーブルの結合「Join」
を解説します。
「分析しやすいデータ構造を作るテクニック【テーブルの関連付け】」はこちら