見出し画像

Power BI - 特定の1列の中の、条件にあった行だけのデータセットを1列抜き出したいとき

同じ列の中にレコード(行)の属性情報があり、
その属性に応じて列を作りたいと思うことがありました。

エクセルでしたらPivot tableで一瞬でできちゃうことですが、
Power BIでもできるのかなと思って、メジャー作ってみたらできたので
備忘のために書いておきます。

扱ったデータの形

取引先との契約状況をまとめたデータテーブルです。
特徴はどんな「契約種別」が一列にまとめられているので、
その日付情報(「契約(解約)日」)も1列にまとまっちゃっているという点です。

画像1

表示したいデータの形

上に示した元データをPBI上で次のように表示させたいと思っています。

画像2

ポイントは、こんな感じです。
・会社名の列を一意の値にしたい
・会社ごとに、新規契約日と解約日を横並びに(1行で)確認したい

これって、エクセルのPivot tableなら5秒くらいでできますが、
PBIでやろうとすると、メジャーでソートをかけながらする必要があります。

もちろんメジャーを使わないやり方もあると思いますが、
今回はレポートページで、「テーブル」を使って表示させたかったので
メジャーを作って対処しました
(これ以外のやり方があったら、教えてください)



メジャーの作り方

メジャーを作る前に、視覚化の「テーブル」を途中まで作っておきます。

画像3

取り込んだテーブルの「会社名」を「テーブル」の「値」欄に入れると、
一先ずこのような表示になります。

この「値」欄にメジャーを追加していって、
各会社の横に「新規契約日」と「解約日」を表示させたいと思います。

作成したメジャーは以下の通りです。
まずは「新規契約日」のみを抽出するメジャーです。

新規契約日 = CALCULATE(
   SELECTEDVALUE(
       'テーブル2'[契約(解約)日]),
       FILTER(
           'テーブル2',
           [契約種別]="新規契約"
           )
)

同様に、「解約日」もメジャーを作成します。

解約日 = CALCULATE(
   SELECTEDVALUE(
       'テーブル2'[契約(解約)日]),
       FILTER(
           'テーブル2',
           [契約種別]="解約"
           )
)

上記で作成したメジャーを「テーブル」の「値」にぶち込むと、
以下のように、イメージ通りの表が作成されました!

画像4

以上になります。


おまけ

今回作成したメジャーのように、
メジャーの中の一部の文字列だけ変更して
メジャーを量産するような場合は、

変更する文字列を変数化しておくと便利です。
こんな感じです。

解約日 = 
VAR Keyword = "解約"
RETURN
CALCULATE(
  SELECTEDVALUE(
      'テーブル2'[契約(解約)日]),
      FILTER(
          'テーブル2',
          [契約種別]=Keyword
          )
)

DAX式の中で変数を宣言するには、「VAR」と「RETURN」を使います。

こちらも参照してください。



以上です。

この記事が気に入ったらサポートをしてみませんか?