タグ別アーカイブ: Power BI

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

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

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

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

パラメーターとは?

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

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

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

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

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

メジャーの設定

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

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

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

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

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

<まとめ>

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

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

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

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

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

にほんブログ村

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

Power BIで抽出したデータをエクセルに転記するボタンを作成する

【今回はボタン1つでPower BIの内容を既存のエクセルファイルに追加できるようにします】

Power BIはエクセルからデータを取得してダッシュボードを作成できます。実は、Power BI内で整理したデータをエクセルにエクスポートし直すこともできます

上記の画像の「エクセル出力」ボタンを押すと、OneDrive内にダッシュボードに表示されているデータが追加されます

準備すること

事前にOneDrive、もしくはSharepointにエクセルファイルを準備してください

列名は事前に固定する必要があります

そして、Power Automateから操作ができるようにテーブル化をお願いします

Power BI DesktopにPower Automateの追加

まずビジュアルのビルドの下にある「Power Automate」のボタンをクリックします

すると以下のような内容がページに追加されます

ここでPower Automateで出力するデータフィールドが指定できるようになります

Power Automateフローの設定

データフィールドを設定したら、三点リーダーから編集をクリックします

次に開いた画面では「新規」をクリックします

内容はインスタントクラウドフローを選択します

ここから実際にフローを作成するのですが、既にこちらの画像のアクションはデフォルトで設定されてあります

次にエクセルコネクタから「表に行を追加」アクションを追加します

「表に行を追加」アクションでは、まず事前設定したテーブル名までを設定します

後は、事前にPower BIからの抽出項目として設定した内容をそれぞれ設定します

「表に行を追加」アクションの設定が終わると「Apply to each」が自動的に設定されます

そしたら保存適用をクリックし、ボタンがページ内にできていることを確認します

発行処理

Power Automateフローの作成が終わり、ボタンを追加したら発行処理を行い、クラウド上でレポートを開きます

これでPower BIからエクセルにエクスポートできるようになります

<まとめ>

今回はPower BIからエクセルにエクスポートする仕組みを解説しました

紹介した内容はとにかくとても簡単です

Power Platformには簡単な事例が詰まっていることがよく分かります

継続的に今回のような有用なネタを投稿していきます

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

にほんブログ村

にほんブログ村 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へ

【ストアカ・レッスン】ここまでできるPower BI~計算、分析、操作、魅せる~

【初心者から脱却して、上司や同僚を唸らせるレポートを作成できるようになろう!】

Power BIにはまだあまり知られていない凄い機能がたくさんあります。しかも作成・操作は簡単です

動くグラフや分布図、スライサーの表示・非表示のボタン操作など「本や動画」では学びにくい機能を90分でコンパクトに解説します

挫折知らずのマンツーマンレッスンでPower BIの凄さをぜひ体感してください!

レッスンはオンライン・対面の両方で可能です

今なら、ブログ読者向けの特別優待券(3,000円引き)を期間限定で提供させて頂きます↓↓↓

期限:5月19日

料金(税込み):オンライン/9,800円⇒優待券使用で6,800円、対面/10,800円⇒優待券使用で8,800円

*対面の場合は開催は神楽坂になります(JR・飯田橋駅、東西線・神楽坂駅)

時間:90分(進行状況によってはもっと時間を要することもあります)

開催日程:別途参照(リクエストもお受付します)

講師:ガッツ鶴岡(当ブログ管理人、ストアカ・🏅ゴールドバッチ取得)

*ストアカ:日本最大級のスキルシェアサービス。2023年1月現在、登録生徒数680,000人、登録講師数50,000人を突破

内容

分析

分析の基本は「分けて比較すること」です

ではまずはどう分けたらいいのか?

その答えが分布図です

分布図を作成し、全体を鳥の目で俯瞰することで「どう分けるか?」のヒントを得ることができます

Power BIではこの分布図を簡単に作成できるだけでなく、分布図の粒度を自由自在に変更できます

今回のレッスンでは「分析」としてもう一つ、「動く散布図」を解説します

散布図は値をX軸とY軸の双方で表現できるので、会員分析などの大量のデータを分析するのにとても便利です

ただ、点が多すぎてよくわからないことがあります

ですので、点を一気に表示する代わりに時系列に分解して動かすことで数字の背後にあるストーリーを炙り出すというのが今回のレッスンの趣旨です

操作

スライサーはPower BIレポートに欠かせないアイテムです

このスライサーを使うことで数字をあらゆる角度から確認できるようになります

但し、スライサーでかけたフィルターを解除するのに手間がかかったり、レポート内で場所を取るのが難点です

今回のレッスンでは、このスライサーの難点をボタン操作で解決できるようにします

操作ボタンの作成は本や動画では学びにくい内容になっていますが、一度、手を動かしてしまえば以降は簡単に行えるはずです

ぜひ一緒に手を動かしましょう!

魅せる

今回のレッスンでは「魅せる」としてドリルスルー機能を解説します

Power BIレポートを見ていると「もっと数字を深堀してみてみたい」という箇所が出てくるはずです

そんな時に有効なのがドリルスルー機能です

上のGIF画像では、横棒グラフの「栃木商事」の箇所からドリスルーすることにより、「栃木商事」にフォーカスしたページに自動で移動しています

今回のレッスンでは、このドリルスルーをより実践で活用できるような形で解説します

計算する

Power BIで使用する関数はDAX関数と呼ばれます

このDAX関数にはエクセル関数と違い、幾つかの落とし穴があります

「なぜか思った通りの数字が表示されない」という体験をされた方も多いと思います

この落とし穴には幾つかの決まったパターンがあります

今回のレッスンではこの落とし穴を中心に解説を行います

このDAX関数については、習熟度が人によってまちまちだと思いますので、必要に応じてフォローアップを行います

レッスンの進め方

レッスンはマンツーマンレッスンです

ですので、挫折の心配抜きで学習に集中できます

レッスンの前には資料と演習用ファイルと完成版ファイルを送りますので、予習や復習も行えるようになっています

尚、レッスン後も質問等は受け付けし、継続的にサポートできるようにします

「オンラインだとどうも不安・・・」という方には対面レッスンもご提供できます

対面レッスンでは、PCについては必ずしもお持ちいただかなくても構いません

こちらのPCをお貸しいたします

対面レッスンの場所については神楽坂になりますので予めご了承ください

開催日時はリクエストもお受付しています

より多くの方にPower BIの魅力を伝えていきたいと思っています

レッスンでお会いできるのを楽しみにしております

ぜひこちらをクリックしてみてください!

もし、問合せ等がありましたらこちらにお願いします⇒問い合わせ

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

にほんブログ村

にほんブログ村 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へ