0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

2.初心者向け PowerBI テーブルの作成~DAX使用~多対多リレーションシップ

Last updated at Posted at 2022-09-03

初めに

前回に引き続きPowerBIの勉強を行っていきたいと思います。
今回は、エクセルにデータに新しく入社日という列を追加したので、このデータをBIに反映させて、時系列で分析ができるようにしていきたいと思います。
私もまだ初心者なので一緒に勉強していきましょう。

前回の記事はこちら

データの更新

社員情報に入社日という列を追加しました。
これをBIに取り込んでいきます。

image.png

とっても簡単で、BIを起動し、ホーム→更新をクリック

image.png

画面右側のフィールドを確認してみると入社日が追加されています。

image.png

DAXを使用し、新たに列を作成する

まず、データページに遷移し、追加した列のデータ型を確認
テキスト型になっています。プルダウンで日付型を選択します。

image.png

間違えてもやり直せるのではいでOKです。
image.png

左上のデータ型を変更しました。それに伴い入社日の列の表示形式が変わりました。
以前と同じ表示形式yyyy/M/dに変更します。

image.png

変更されました。
image.png

これをもとに新たに日付用のテーブルを作成します。

新しいテーブルの作成

データの入力を使用してみます。(ベタで入力なので更新はされない)
まずは入社日の列を選択し、右クリックでコピーをします。

image.png

次にホームタブ→データの入力をクリックします。

左下で名前を変更し、列1をクリックして、貼り付けを押します。
image.png

読み込みをクリック
image.png

無事テーブルができました。
image.png

DAX関数を使用して列を作成

今回やりたいこととしては、入社日が15日か1日かで、新卒入社か中途入社なのか分けるために、日付のみを抽出した列を作成し、その列に応じて、新卒or中途という値の列を作成したいと思います。

新しい列をクリック
image.png

入力欄に、日付=DAY('といれると入力補完が出てきます。
'日付テーブル'[入社日]を選択します。
image.png

エンターを押します。
image.png

反映されました。
image.png

次に日付の列に応じて中途か、新卒かを分ける列を作成します。
先ほど同様、新しい列の追加をして、以下のように入力します。
入力欄を広げるには三角のボタンを押せば広くなります。
必要に応じて字下げをして見やすくさせます。
今回はおなじみのIF関数で条件分岐して出力させます。
image.png

エンターを押す。

image.png

想定の動きになりました。
そして、リレーションシップで関連付けます。

入社日と入社日を繋げます

image.png

多対多カーディナリティとなってしまったようです。
重複する項目同士があるのでうまく対応付けできない可能性があるというような意味合いです。
image.png

対応策として、二つの列の重複を削除した中間テーブルを作成し、一対多の関係になるようにテーブルを作成します。

データの変換をおし、PowerQueryエディタ画面に行きます。
入社日の列を選択後、右上のクエリの追加→クエリを新規クエリとして追加をクリック

image.png

日付テーブルと結合します。
image.png

1000行の社員情報に日付テーブルの情報がマージされました。
image.png

次に、必要なのは、一意となる日付テーブルだけですので、ほかの列を削除します。
テーブル名も変更しておきます。

image.png

列を削除したら、次は重複行を削除します。
行の削除→重複の削除をします。
image.png

完了しましたのでもう一度リレーションシップしてみます。閉じて適用し、モデルへ移動。
image.png

中間テーブルに、それぞれ入社日をドラッグアンドドロップし、無事関連付けできました。
image.png

難しいことはまだ理解できていないですが、最近は多対多リレーションシップでもうまく設計すれば動くそうで、、、とりあえず試しに多対多でやってみます。

image.png

ビジュアルを追加して確認

入社区分でスライサーを置いてみる

Animation7.gif

できてるっぽい(笑)
時系列データも追加してみます。

うん、やはりベテランの方がスコアが高いんだな!
中途の方がなんかスコア高めに出てる!
理系の方が文系より割合多くて点数も高く出ているようだ。
昔は文系の採用は積極的ではなかったみたい!
というような情報が得られるかなと思います(ダミーデータですよ)

Animation8.gif

終わり

多対多リレーションシップの対応は初めてだった(そうならないようにデータ整形していた)
理解ができていない部分も多いのでまずはそうならないように工夫しようと思いました。
引き続きダッシュボード化に向けて進めていきたいと思います!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?