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

画像でスライサーを選択する~スライサーを一目で分かるようにしよう!~

今回の記事では、画像でスライサーを選択できるようにします

この仕組みであれば、何を選択するか?何を選択しているか?は一目で分かります!

エクセルでも似たようなことはできます

ただ、画像に名前を付けるなどの面倒な処理が必要です

Power BIであれば、複雑な処理不要で画像スライサーを作成できます

画像URLの準備

画像はURLを使用して表示します

Power BI Desktop内で、画像のURLを管理する仕組みがあります

URLは今回の記事では、Googleフォトで用意しました

Googleフォト上で右クリックすると「画像アドレス(URL)」をコピーできます

コピーしたURLは、スライサーにする項目に紐づけられるようにコピーします

今回の記事では「データの入力」から新たにテーブルを作成しました

エクセルで別途、URLを指定したテーブルを作成するのもOKです

スライサーの作成

スライサーの作成を行う前に、データ管理画面で一つ事前処理が必要です

データ管理画面で「URL」を設定した列を選択した上で、データカテゴリを「画像のURL」に指定します

これで、通常のスライサーの作成処理と同じです

フィールドにはデータカテゴリを「画像のURL」に設定した列を指定します

これで完成です!

<まとめ>

今回はスライサーを画像で選択できるようにしました

画像はURLで処理するのが一番のポイントです

画像を活用すると、レポートが華やぎます!

ぜひ有効活用してみましょう!

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

にほんブログ村

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

DAXを使用して注文数毎に会員を分類する~会員のセグメント~

【IF式をわざわざ重ねなくても、DAXを使用すれば注文数で会員をセグメントできます】

下の画像のようなデータから会員/Customer_IDを注文数でセグメントする場合はIF式やピボットテーブルを組み合わせる必要がありました

OrderData1
アイコン

Order-Segment 133.91 KB 1 downloads

...

DAXとパラメーターを使用すれば、簡単にセグメントが行えます

ポイント

今回は注文データからセグメントを行いますので、一旦、SUMMARIZE関数を使用して会員番号毎に注文数を紐づけるテーブルを作成するのがポイントです

上記のテーブルからFILTER関数を使い、注文数毎に会員数を集計します

パラメーターの作成

まずはFILTER関数内で、注文数のフィルターに使用するパラメーターを作成します

次の画像で、フィルターに設定する数値範囲を設定します

上記の数値範囲を設定すると2つのものが作成されます

1つは数値範囲を設定したテーブルです

もう一つはメジャーです

こちらのメジャーをFILTER関数内で使用します

セグメントをするメジャーの作成

顧客別注文数 =

①VAR CustomerOrders=   

SUMMARIZE(

‘OrderData1’,

OrderData1[Customer ID], 

“注文数”, 

COUNT(OrderData1[Order ID])

)

RETURN

②COUNTROWS(   

FILTER(

CustomerOrders,

[注文数]=③[パラメーター 値]

)

)

③は前述のパラメーターを作成した時のメジャーになります

画像に alt 属性が指定されていません。ファイル名: image-33-644x63.png

パラメーターで設定した値(1~10)毎(行毎に)に会員を抽出する形になります

FILTER(CustomerOrders,[注文数]=③[パラメーター 値])

会員を抽出したら②の「COUNTROWS関数」でセグメント毎の会員数を集計します

マトリックスの作成

最後にマトリックスを作成します

行には下の画像のパラメーターを使用します

画像に alt 属性が指定されていません。ファイル名: image-32.png

<まとめ>

今回は注文データから、注文数で会員をセグメントしたデータを作成します

エクセルのワークシートで行おうとすればIF関数やピボットテーブルを組み合わせる必要があります

DAXを使用する場合は、FILTER関数をうまく使えば簡単に行えます

アイコン

DAX 0.31 KB downloads

...

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

にほんブログ村

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

DAXを使いコホート分析~顧客のリピート状況を把握~

【もしエクセルで行おうとしたら、非常に手間なリピート状況の把握をDAXを使用して一発で解決】

前回は、新規と既存をDAXで集計しました。今回は同じ条件で顧客を並べた上でリピート状況をDAXで把握できるようにします!

上の画像のマトリックス表では、縦に顧客を初回受注月で並べ、横は初回受注月の経過月(1~12)別にリピート率を並べています

下の上の画像のズームアップを見てください

例えば、初回の受注月が2019年4月だった会員がもし100名いたとしたら、その100名のうち次の月に受注があったのは33名ということになります

このマトリックス表を作成することで、単に金額の増減を把握するだけではわからない、具体的な増減の要因をつかめるようになります

使用データ

使用するデータには、会員別の受注データを使用します

OrderData
アイコン

OrderData 104.62 KB 2 downloads

...

ポイント

作成は3段階になります

1段階目で、新しい列を追加します

OrderData

会員毎の初回受注日を抽出する列を作成し、前述のマトリックス表の縦軸にします

2段階目で横軸にする連番をテーブルで作成します

3段階目でリピート率を計算するDAXを作成します

こちらのDAXは1段階目、2段階目で作成した縦横の軸を組み入れます

会員毎の初回受注日の抽出

CALCULATE関数とMIN関数を使用して、会員毎の初回受注日を抽出する列を作成します

CALCULATE関数の第二引数の条件にはFILTER関数を使用して、会員毎のテーブルを繰り返し作成し、会員毎の初回受注日を繰り返し抽出します

ただリピート率の計算は月単位で行うので、最小受注日は月末に揃えます

月末に揃える作業はEOMONTH関数を使用して行います

FirstOrderDate =

①VAR CurrentCustomer=’OrderData'[会員番号]
RETURN
②CALCULATE(

EOMONTH(MIN(‘OrderData'[受注日]),0),

FILTER(‘OrderData’,’OrderData'[会員番号]=①CurrentCustomer)

)

EOMONTHは第二引数に0を指定することで、第一引数の日程の月末日を抽出します

連番テーブルの作成

マトリックス表の横軸になる連番(0~12,増分は1)を作成します

こちらは新しいテーブルの作成となります

テーブルの作成にはGENERATESERIES関数を使用します

MonthAfter = GENERATESERIES(0,12,1)

リピート率を計算するDAXの作成

変数の作成

まず縦横の位置を変数で指定します

A: VAR CurrentMonthAfter=SELECTEDVALUE(MonthAfter[Value]) 

B: VAR CurrentFirstMonth=SELECTEDVALUE(OrderData[FirstOrderDate])

マトリックスの位置の行を抽出

テーブル:OrderDataから前述のAとBを組み合わせた位置に該当する行を、FILTER関数を使用して抽出します

この時に、EOMONTH関数を使用して月末日に揃えて行を抽出するのもポイントです

FILTER(‘OrderData’, EOMONTH(‘OrderData'[受注日],0)=EOMONTH(B: CurrentFirstMonth,A: CurrentMonthAfter))

CALCULATE関数による会員数抽出

上記のFILTER関数により抽出した行から、CALCULATE関数とDISTINCTCOUNT関数を使用して該当する会員数を抽出します

 CALCULATE(         

DISTINCTCOUNT(‘OrderData'[会員番号]), 

FILTER(‘OrderData’,

EOMONTH(‘OrderData'[受注日],0)=EOMONTH(CurrentFirstMonth,CurrentMonthAfter)

) ),

DIVIDE関数による率の計算

DIVIDE関数によって、分子:マトリックスの位置の会員数と分母:全体の会員数(実際には行でフィルターされる)で割ります

CustomerRetension% =  

A: VAR CurrentMonthAfter=SELECTEDVALUE(MonthAfter[Value]) 

B: VAR CurrentFirstMonth=SELECTEDVALUE(OrderData[FirstOrderDate])

RETURN  

DIVIDE(   

CALCULATE( 

DISTINCTCOUNT(‘OrderData'[会員番号]),

FILTER(‘OrderData’,

EOMONTH(‘OrderData'[受注日],0)=EOMONTH(B: CurrentFirstMonth,A: CurrentMonthAfter) 

),

DISTINCTCOUNT(OrderData[会員番号]) 

)

マトリックスの作成

実際にマトリックス作成の際には、2つの作業を事前に行います

日付の変更

個人の好みにもよりますが、そのままですと縦軸の初回の受注月はJan、Febなどの英語名になります

ですので、事前に日付を変換しておくことをお勧めします

仮メジャーの作成

マトリックスの「行」には上記の画像のFirstOrderDate、もしくは変換した内容、列には2段階目で作成した0~12の連番を指定します

値には普通にいけば、リピート率を配置します

ただ、このケースの場合には一旦、仮で作成したメジャーを一旦配置します

この仮メジャーを配置した後、リピート率を計算するDAXを配置します

<まとめ>

今回の記事では、初回受注月で会員を並べ、横軸に経過月毎にリピート率を並べるコホート分析のためのDAXの作成方法を解説しました

実際の作成はマトリックスの縦軸、横軸と値の3段階で行います

DAX関数は様々な関数を組み合わせて作成しますが、特にFILTER関数をどう使うかがポイントとなります

FILTER(‘OrderData’,’OrderData'[会員番号]=①CurrentCustomer)

FILTER(‘OrderData’,

EOMONTH(‘OrderData'[受注日],0)=EOMONTH(B: CurrentFirstMonth,A: CurrentMonthAfter) 

上記2つのFILTER関数はCALCULATE関数と組み合わせますが、この組み合わせは色々な場面で使用できるのでぜひ覚えておきましょう!

アイコン

DAX 0.65 KB 1 downloads

...

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

にほんブログ村

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

DAXを使い一発で新規顧客・既存顧客別に会員数と金額を集計する

【売上金額が単に増えた減ったとは別に新規と既存の切り口があると、金額の増減をストーリーで語れます】

数字の増減の理由を聞かれた時に、返答に困ったことはありませんか?

なかなか数字の増減の理由をつかめないのは、原因がずっと前に起こっていることもあるからです

例えば、ある企業の売上金額の80%が僅か顧客の20%から生まれていたとします

この優良顧客の離脱率は完全に0にはできません

しかも獲得した顧客もすぐに優良になるわけではありません。優良顧客になるまでに時間はかかるものです

優良顧客が離脱するペース以上に新規顧客を獲得して成長させないと売上は維持できません

ですので、新規顧客の獲得の減少が後々売上に響くこともあります

逆に新規顧客と既存顧客に分けた切り口で集計ができると、中長期期間での分析がしやすくなります

ところが、この新規既存の集計はエクセルのワークシートで行おうとすると猛烈に時間がかかります

今回の記事では、DAX一発で新規既存の数字を集計できるようにします

なお、新規と既存の切り口は売上金額の分析でなくても、在庫分析などでも活用できます

ポイント

新規と既存の違いとは何か?この定義がとても重要です

初回購入とはまた違いますので、その点は明確に意識しておきましょう!

次の図を見てみてください

対象期間より前に購入があった会員は新規と既存、どちらに区分されるでしょうか?

これは既存に区分されます

この「対象期間より前」の定義を数式で表すと次のようになります

<MIN(対象期間)

この数式を活用して既存会員をDAXで表現します

逆に新規はどう表現するか?

全会員-新規会員

上記で表現できますので、既存会員を式で表すことができれば難しい式を使う必要はありません

使用データ

使用するデータは次のデータになります

テーブル名:myData

横の軸は会員番号別の軸になります

4月1日から4日まで新規会員を1会員づつ獲得しており、新規会員からの金額は1日100となっています

上記のテーブルはPower BI内に取り込んだ後、ピボット解除で変換した上で使用します

尚、上記は売上データから新規・既存を集計しますが、会員データを別途作成しておくともう少しDAX式が簡単になります

会員データと売上データの間にリレーションを作成したうえで、DAXを使用する方法も少し紹介します

アイコン

DATA 21.38 KB 6 downloads

...

使用DAX(抜粋)

VALUES関数

今回のDAXではVAR/変数を使って複数のDAX関数を組み合わせます

その中の一つがVALUES関数です

VALUES関数はテーブル操作関数なので「新しいテーブル」を作成できます

上の画像では、全会員をテーブル化しています

CALCULATETABLE関数

こちらの関数はテーブル式をフィルター評価する関数です

CALCULATETABLE_NewTable = CALCULATETABLE(VALUES(myData[会員番号]),’myData'[日付]=MIN(‘myData'[日付]))

上のVALUES関数に加えて、フィルターを加えています

今回の記事では、この関数を使用して既存会員をテーブル化します

新規会員数

ポイントで前述したように、全会員から既存会員を引いたのが新規会員となります

NewCustomers =  
VAR CurrentCustomers= Values(myData[会員番号]) 

VAR CurrentDate=Min(myData[日付]) 

VAR OldCustomers=CALCULATETABLE(VALUES(myData[会員番号]),ALL(myData[日付]),myData[日付]<②CurrentDate) 

VAR NewCustomers=EXCEPT(①CurrentCustomers,③OldCustomers)

⑤RETURN COUNTROWS(④NewCustomers)

解説

①新規・既存会員を含めて全会員をリスト化します

②対象期間の最小日付、つまり新規と既存の境目となる日付を算出します

③②で算出した最小日付を基にして既存会員をテーブル化します

④①の全会員から③の既存会員をEXCEPT関数により差し引いて新規会員をテーブル化します

⑤COUNTROWS関数により、NewCustomersテーブルから新規会員数を出力します

既存会員数

上記の新規会員数を算出するDAX関数の一部を省略するだけです

OldCustomers =

① VAR CurrentCustomers= Values(myData[会員番号]) 

②VAR CurrentDate=Min(myData[日付]) 

③VAR OldCustomers=CALCULATETABLE(VALUES(myData[会員番号]),ALL(myData[日付]),myData[日付]<②CurrentDate)

④RETURN COUNTROWS(③OldCustomers)

新規会員金額

新規会員数を算出するDAXの最後のRETURNを変更します

 SUMX(NewCustomers,CALCULATE(SUM(myData[金額])))

SUMX関数を使用するのですが、第二引数でCALCULATE関数を使用することでNewCustomersテーブルの1行1行*を計算させるのがポイントです

行評価

NewCustomersAmount =

①VAR CurrentCustomers= Values(myData[会員番号]) 

②VAR CurrentDate=Min(myData[日付]) 

③VAR OldCustomers=CALCULATETABLE(VALUES(myData[会員番号]),ALL(myData[日付]),myData[日付]<CurrentDate) 

④VAR NewCustomers=EXCEPT(CurrentCustomers,OldCustomers)

⑤RETURN     SUMX(NewCustomers,CALCULATE(SUM(myData[金額])))

既存会員金額

OldCustomersAmount =  

①VAR CurrentCustomers= Values(myData[会員番号]) 

②VAR CurrentDate=Min(myData[日付]) 

③VAR OldCustomers=CALCULATETABLE(VALUES(myData[会員番号]),ALL(myData[日付]),myData[日付]<②CurrentDate)

④RETURN SUMX(③OldCustomers,CALCULATE(SUM(myData[金額])))

会員データを使用するパターン

使用する会員データは次の通りとなります

新規会員数

NewCustomers =  

①VAR CurrentDates=VALUES(myData[日付])               

②RETURN COUNTROWS(FILTER(‘CustomerFirstSale1’,’CustomerFirstSale1′[最小] in ①CurrentDates))

既存会員数

OldCustomers =

①VAR CurrentDates=VALUES(myData[日付])

②VAR CurrentCustomers=COUNTROWS(VALUES(myData[会員番号]))

③VAR NewCustomers=COUNTROWS(FILTER(‘CustomerFirstSale1’, ‘CustomerFirstSale1′[最小] in ①CurrentDates))    

④RETURN ②CurrentCustomers-③NewCustomers

新規会員金額

NewCustomersAmount =

①VAR CurrentDates=VALUES(myData[日付]) 

②RETURN SUMX(FILTER(‘CustomerFirstSale1’,’CustomerFirstSale1′[最小] in CurrentDates),’MeasureTable (2)'[SalesAmount]*)

*事前にSUM関数で合計を計算するメジャーを作成しておきますSalesAmount = SUM(myData[金額])

既存会員金額

OldCustomersAmount =  

①VAR CurrentCustomers= Values(myData[会員番号]) 

②VAR CurrentDate=Min(myData[日付]) 

③VAR OldCustomers=CALCULATETABLE(VALUES(myData[会員番号]),ALL(myData[日付]),myData[日付]<②CurrentDate)

④RETURN     SUMX(③OldCustomers,CALCULATE(SUM(myData[金額])))

<まとめ>

今回の記事ではDAX関数を使用して、新規と既存を区分して集計する方法を解説しました

複数の関数を組み合わせて集計しますが、一番重要なのはMIN(対象期間)により全期間から新規と既存の境目となる「時」を算出することです

DAX関数を使用することで、エクセルで複数シートをまたいで処理するのとは違い、即時に新規と既存を集計できます

今回は新規と既存の切り口での集計を紹介しましたが、後日、新規と既存の切り口以上に重要なリピートについても解説を行います

アイコン

DAXコード 2.57 KB 4 downloads

...

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

にほんブログ村

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

DAX関数の虎の巻

こちらのコーナーでは、DAX関数*をうまく使うためのコツを解説します

*エクセルのワークシートでは関数に相当するもの

フィルター評価と行評価

フィルター評価

Power BIのレポート画面では常にフィルター評価の影響を受けます

この点は常に意識しておく必要があります

例えば、次のようなデータがあったとします

こちらのデータをマトリックスで表示すると次のようになります

こちらのマトリックスの行にカラーを入れてみます

こちらは行単位で青、赤、緑のフィルターが適用されています

上の画像では、スライサーのフィルターが適用されています

このように、レポート画面ではフィルターの影響を常に受けるわけですが、DAXも同様です

但し、CALCULATEをDAX式で活用するとルールが変わります

試しに、青色の金額を抽出するCALCULATE関数でメジャーを書いてみます

Color_BLUE = CALCULATE(SUM(myTable[金額]),’myTable'[カラー]=”青”)

スライサーのフィルターを解除した上で、上記のメジャーをマトリックスに配置してみます

マトリックスの行単位での色別のフィルターは解除され、全て同じ値/6,600になっています

今度は、スライサーのフィルターを適用してみます

DAX外のフィルターはきちんと適用されているのが分かります

今度はメジャーにKEEPFILTERS関数を適用してみます

今度は、行単位での色別のフィルターが適用されています

以上、レポート画面では常にフィルターの影響を受ける点とCALCULATE関数を使うとルールが変わる点は常に意識しておきましょう!

行評価

フィルター評価と同じくらい重要で、フィルター評価より難解なのが行評価です

こちらは、明確にフィルター評価と区別して理解しましょう

例えば、次のようなデータがあるとします

こちらのデータから、行毎に値1と値2を乗算する列を作成してみます

次に値1x値2の列を合計する列を作成します

では上の画像と同じ「55」を算出するメジャーを、新しく作成した列をつかわないまま作成するにはどうしたらいいでしょう?

次のように式を書くと、突拍子もない数字になります

これはSUM関数が列自体を計算対象にしているからです

では、ここでSUMX関数を使用してみましょう!

expressionの箇所が「行評価」になっています

SUMX関数を使うと、テーブル「myNum」の1行1行を計算して合計するので正しい数字が出ています

これが行評価となります

行評価では、新しい列の作成と同じように1行1行を対象とするので、フィルター評価とは明確に区別する必要があります

ちなみにCALCULATE関数を使用すると、フィルター評価と同じようにルールが変わります

今回は、隣の列全体を合計するのではなく、1行1行の合計値を算出しています

このCALCULATE関数を使うとルールが変わる点は常に頭に入れておきましょう!

VARとRETURN

DAXはVARとRETURNを使うと更に有効の活用できます

というより、VARとRETURNを使わないとかなりDAXを使う意義が薄れます

VARは変数/VARIABLEの略です

このVARを箱として活用します

エクセルのワークシートでも同じことができます

B2セルにmyValueという名前をつけました

この名前がVARに相当します

そしてD2セルで下の画像のようにmyValueを使ってみます

このD2セルの3がRETURNになります

ちなみに、B2セルの値のmyValueを2から3に変えるとD4セルのリターンは4になります

では、上記と同じ内容をPower BI内でも行ってみます

上の画像では、myValueという箱に2を入れ、更に1を加えてリターンしています

では、myValueを3にすると4がリターンします

実際には、このVARを多数組み合わせて使う形になります

ALLとALLSELECTEDとの使い分け

ALLALLSELECTEDの違いがDAXを使用したばかりだとよくわからないと思います

そもそも、ALLって何のためにあるの?という方も中にはいらっしゃると思います

ALLはスライサーなどでフィルター処理が行われた場合のためにあります

上のGIF画像では、分子がフィルターされた場合にも、分母の全体売上はALL関数により変わらないようになっています

ところが、分母の内容自体がフィルターされる場合が厄介です

上の画像では、構成比の分母は各都道府県の合計になります

仮に3つの都道府県にフィルターした場合には次のようになります

構成比_ALLの場合には、分母が固定ですから、小計が100%を割ります

構成比_ALL = DIVIDE(SUM(‘売上データ3′[売上金額]),CALCULATE(SUM(‘売上データ3′[売上金額]),ALL(‘売上データ3’)))

構成比_ALLSELECTEDの場合には、フィルターと連動して分母が動きます

構成比_ALLSELECTED = DIVIDE(SUM(‘売上データ3′[売上金額]),CALCULATE(SUM(‘売上データ3′[売上金額]),ALLSELECTED(‘売上データ3’)))

つまり、分母が何か?スライサーでフィルターする内容は何か?によってALLとALLSELECTEDを使い分ける必要があります

SUMX関数による高度な集計

エクセルのワークシート関数でもSUM系の関数は多数あります

SUM、SUMIF、SUMIFS、SUMPRODUCT・・・

DAXのSUMX関数は、ワークシート関数のSUMIFS関数とSUMPRODUCT関数を組み合わせた高性能なDAX関数です

次の表を見てください

値1の列と値2の列をそれぞれ掛け合わせ、E8セルで合計しています

E10セルにはSUMPRODUCT関数が入っており、列1と列2をそれぞれ乗じつつ、各行の結果を合計しています

H3セルにはSUMIFS関数が入っており、G3セルの条件に応じて、列1と列2を乗じた値の合計を計算しています

但し、Eの列で算出した値を参照しています

SUMPRODUCT関数のように、単独では計算できません

DAXのSUMX関数では、このSUMPRODUCT関数とSUMIFS関数の組み合わせを一発で計算できます

SUMX関数の文法は次のようになります

SUMX(テーブル,式)

試しに、前述のSUMPRODUCT関数と同じことをしてみます

元データは前と同じデータ(テーブル名:myTable)になります

下の画像では、myTableを第一引数のテーブルとして指定し、第二引数で式を指定しています

mySUMX = SUMX(‘myTable’,’myTable'[値1]*’myTable'[値2])

今度は、SUMIFS関数と同じように列1の値が<3とします

この場合は、第一引数のテーブルにFILTER関数を使います

mySUMX_FILTER = SUMX(FILTER(‘myTable’,’myTable'[値1]<3),’myTable'[値1]*’myTable'[値2])

これで、SUMIFS関数とSUMPRODUCT関数との組み合わせを計算できています

嬉しいのはSUMX関数ではSUMPRODUCT関数と違い、式を自由に指定できる点です

DAXの可能性をまさに感じさせる関数だと思います

SUMMRIZE関数による一時テーブルの作成

DAX関数内で参照用の一時テーブルを作成するのにとても便利です

文法は次の通りとなります

SUMMRIZE(テーブル,集計する切り口にする列,新列名1,集計式1,新列名2,集計式2・・・)

早速、使用例を見てみましょう

元のデータは次の通りです

売上データ3

これが上の画像のテーブルから都道府県別の売上合計、平均を算出するSUMMRIZE関数の事例1です

mySummarize = SUMMARIZE(‘売上データ3’,’売上データ3′[都道府県],”Revenue”,SUM(‘売上データ3′[売上金額]),”AVERAGE”,AVERAGE(‘売上データ3′[売上金額]))

事例2として集計の切り口を都道府県のみから、商品も加えてみましょう

mySummarize+Product = SUMMARIZE(‘売上データ3’,’売上データ3′[都道府県],’売上データ3′[商品],”Revenue”,SUM(‘売上データ3′[売上金額]),”AVERAGE”,AVERAGE(‘売上データ3′[売上金額]))

ピボットテーブルと同じような形ですよね

HASONEVALUE

こちらのDAXは、値が複数あるケースとそうでないケースで表示を分けるのに便利です

値が複数ある場合は、FALSE、そうでない場合はTRUEを返します

ただ、上記の説明だと使用シーンが明確に浮かばないとおもうので実際の例を見てみましょう

上の画像にあるようなメジャーを作り、カレンダーテーブルの内容を行に仕込んだマトリックスの中にいれてみます

すると、MONTHの箇所は一つしか値がないのでTRUEになり、YEARの箇所はMONTHが複数あるのでFALSEになります

次にもう一つメジャーを作成します

IF式を使い、HASONEVALUEがTRUEであれば、金額を表示するようにします

YEARとMONTHで表示を切り替えられるようになりました

ISBLANKとISEMPTY

ISBLANKとISEMPTY、似てるようで明確に違いがあります

具体的には何が違うのでしょう?

ISBLANKは対象が、ISEMPTYはテーブルが対象になります

ISBLANK

下の画像では「ISBLANK1」という新しい列を追加しています

空欄の行では「TRUE」を返しています

次の画像ではIF式と組み合わせて空欄を0に置き換えています

ISEMPTY

ISEMPTY関数を使い、次のようなメジャーを作成してみます

上の画像内の「’EMPTY’」は次の画像のテーブルです

このメジャーの内容をカードで出力してみます

こちらはTrueで出力されます

今度はISEMPTYの中身のテーブルを変えてみます

’テーブル’は空でないのでFalseが返されます

DAX関数の中でぜひ有効活用してみましょう

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

にほんブログ村

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

超高速!パレード図を1つのメジャー一発で作成する方法

【分析を語る上で一番よく出てくるのがパレード図だと思います。実は実務上ではかなり作成が面倒なのですが、DAXを使用すれば一発で作成できます】
パレード図の便利さの一つは、分析の優先順位を付けれる点です

物理的には全ての客先、全ての商品を同じように対策を打つことはできません

パレード図では横棒グラフの並びと、累計の割合を示す折れ線グラフとの組み合わせにより、優先的に対策を打つべき箇所が分かります

ところが、エクセルのワークシートでパレード図を作ろうとするととても面倒です

特に累計の構成比を算出するのが面倒です

データの並び替え⇒構成比の算出⇒累計の構成比の算出などが「累計の構成比」の算出には必要です

仮に、データの追加があった場合には最初からやり直しになります

この累計の構成比メジャーで作成します

今回は以下の売上データから、客先別のパレード図をPower BIにて前述のDAX関数を組み合わせて作成します

ポイント

累計の構成を計算するので、数式は以下のようになります

・分子⇒累計金額

・分母⇒全合計金額

分母は問題になりませんが、分子が厄介です

エクセルワークシートであれば、下の図のように、機械的に上のセルを足して累計金額を計算します

メジャーで計算する場合にはポイントが2つあり、1つ目は個別金額のグループ化、2つ目は不等式を使う点です

仮に、金額が右のようになっているとしたら、A>B>C>D>E

Dの箇所の累計は>=Dのもの、つまりA+B+C+Dのグループを合計します

一番大きいAであれば、Aだけ、一番小さいEの場合には全てをグループ化して合計します

不等式を使うためには、AからEまで各々の合計額(複数)を事前に計算してグループ(複数)を準備しておくことが必要です

全体金額の計算

累計の構成比はmyParetoとして計算します

まずは、分母の金額を計算します

myPareto = VAR TotalRevenue=CALCULATE(SUM(‘売上データ3′[売上金額]),ALLSELECTED(‘売上データ3’))

単にSUM関数で計算するのではなく、スライサーなどによるフィルター処理にも備えて、CALCULATE関数とALLSELECTED関数の組み合わせで計算します

*VARとRETURNの使い方はこちらから

*ALL関数とALLSELECTED関数の使い分けはこちらから

都度金額の計算

後で不等式の中で比較のために使う都度金額/CurrentRevenueを計算しておきます

こちらは前述の画像の>=の右側の部分(D)になります

VAR CurrentRevenue= SUM(‘売上データ3′[売上金額])

個別金額のグループを計算

個別金額のグループは、SUMMARIZE関数を使用して作成します

*SUMMARIZE関数の使い方はこちらから

該当するのは前述の画像の「A~E」の部分です

話を分かりやすくするために、SUMMARIZE関数を使用して新たなテーブルを作成してみます

mySummarize = SUMMARIZE(‘売上データ3’,’売上データ3′[客先],”Revenue”,SUM(‘売上データ3′[売上金額]))

この関数により客先を重複なく並べた列を作成した上で、新たに「Revenue」という列で客先別の合計金額を並べています

こちらのSUMMARIZE関数を前述の式の中で使うと次のようになります

不等式を使った累計の計算

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

*SUMX関数の使い方はこちらから

前述のように、累計は不等式を使ってグループを作成し、グループを合計して算出します

SUMX関数は2つ引数を使用しますが、1つ目の引数はグループを計算するFILTER関数になります

 FILTER(SummarizeTable, [Revenue]>=CurrentRevenue)

上記の式の[Revenue]は、前述のSUMMARIZE関数で算出したグループの各々の金額と考えてください

このFILTER関数により各々の金額のCurrentRevenue以上の金額がグループ化されます

そして、SUMX関数の第二引数とてして、合計する列[Revenue]を指定します

これでメジャー内の変数の指定が終わったので、Returnを指定します

Returnは「CumulativeSum/TotalRevenue」となります

グラフの作成

これで問題だった累計構成比が計算できましたので、最後にグラフを作成します

グラフは横棒グラフと折れ線グラフの組み合わせを選択します

X軸は客先、列のY軸は売上金額の合計を選択します

線のY軸には、先ほど作成したメジャーを設定します

作成したメジャー内では、分母にALLではなくALLSELECTED関数を使用しています

ですので、スライサーでフィルターしても、折れ線は最終的に100%になります

<まとめ>

今回はDAX関数を使用して、Power BIにてパレード図を作成する方法を解説しました

作成するDAX関数は複数の関数の組み合わせになり、複雑な面もありますが、一度作成してしまえば使いまわしていけます

エクセルワークシートで同じことを使用としたら、行数が可変になるので、相当面倒な作業になります

最後に、今回使用したDAX関数をメモ帳にて添付します

アイコン

累計構成比 0.96 KB 1 downloads

...

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

Power BIの動くレポートをパワーポイントのスライドに挿入する方法

Power BI DesktopからPower BIサービスに発行した内容をプレゼンで使用したい時があります

プレゼンの際は、せっかく作ったスライサーやドリルダウンなどの動く素材もパワーポイント内で使用したいですよね?

今回の記事では、そんな都合の良い方法をご紹介します

Power BIサービスへの発行

まずは、Power BI DesktopからPower BIサービスへ発行処理を行いましょう

ライブデータの作成

Power BIサービスにログインしたら、マイワークスペースから該当のレポートを開きましょう

レポートを開いたら、エクスポート ⇒ PowerPoint ⇒ライブデータを埋め込む、を選択します

「ライブデータを埋め込む」をクリックしたら、次のような画面が出てきます

こちらでリンクをコピーします

パワーポイント内の操作

パワーポイントでは、レポートを挿入したいページでアドイン「Power BI」を「挿入タブ」から起動します

「Power BI」が無い場合は「アドイン」から「Power BI」を追加しましょう

「Power BI」を起動したら、次のような画面が開きます

こちらの画面で「ライブデータを埋め込む」にてコピーしたリンクを貼り付けます

これでパワーポイント内でレポートが動きます!

削除したい場合は、右上のこちらをクリックします

すると削除ボタンが出てきます

<まとめ>

今回は、Power BIの動く素材をパワーポイント内で使えるようにする方法を解説しました

一つのアプリ内で完結せず、他のアプリでも連携できるのが、Power PlatFormの良さです!

尚、動く素材を埋め込んだパワーポイントを共有する際には、Power BI Proライセンスが必要です

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

にほんブログ村

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

グラフを内容に合わせた形で表示する~Infographic Designer~

【グラフは見た目の瞬発力が重要です!】

今回は、一目でグラフの内容がわかる「Infographhic Designer」を使ったグラフの作り方を解説します

実際にレポートを触ってみたいという方はこちらをクリックしてみてください⇒サイト

開いたWEBサイトで、実際にレポートを操作できます

Infographic Designerとは?

Power BI Desktop上で「その他のビジュアル」からダウンロードできます!

要はアドインです!

次に開く画面で「INFO」と検索すると出てきます

そして、こちらでダウンロードします

「追加する」をクリックしたら、レビュー画面でこちらをご確認ください

元データ

元データは下の画像のデータになります

このデータをPower BI Desktopに取り込んだ上で2種類のグラフを作成します

左側のグラフの作成

男女別の形の選択

Infographic designerをクリックしてビジュアルをページに挿入します

ビジュアルを挿入したら次のようにデータを配置します

・Category ⇒性別

・Measure ⇒売上金額

次にこちらのマークをクリックします

これでMark Designerという画面が開きます

この画面で実際にグラフの形が設定できます

次に、

こちらのマークをクリックします

すると、別な画面が開きます

こちらの画面でフィル―ルドを選択します

すると、性別に「形」を選択できるようになります

「形」は様々なものが選べます

今回は、Peopleから形を選びます

形を選択したら「Apply」することを忘れないようにしてください

Applyで設定を完了したら「Back」で前画面に戻ります

テキストの作成

では、ここからはテキストを作成します

テキストを挿入するには「Mark Designer」の上の「Insert text」をクリックします

ここから、下の画像の「Text」の中身を設定します

「Text」の横のマーク「Data-Binding On」をクリックすると設定画面に移ります

次の画面では「None」を他のフィールドに切り替えます

こちらでフィールドを設定し、Applyをクリックして設定を確定します

次に上の画像の「Back」で前の画面に戻ります

これで「Text」の中身が設定できたので、フォントサイズと位置を調整します

上の画像の調整ができたら完成です

ちなみに「Text」の設定から「グラフ自体」の設定に戻すにはこちらを操作します

Mark Designerを消すには、右上の×印をクリックしてください

右側のグラフの作成

メジャーの作成

左側のグラフの選択に応じて、性別の売上割合を算出するメジャーを作成します

DIVIDEを使い「選択された性別の売上/左側のグラフでの選択」を全売上で割ります

全売上は「ALL」を使い、選択が行われてもすべてを抽出するようにします

売上割合 = DIVIDE(sum(‘売上金額'[売上金額]),CALCULATE(SUM(‘売上金額'[売上金額]),ALL(‘売上金額’)))

割合を表示するための設定

左側の設定と同じく、Infographic designerを使用します

今回は、Measureに上で作成したメジャーを設定します

すると下の画像のように100%とだけ表示されます

次に左側のグラフと同様に、Edit LinkをクリックしてMark Designerを開きます

Mark Designerが開いたとしても、Textの設定になっているので「Insert shape」をクリックします

次に開いた画面でグラフの形を選択します

今回は割合を表示するので、Layoutをクリックします

そして、Bound toの箇所をOuterに設定して前画面(Format)に戻ります

Format画面で2つ設定を行います

「Fill Percentage」の箇所でフィル―ルドを設定し、100の意味合いの「1」をofの隣に設定します

これで色などを調整したら完成です

ちなみにグラフの色は「値の出る場所」「出ない場所」に分けて設定できます

<まとめ>

今回は、アドイン機能の「Infographic designer」を使用して、内容に沿ったグラフの形を設定できるようにしました

全て英語なので、わかりずらい箇所もありますが、設定が必要な箇所はそんなにないはずです

X軸などの調整は他のビジュアルと同じ画面で設定することができます

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

にほんブログ村

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

ページ移動用のボタンをPower BIダッシュボードに作成する

今回は、Power BI Desktopの便利機能を活用して、簡単にページ移動ボタンを作成したいと思います

Ctrlキーを押しながらクリックするだけで、該当のページに飛ぶのでとても便利ですよ!

ページナビゲーター

ページ移動のボタンを作成するなら、この方法が一番手っ取り早いです

まず、挿入タブをクリックします

すると、右側に「ボタン」が見えますので、こちらをクリックします

出てきた一覧の下に「ページナビゲーター」というのが見えてきます

これだけで、ファイル内のページを網羅したボタンが作成できます

個別のページへのボタン

こちらは上の「ボタン」には限らず、「図形」や「イメージ/自身で画像アップロード」から作成します

今回はイメージでアップロードをした画像を使用して、個別のページへのボタンを作成します

まず、ページに画像を配置します

画像を配置したら、画像をクリックします

すると、アクションという文字が見えます

このアクションは当初は「オフ」になっているので「オン」にしておきます

その後、下の画像のように必要項目を設定します

設定は入力を必要とせず、クリックで行えます

参考:戻る

戻るボタンは既にアクションが設定されています

戻るボタンをクリックすると、該当ページへの遷移元に自動的に遷移します

<まとめ>

今回は、複数ページ間で移動するためのボタンの設定方法を解説しました

エクセルと違い、Power BIではとても簡単にページ移動のボタンが設定できるようになっています

Power BIには意外な便利技があります

知っているのと知っていないのでは損ですので、ぜひ便利技は研究しておさえておきましょう!

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

にほんブログ村

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

Power BIでWaterFallグラフを作成する~増減が線でわかる~

このページの読者の中には、どうやって値の増減をビジュアル化するか?について頭を悩ましたことがある方も多いと思います

下の画像を見てみてください。こちらは通常の縦棒グラフです

9月末残高が増減を伴った結果、一体どうなったのかがよくわかりません

今度は、この記事で紹介するWaterFallグラフです

値の増減と左の棒グラフがどうなったのかが点ではなく、線で理解ができます

増減が表示されるだけでなく「合計」という元データにない項目も自動で表示されるのも特徴です

このWaterFallグラフの作成は、あまり難しくはないですが、1点だけ問題があります

それは項目の並び替えの問題です

この問題は後で後述したいと思います

元データ

今回はこちらの増減を含むデータが元データになります

ビジュアルの選択

WaterFallグラフのマークをクリックします

データの配置

WaterFallグラフでは「カテゴリ」と「Y軸」を指定します

ここまでは、普通のグラフと同じですが、なかなか並び順が思うようにならなかったりします

並び順を調整する方法をこれから解説します

並び順の調整方法

並び順の調整はPower Queryエディターで行います

エディター画面でインデックス列を追加します

ここからデータ管理画面に移ります

この画面で「項目」列をインデックス列をもとにして並び替えを行えるようにします

ちなみにこの画面通りにレポート画面で並ぶとは限りません

並び替えは「列で並び替え」で行います

この時、項目列を指定したままにしておいてください

これでレポート画面でインデックス列通りに並び替えが行われます

<まとめ>

グラフはシンプルなものが一番です

このWaterFallグラフでシンプルにできるシーンも多いとおもいますので、ぜひ有効活用してください

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

にほんブログ村

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