Qlik Senseナレッジ - INSIGHT LAB

Qlik Senseで分析しやすいデータ構造を作るテクニック「分析しやすい」データ構造とは

作成者: Deck|2017年9月04日

そもそもQlik Senseで「分析しやすい」データ構造とは?

 

Qlik Senseでの「分析しやすい」データ構造とは、ズバリ次の2つの条件を満たすものと言えます。

  1. データ構造がQlik Senseにとって扱いやすい形であること
  2. データ構造を人間が見たとき、つくりが理解しやすいこと

 

1については言うまでもありませんね。

データ構造がQlik Senseで扱うことができないと分析が立ちいかなくなってしまいます。

 

そして2も重要です。

データの集計自体を行うのはQlik Senseの役目とはいえ、その仕組みを作るのは人間です。

 

その両方のバランスをとってこそ「分析しやすい」データ構造を作ることができます。

 

テーブルの紐づきから見るデータ構造

 

「分析しやすい」データ構造と「分析しにくい」データ構造の例を挙げると、例えばこうなります。

 

上はちょっと極端な例ですが、「分析しやすい」データ構造のほうがよりスッキリしていることがわかると思います。

 

良い例であるデータ構造は次のようなルールに従って作られています。

  • 分析の中心となるファクトテーブルを1つ、ファクトテーブルに紐づくマスターテーブルを作る
  • 関連付けされたテーブル同士は1つの項目で紐づけ、「$Syn」テーブルが作られないようにする
  • テーブル同士の関連付けをループさせない

 

それぞれについて、改善点を図で説明しながら解説します。

 

ファクトテーブルとマスターテーブル

データ構造の中心と言えるファクトテーブルトランザクションテーブルとも呼ばれ、売上明細や販売計画など「何が起こったか」「何をする予定か」、いわゆる時系列に従ったデータを表します。

ファクトテーブルを複数取り込むことになった場合、それらは連結によって1つにまとめることが望ましいです。

マスターテーブルはファクトテーブルから参照するためのテーブルです。

「年月日から曜日を取り出す」、「複数の商品をカテゴリにまとめる」など用途に沿ったテーブルを用意しましょう。

上の例で問題になっているのはファクトテーブルが「売上」「予算」の2つに分かれたまま取り込んでいることです。

 

テーブルの関連付け、「$Syn」テーブル

テーブル同士の関連付けは1つ項目のみで紐づくことが望ましいです。

Qlik Senseではテーブルの関連付けが多対多で紐づくことはできませんが、このような場合は自動的に「$Syn」テーブルによって多対多の関連付けを解消してくれます。

ただし、本来ならば不必要な「$Syn」テーブルがあることで構造がややこしくなりますし、あまり多くの「$Syn」テーブルがあるとパフォーマンスにも悪影響があります。

 

ループ構造

このように関連付けがループするとテーブルを跨いだ集計時にルートが定まらないため関連付けが切られてしまいます。

図の赤い点線の部分は疎結合と呼ばれ、関連付けを利用することができません。

ループのあるデータ構造では集計時に予想外の結果が生じる可能性もあります。データ構造にループを発生させないように心がけましょう。

 

まとめ

上に書いたポイントに従ってデータ構造を構築すれば、テーブル数が増えたとしてもモデルが破綻することはないでしょう。

 

次回からの記事では、

  • データ構造を形作る「関連付け」
  • テーブルの結合「Concatenate」
  • テーブルの結合「Join」

を解説します。

 

「分析しやすいデータ構造を作るテクニック【テーブルの関連付け】」はこちら