カテゴリー別アーカイブ: Power BI

スライサーではできない操作をパラメーターで行う~メジャー連動~

【パラメーター機能の内容をメジャーに組み込めば、スライサーではできないような操作ができることがあります】

Power BIにパラメーターという機能をご存じでしょうか?例えばグラフの表示数が多すぎて、重要な数字が読み取れないことがあります。そんな時はパラメーターでグラフの表示数を変えることができます

今回の記事ではパラメーターとメジャーを組み合わせた上記の事例を紹介します

パラメーターとは?

パラメーターは一見スライサーと似ていますが、設定するのはあくまで数字の範囲となります

パラメーターはモデリングタブから追加することができます

実際に追加する時には「数値範囲」を指定します

次に開く画面では、出力する数値範囲を設定します

パラメーターを設定すると同時に専用のテーブルも作成されます

メジャーの設定

パラメーターを設定したら、メジャーの中にパラメーターで出力される値を組み込みます

折れ線グラフの各内容はそれぞれメジャーになっています

こちらにIF式を追加します

IF式にはパラメーターとの連動を組み込みます

このIF式によりパラメーターの値が1になった場合には、BLANK=グラフ表示なしになります

<まとめ>

今回はパラメーターを使用してメジャーを操作し、グラフの表示本数をコントロールできるようにしました

パラメーターの操作は今回紹介した「数値範囲」に加えて「フィールド」というのがあります

フィールドには直接メジャーを設定することができます

この場合はパラメーターをスライサーのように使用できます

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

マトリックス表の見栄えをカスタマイズする

【ピボットテーブルのようにマトリックス表も自在に並びを変えれるようにする】

マトリックス表については「こんな風にできないか?」という問い合わせが何件かありましたので、まとめて記事にしました

まず一点目は合計の並びを変えられないかということです

通常、合計は一番右もしくは一番下になります

但し、合計がスクロールしないと見れないような大きい表の場合、まず最初に合計を見れた方がいい場合もあります

これが1点目です

2点目は値を並べる場合に、並びを横ではなく縦にできないか?ということです

確かに、並びが横よりも縦の方が見やすいケースもあります

それでは、上記の2点に分けてそれぞれを解説していきます

合計の位置を変える

テーブル作成

合計の位置を変えるには、下の画像のような並び替え用のテーブルを作成するところからはじめます

真ん中のManyの列で他のテーブルとリレーションを組みます

Oneの列では「Total」にManyの全ての内容が集約されるようにします

そして、OrderでOneの列の「Total」が1番目に並ぶように順番を指定します

リレーション

作成したテーブルは他テーブルとリレーションを作成します

列の並び替え

値を集約した「Total」が一番左(上)にくるように列の並び替えをします

これで、並べ替え用のテーブルをマトリックス表の列や行に配置すれば完成です

縦に並び変える

マトリックス表は通常では次の画像のように値が横に並びます

こちらの横並びを縦並びに変えるには「ビジュアルの書式設定」で「値のオプション」を操作します

上の画像の「値を行に切り替え」をオンに変えます

そうすれば並びが縦に変ります

<まとめ>

今回はマトリックス表をカスタマイズする方法を解説しました

Power BIの場合には機能が多く「ビジュアルの書式設定」もとても分かりにくいです

調べた結果「ビジュアルの書式設定」でできることもよくあります

ただ列や行の並び順については、どうしても「ビジュアルの書式設定」では解決できず、別テーブルを作成することになります

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

RFM分析により膨大な会員の状況を可視化する~ツリーマップ使用~

【3つの指標をSCORE化し、オリジナルの観点で見える化を行えるようにしよう】

RFM分析*は昔からある分析手法ですが、Power BIを使用するとまた違った見せ方ができるようになります!

*R(Recency:最終購買日)、F(Frequency:購買頻度)、M(Monetary:累計購買金額)の3つの指標での分析

上のGIF画像では、Power BIの機能を活用してRFM分析にて行った内容を2つのストーリーで可視化できるようにしています

・金額ベース/Manetaryベースと会員数ベースの違い

・上記Manetaryの観点⇒RFMの観点

例えば、こちらのPower BI画面により金額と会員数ベースの違いが明確に分かります

続いて2つのビジュアルの階層を1つ下げると、最終注文からかなり月数が経っている会員(R:長)が多いことに気づけます

上記はあくまで例ですが、RFM分析とPower BIを組み合わせることにより、膨大なデータから「新たな発見」ができるかもしれません

ポイント

まずは従来のRFM分析通りに、「R(Recency:最終購買日)、F(Frequency:購買頻度)、M(Monetary:累計購買金額)」の3つの観点でランク付けします

今回の記事では、3つの観点それぞれを1と2でランク付けします(後で変換します)

更に今回の記事ではそれぞれのランクを組み合わせてSCORE化します

SCOREテーブル

使用RAWデータ

使用するRAWデータは次の画像の注文データです

raw_data

1年内で1回しか注文しない会員もいれば、複数回注文する会員もいます

ランク付け

まず最初に行うのは、RFMそれぞれの観点でランク付けを行うメジャーを作成することです

ランク付けを行う前に、RFMそれぞれの観点で「値/VALUE」を抽出する必要があります

Recency

⇒R-RANK = SWITCH(TRUE(),’MEASURE’①[R-VALUE]>3,”2″,”1″)

こちらはSWITCH関数を使用します

第一引数をTRUEにすることで、複数の条件式を組み合わせて使用することができます

①DATEDIFF(‘MEASURE’②[dayMax_customer],”2023/03/31″,MONTH)

DATEDIFF関数を使用して、2つの日付の「差」を抽出します

②は会員毎の最終注文日を抽出するメジャーです

こちらは次のように記述します

dayMax_customer = MAXX(FILTER(‘raw_data’,’raw_data'[CustomerID]=’raw_data'[CustomerID]),’raw_data'[OrderDate])

FILTER関数でテーブルから該当会員を絞りこんだ後に、MAXX関数で注文日の最終日を抽出しています

Frequency

⇒F-RANK = SWITCH(TRUE(),’MEASURE’①[F-VALUE]=1,”2″,”1″)

こちらもSWITCH関数を使用します

①は会員毎の注文回数を抽出するメジャーです

F-VALUE = COUNTROWS(raw_data)

COUNTROWS関数で該当する行(該当会員)の数を抽出しています

Monetary

⇒M-RANK = SWITCH(TRUE(),’①MEASURE'[M-VALUE]<100000,”2″,”1″)

①は会員毎の合計金額を抽出するメジャーです

M-VALUE = SUM(‘raw_data'[SalesAmount])

SCORE化

前述の3つのメジャーを通じて、会員毎にそれぞれのランク付けを1と2で行います

更にその後、1と2の文字列を組み合わせてSCOREを作成します

そのためにはSUMMARIZE関数を使用し、会員毎にSCOREを含むテーブル/rfmTableを作成します

SUMMARIZE関数はピボットテーブルと同じように、集計しながらテーブルを作成してくれます

*注意:メジャーでも新しい列でもなく、新しいテーブルから作成します

文法としては次のように書きます

SUMMARIZE(集計の切り口(会員ID),作成する列名,集計式・・・)

*SUMMARIZECOLUMN関数と似ていますが別です

rfmTable = SUMMARIZE(‘raw_data’,raw_data[CustomerID],”R-RANK”,’MEASURE'[R-RANK],”F-RANK”,’MEASURE'[F-RANK],”M-RANK”,’MEASURE'[M-RANK],“SCORE”,’MEASURE'[R-RANK]&’MEASURE'[F-RANK]&’MEASURE'[M-RANK],”M-VALUE”,’MEASURE'[M-VALUE])

上記の”SCORE”列はランクを含む列を&で組み合わせて作成しています

rfmTableを作成したら「SCORE」テーブルとでリレーションを作成します

ツリーマップの作成

ツリーマップでは四角形の大きさで数字の大小を表示します

数字の大きいものが「右より左」「下より上」に並ぶのも特徴の一つです

今回のツリーマップでは階層を複数で作成するのがポイントです

これでツリーマップの階層をコントロールできるようになります

<まとめ>

今回はPower BIの機能を活用してRFM分析の見せ方を進化させる方法を解説しました

紹介した内容はあくまで、解説しやすくするためにかなり簡素化しました

例えば、ランクは1と2の2つで付けましたが3つや4つに増やした方が分かりやすいケースもあります

またSCORE化もSCORE自体に「超VIP」「ご無沙汰優良」などのネーミングを付けて定点観測するといいかもしれません

ぜひオリジナル方法を見つけて活用してみてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

ワッフルチャートで構成率をオシャレに表現する

今回の記事ではエクセルのグラフ編でも紹介したワッフルチャートを、Power BIで作成する方法を解説します

エクセルの場合だと、条件付き書式を使用して作成します

Power BIの場合だと、エクセルと同じように個別の作りこみはできません

但し、エクセルよりはかなり楽に作成することができます

使用データ

上の画像の商品別に「数量」での構成比を、商品別のワッフルで表現します

Waffle Chart(その他のビジュアル)

ワッフルチャートは、ビジュアルのビルドの下にある「三点リーダー」の「その他のビジュアルの取得」から取得します

「その他のビジュアルの取得」の次の画面にて開いた画面で「Waffle」と検索します

「Waffle」と検索すると「Waffle Chart」がレポートビュー画面に追加できるようになります

メジャーの準備

取得した「Waffle Chart」を使用するには、「Waffle Chart」仕様のメジャーを作成する必要があります

「Waffle Chart」仕様と言っても構成率に100を乗じるだけです

構成率 = DIVIDE(SUM(‘DAX1′[数量]),CALCULATE(SUM(‘DAX1′[数量]),All(‘DAX1′[商品])))*100

100を乗じないとかなり小さい数字がワッフルチャートに表示されますので注意が必要です

グラフの作成

では実際にグラフを作成してみます

グラフの「Category Data」の欄には「商品」を配置します

Valueは前述のメジャーを使用します

これで完成です

<まとめ>

今回は「その他のビジュアルの取得」から取得した「Waffle Chart」を使用して、ワッフルチャートを作成しました

使用するメジャーは100を乗じることが必要ですので、その点はご注意ください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

グラフの並び順を変える3つの方法~条件列、DAX、リレーション~

【グラフのX軸が思うように並んでくれない、そんな悩みは今回の記事で解決できます】

Power BIのグラフの並び変更は、通常だとグラフの右上の三点リーダーをクリックした後に下記の画像の箇所で変更します

今回は上の並べ方では解決できない場合の対処方法を3つ紹介します

いずれの方法もデータビュー画面・列ツールにて「列で並べ替え」機能を使用します

まずは「1.並び変えたい列を選択」した後「列ツール」の「列で並べ替え」にて、「2.順位を記述した列」を指定します

読者の方の中には「その方法は知っている、だけどDAXを書くとエラーになった」という方もいらっしゃると思います

今回の記事ではエラーを回避する方法も解説しています

やりたい事

今回使用するデータは次の画像のデータです

こちらの商品の並びを次のようにします

A⇒B⇒C⇒D⇒E ➡ C⇒D⇒E⇒A⇒B

DAX1

一つ目の並べ替え方法はDAXのSwitch関数で変える方法です

下は別データで並び変えた事例です

*過去記事⇒こちら

上の画像ではMONTHの並び順を1月ではなく、4月からはじまるように変えています

では、今回の場合はどうかというと、次のようなSwitch関数の式を書きます

ところが、今回の場合は実際に並び替えるとエラーが発生します

前述の月の並び替えの場合は、並び替え対象が「MONTH列」で順位列の式が「順位 = Switch(MONTH([Date]),1,10,・・・」となっています

つまり、Switch関数の中身が「並び替え対象」ではなく「Date列」となっています

今回の場合は、Switch関数の中身に「並び替え対象」が入っています

順位_DAX = SWITCH(‘Data'[商品],・・・

ですので、次のようなエラーがでます

これはSUM関数をSUM関数の対象範囲に含めるような形になります

ですので、今回は別な方法も紹介します

条件列

Power Queryエディタ画面で条件列を作成する方法も使えます

この条件列にて順位を指定すると次のようなグラフになります

別テーブルを手動で作成(DAX2)

最後に紹介する方法はこちらの画面:データの入力でテーブルを作成します

内容はこんな形で入力します

こちらで作成したテーブルはリレーションも組んでおきます

次にデータビュー画面でDAX(RELATED関数)を作成し、順位列を作成します

この順位列であれば循環の問題は発生しません

<まとめ>

今回は、グラフの並び順を変える方法を3つ紹介しました

DAXで順位列を作成する場合には「循環参照」の問題は常に意識しておきましょう

個人的にはPower Queryエディで条件列を作成するより、DAXで作成した方が手軽だと感じています

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

DAXを使用してデータが無い日付のデータも網羅して表示する方法

【DAXを使用して、データが無い日付のデータをカレンダーテーブルと組み合わせて表示できるようにします】

日付別のデータを表示する時に、データが無い日付も軸上に表示したいときがあります

上記のグラフだと3月4~5日が表示されていません

これは3月4~5日にデータが無いからです

エクセルの場合だと自動的に空白データを表示してくれます

Power BIの場合だと自動的に「表示しない」という判断をされてしまいます

今回は簡単なDAXでPower BIが自動判断した「空白」を埋める方法を紹介します

カレンダーテーブルの準備

まずは「空白のデータ」も網羅したカレンダーテーブルを用意します

こちらのカレンダーテーブルがグラフのX軸になります

空白を0で埋めるメジャーの作成

カレンダーテーブルを作成したとしても、通常のCALCULATEやSUMなどの関数では空欄を埋めることができません

ですので、空欄の場合には0で埋めるメジャーが必要です

一番簡単なのは次の式になります

金額_空白対応 =

VAR Sales=SUM(Sheet1[金額])
RETURN if(Sales,Sales,0)

変数:Salesに売上金額を格納した後にIF式により、Salesに値が無い場合には0を埋める式になっています

このメジャーをグラフの値に使用すれば、日付の空白が埋まるようになります

<まとめ>

今回は簡単なDAX式で空白を0で埋めることにより、データが無い日付を網羅したグラフを作成しました

ポイントとしては、カレンダーテーブルを使用する点とメジャーを作成する点です

別な方法としてはカレンダーテーブルに売上の列を作る方法もあります

この際もif式により空白の日付を0で埋める必要があります

ただDAXの方がシンプルにレポートを作成することができます

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

DAXで定量的にランク分けして集計を行う~分析の基本~

【分けることが分析の基本です。DAXを使用して一発で定量的なランク分けを行いましょう!】

今回の記事では修正が面倒なIF式を使わないままDAXで定量的に分類を行います

仮にエクセルで同じことを行うのであれば「VLOOKUP関数(近似値検索)」やIF式を組み合わせて行う必要があります

DAXであれば一つのメジャーをすれば一発で集計できます

使用するテーブル

使用するテーブル:DATAは次のテーブルになります

ランクテーブルの作成

まずはDAXでランクテーブルを作成します

エクセルなどでランクテーブルを作成した上でPower BIに取り込むよりずっと楽です

ランクテーブルの作成には「DATATABLE関数」を使用します

DATATABLE関数は2つのパートに分かれています

1.列の作成⇒列名と列の形式を指定します(例:”NO”、INTEGER:数字形式、STRINGで文字列形式)

2.列の中身の作成⇒{}の中に、更に{}を使用して行を表現します

今回のDAXの中身は次のようになります

RankTable = DATATABLE(

“NO”,INTEGER,”NAME”,STRING,”Min”,INTEGER,”Max”,INTEGER, 

{

  {1,”A”,50,200},  {2,”B”,30,50},  {3,”C”,0,30}

 }

)

ランク分けのメジャーの作成

ランク別にカウント

ここからは前述のランクテーブルを使用してランク別にカウント処理を行います

つまり、DATAテーブルの金額列とランクテーブルの各行を互いに評価する形になります

ですのでFILTER 関数が2つ(DATA、ランクテーブル)出ててきます

Count_by Segment = CALCULATE(

    COUNTROWS(‘DATA’),

    FILTER(‘DATA’,   

  NOT(ISEMPTY(

         FILTER(‘RankTable’,NOT(ISBLANK([金額]))&&’RankTable'[Min]<[金額]&&’RankTable'[Max]>=[金額])

        

      

   )
)

上記に出てくる「ISEMPTY関数」「ISBLANK関数」についてはこちらをご参照ください

ランク別の合計金額

ランク別に合計金額を集計する場合にはCALCULATE関数内でSUM関数を使用します

SUM_by Segment = CALCULATE(

    SUM(‘DATA'[金額]),   

  FILTER(‘DATA’,(省略)

<まとめ>

今回はDAXを使用してランク分けする方法について解説しました

DAX式は少し複雑ですが、一度作成してしまえば何度でも使いまわすことができるのでとても便利です

ぜひ有効活用してみてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

レポートで説明文章を更新データに合わせて可変にする方法

【更新データを手動で書いたような文章で自動表示する方法を解説します】

データの更新に合わせてPower BIのレポート上の文章を可変にするには、メジャーの作成に加えて「改行」などの書式の工夫が必要です。今回は最終月の売上を表示する事例に基づいて様々なテクニックの解説を行います

やりたい事

売上データの毎月の報告を自動化するのが一番やりたいことです

「〇年×月の売上は△△△でした」

上の文章内の「〇年×月」、売上「△△△」をメジャーで自動取得できるようにします

書式の方も「月」と「の売上」の間に改行を入れつつ、売り上げもきちんと桁区切りにします

なお、今回使用するデータ/OrderDataは以下です

OrderData

一番右のyyyyMMの列は「新しい列の作成」にて追加しました

こちらの列で最後の月を判断します

SUMMARIZECOLUNS関数による集計

今回の記事の内容で一番難しいのはデータの最後の月を集計する点です

最後の月の抽出はMAX関数を使えば簡単そうです

ただそこから最後の月の売上を集計する必要があります

Power Queryでグループ化を行い、その後に集計する方法もあります

今回の記事ではDAXを組み合わせて、直接、最終月の売上を集計します

中心となるのSUMMARIZECOLUNS関数です

この関数はグループ化したテーブルを作成します

上の画像を見ると、「201904」「201905」と月単位で売上が集計されています

SUMMARIZECOLUNS関数の文法は次の通りとなります

SUMMARIZECOLUMNS(グループ化する列,新列名,集計式)

今回で言えば次の通りの式となります

SUMMARIZECOLUMNS(

‘OrderData'[yyyyMM] ⇒グループ化する列

,”月小計”, ⇒新列名:集計式で計算した列

SUM(‘OrderData'[受注数]) ⇒集計式

)

但し、SUMMARIZECOLUNS関数を使用して新たなテーブルを作成しておくわけではありません

SUMMARIZECOLUNS関数で作成したテーブルは変数に代入します

上の画像では変数:myTableに代入されています

最終月と売上の集計

まずは前述の通りSUMMARIZECOLUNS関数にてグループ化されたテーブルを作成します

そして最終月を計算した上で新たに作成したテーブルから最終月の売上を抽出します

最終月は以下の要領で算出して変数:MaxMonthに格納します

そして、myTableとMaxMonthを組み合わせて最終月の売上をSUMX関数を使用して集計します

SUMX関数の第一引数ではFILTER関数を使用します

グループ化したテーブルから、最終月と同様の行を抽出します

そして第二引数ではグループ化した際に集計した売上を指定します

文章となるメジャーの作成

文字の切り取り

文章で使う「年」や「月」は事前に分解してメジャーを作成しておきます

改行コード

改行はUNICHAR関数を使用します

UNICHAR関数の引数には「10」を指定します

桁区切り

売上の桁区切りにはFORMAT関数を使用します

FORMAT関数の第二引数では”#,###”で桁区切りを表現します

テキストボックスへのメジャーの設定

事前に文章となるメジャーは「TEXT」という名称で作成してあります

テキストボックスをレポート画面に設定すると、+ボタンが見えますのでこちらをクリックします

するとメジャーを設定できるようになります

メジャーの設定は「この値の計算方法」の欄にて行います

これでフォント文字や文字の位置などを調整したら終了です

<まとめ>

今回はメジャーを組み合わせて文章を可変にする方法を解説しました

記事の中では様々なテクニックが出てきました

・グループ化するDAX⇒SUMMARIZECOLUNS関数

・DAXによる改行⇒UNICHAR関数

・桁区切り⇒FORMAT関数

他の場面でも有効活用できる内容です

ぜひ手を動かしてトライしてみてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

複雑なリレーションを分かりやすく分解して編集する方法

【Power BIを活用する上で難所の一つであるリレーションの編集を分かりやすい画面で行えるようにする】

Power BIのリレーション画面を一目見て「操作しにくい」と感じたことはないですか?

どうも全体像がつかめなかったりする場合もありますし、表示されているテーブルが多すぎる場合には関係性がよくつかめなかったりします

今回の記事では「モデルビュー」画面をうまく活用して、リレーションを編集しやすい単位でブロックを分けられるようにします

自動レイアウト

今回の記事ではリレーションを分解して編集する方法を解説するのですが、全体をすっきり表示する方法もあります

まず「+ボタン」でモデルビュー画面のページを増やします

ページを増やしたら「自動レイアウト」をクリックします

すると次のGIF動画のように、全体がすっきりした形で表示されます

こちらの画面でリレーションを新規に作成してみます

上のGIF画像では「顧客1」と「売上データ1」との間で新規にリレーションが作成されました

すると「すべてのテーブル」ページでも新規に作成されたリレーションが反映されます

リレーションの分解

ここから本題のリレーションの分解について解説します

まずページを新規に追加します

こちらに分解するリレーションにおいて中心となる「テーブル」を追加します

次に「ページの空白箇所」で右クリックをします

すると次のようなポップアップが表示されます

こちらの「関連テーブルを追加する」をクリックします

すると中心とするテーブルと既にリレーションがあるテーブルが表示されます

新規にリレーションを追加する場合にはテーブルを右から挿入します

逆に上の表示からテーブルを消したい場合にはこちらの「ダイアグラムから削除」をクリックします

なお、こちらで作成したリレーションは「すべてのテーブル」にきちんと反映されます

<まとめ>

今回はPower BIのモデルビュー画面にて、リレーションを分けて編集する方法を解説しました

画面を追加するだけで行えるのでとても便利です

Power BIでうまくリレーションする鍵は「分解」です

ぜひ今回紹介した画面をうまく活用して「分解」上手になりましょう!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power BIでレーダーチャートを作成する

【レーダーチャートはメニューにはないですが、その他のビジュアルから作成することができます】

エクセルでは定番のレーダーチャートは、Power BIではメニューから作成できません

その代わり、3点リーダーから選択することができます

その他のビジュアルの取得

ビジュアルのビルドの「3点リーダー」をクリックすると「その他のビジュアルの取得」が選択できます

こちらから「Radar」と検索してみてください

すると数種類の「レーダーチャート」が選択できるようになります

グラフの作成

前述の「その他のビジュアルの取得」の一番左「Radar Chart」を選択すると、ビジュアルのビルドに次のように表示されます

このレーダーチャートのマークをクリックすると次のようにフィールドが表示されます

設定するフィールダーは2つだけです

<まとめ>

今回の記事ではレーダーチャートを「その他のビジュアルの取得」から作成する方法を解説しました

注意点としては複数の線を作成する場合です

リレーションを組んだとしても、複数のテーブルから線を作成することができません

同じテーブルから複数の線に対応する値を作成する必要があります

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ