直積結合 ~データを扱う立場として~
サンプルテーブル
今回も実績と予算テーブルを想定して行います。
ユニオンの記事でも実は少し触れているんですけど
結合だとどう進めていく事が出来るのか、パターンは覚えておきたい所。
では早速。
直積結合は2つのテーブルのデータをそれぞれ全て結びつける
といった具合です。
よくイメージが湧かないと思うので、図で表すと・・・
という具合で・・・複雑です💦
イラスト描いてて訳分からなくなってきました笑
複雑なので色を付けてみると、
こんな感じで、左右それぞれの行が、左右それぞれの行に対して紐づけされているようになります。
あんまり普段仕事で使う事は無いのかな~と思っています。
仕事で使うというよりかは、よく現れてしまうから対策を考える機会は多いと思います。
さてこちらの再現では、prepではいつも通りの感覚で「2025年の予算と実績紐付けよう~」と「年」をくっつけている感じです。
サンプルデータを用いるとこんな感じで結合しています👇
しかし結合結果の様子がこちら👇
すごく増えてる…(絶望)こうなったことありませんか?笑
売上も予算も集計したら大変な金額になっちゃいますよね💦
直積結合を解決したい
これだと集計するのが大変なので、もう少しすっきりさせたいです。
原因としては
結合句が不足している
この辺りになってきます。
先ほど「年」でしか結合してなかったんですけど
今後は2つのテーブルに共通している「商品名」も繋いでみます。
すると、
こんな感じでより的を絞った形で紐づけされました!
意味としては、最初は「年が同じもので紐づけ」だったものが
「年と商品名が同じもので紐づけ」になったのでより具体的ですよね。
あとは目的に合わせて作り方を選びます。
今の状態としては
【A】とうもろこしの予算が2重になってる
【B】にんじん🥕が無くなった部分をどうするか
なんですけど
【A】についての処理は
・DesktopのLOD計算を使って年間予算3000万を維持する
・月別に分解した予算に変える
というパターンが取れるかと思います。
年間の予算の進捗を知りたい場合は前者、月別の予算達成具合を見たい場合は後者。など、目的に合わせて選択するようになります。
後者の場合はローデータ(EXCELの列)を増やす事になるんですが
しっかりとダッシュボードの目的を考えてから進めた方が良いです。
紐づけがキレイになったら嬉しいんですけど、データが増える場合、データを作る方も結構労力がかかります。
なので、本当に月別に分解した状態で使うのかどうか。ここは大事なポイントになってくるかなと思います。
とは言いつつも、月別にしたいよ、という場合は予算テーブルはこんな感じになるかと思います。
ここまで整えてしまえば、結合しやすいですね。
予算に合わせて右結合(or左結合)しているので、あとは実績が付くのを待つのみで大丈夫かと思います。
では【B】のにんじんです。
こちらも目的に合わせて選択が変わってくるんですが
・すべての商品の予算の進捗を追いたい
・実績が付いたものの予算を見たい
等のパターンがあると思います。
前者の場合は予算テーブルを軸として右結合(or左結合)にして、
こんな感じになれば集計しやすくなるかなと👇
あとはにんじんの実績がつくのを待つ感じですね。
後者の場合はにんじんの実績がついたら、内部結合にしておけば予算も実績も出てくるので、そのままで良いかと思います。
データを扱う立場として
さて、いろいろな結合方法を語ってきたのですが、
結論どの結合方法を使うかは、皆さん予め可視化したい事があって、その上で決めていくのだと思います。
データを扱うのは自分だけなのか、或いは誰かからVizを作るように指示されているのか、様々あると思います。
そこで、もし業務で扱うなら、、
私個人的に心掛けておきたい事があったので少しご紹介させて頂けたらなと思います。
①BI使用者としてある程度主導権を持つ
仕事は一人で進める事よりも、多くの場合は自分の前後に誰か仕事しているがいて、その人たちと同じゴールを目指して進めていくのだと思います。
それぞれが自分のパートに責任をもって進めているはずなので、お互い尊重していきたいものです。
しかし、前後工程の人が必ずしもデータの扱いに慣れているわけではなく、いくら懸命に「いつも使ってるデータ」を探してきてくれても、フタを開けたらBIには不向きな形式だったりします。例えばEXCELならセルの結合やスペース等でバリバリに固めてあったり、あるいは可視化を進めていく内に追加の要望が増え、データに不足が発生してしまってたりします。
「え、前作れるって言ったじゃん」と思われても、我々も魔法使いではないのでデータが無ければ進められないのは当然。
なのでprepを駆使してデータを揃える事も、できるだけ努力はするけれど、あまりに毎度違うクリーニングが必要になるとか、あるいはデータの粒度が足りない場合には揃えてもらうように依頼することも大切かなと思っています。
相手の手を止める事になってしまうのですが、我々もその後の業務を円滑に進めていく事は会社にとって大切な事。BIの使用者として、ある程度どんなデータを準備する必要があるか、周囲に協力を仰ぐことも必要な仕事だと思っています。
②後世の事を考えて記録する
「データは見られるほど美しくなる」。
これはDATA Saberの勉強をしていて気付きを得たことですが、確かにダッシュボードを使ってもらうと、必ずと言っていいほど修正が入ります。
その度にデータを増やしたり、データ加工もするのですが、そうするとprepフローがどんどん複雑になっていく…。
ではそのフロー、半年後に自分で見てすぐ分かりますか…?
短いものならまだしも、超大作となれば少なくとも私は1から見直しています笑
「半年後の自分は別人」と巷でよく囁かれている事ですが、まさにprepフローもそうだなと思っています。
そこで、心掛けていることは「メモを残す」という事。
例えばよくあるのが「クリーニング1」というクリーニング。
この中身を表に記載しておきます。
例えば簡単に「項目名変更」などでもいいと思うんです。
フローが長くなってしまって好き嫌いはあると思うんですけど、次に業務を引き継ぐ人にできるだけ意図を伝えたいならそれでもいいのかなと思います。それこそ直積結合がいつの間にか発生してしまった場合、ある程度ヒントが散らばってた方がフローを辿りやすいですからね。
(要らないって言われたら外しますけど笑)
本日の締め
ということで、直積結合とデータを扱う立場としての心掛けについて一気に語ってしまいました😅
直積結合になるのは一言でいうと「結合が不足している」なんですけど、実際の所「なんで不足しているのか」という点もポイントだと思っています。
結合不足という「現象」が起きているのだとしたら、その「原因」は…?
我々BI使用者が解決していく課題は、技術的なスキル面だけではないのだなと思っています。
本日は以上です!🤟