タグ別アーカイブ: DAX

カレンダーテーブルを実際に作成する~カレンダーテーブルを活用するツアー~

今回は前回の内容に従って、カレンダーテーブルを実際に作成してみましょう!

カレンダーテーブルを作成する時にDAX(エクセルのワークシート関数のようなもの)も使用します

元のデータはこちらの3つのテーブルになります

ですので当初のリレーションはこのようになっています

こちらにカレンダーテーブルを組み込む形になります

新しいテーブルの作成

カレンダーテーブルの作成は最初、こちらをクリックするところから始まります

すると数式が入力できるようになります

左辺をCalendarとし、右辺にCaを入力すると、入力するDAXの候補がでてきます

こちらの候補から「CALENDAR」をTabキーで選択してください

CALENDAR()の〇括弧:()の中には、連続した日付を作成する際の開始日終了日を指定します

YEAR/年とMONTH/月の列の作成

連続した日付データができたので、今度は日付データを使用してYEARとMONTHの列を作成します

上の画像の「新しい列」をクリック後、まずはYEARの列を作成します

YEARの列を作成するにはDAX「YEAR」を指定します

その際に、コツが一つあります

丸括弧:()の中でを指定すると()中に入れる列名の候補が選択できます

今回は’Calendar[Date]の列を指定して、日付列(2021/04/01⇒2021)を年に変換して列を作成します

今、DAX:YEARをして列を作成しましたが、通常のエクセルのワークシート関数を使用した時との違いは、セルではなく列単位で関数を使用しているという点です

MONTHの列もYEARの列と同様に作成します

会計年度の調整

前回も触れましたが、3月決算の場合には会計年度を調整する必要があります

例えば、2022年1月の場合には、上記のYEAR関数で作成した列には「2022」と表示されます

ただ実際には会計年度は2022から1を引いた「2021」になります

ですので、MONTH列をもとにしてIF関数により1月~3月の会計年度を調整します

if(MONTH([Date])<4,YEAR([Date])-1,YEAR([Date]))

ちなみに四半期の列を作成するQUARTER関数を使用すると次のようになります

4月が第2QUARTERとなります

これは12月決算をもとにしてDAXが作成されているからです

この場合も3月決算にあわせてIF関数を使用します

IF(MONTH([Date])<4,4,if(MONTH([Date])<7,1,IF(MONTH([Date])<10,2,3))

リレーションシップの作成

カレンダーテーブルをひとまず、形にはしました

これだけでは、カレンダーテーブルを活用することはできません

他のテーブルとリレーションシップを作成・紐づけを行う必要があります

リレーションシップを作成するには、以下の画面で操作が必要です

こちらの画面で売上データの「日付データ」とカレンダーテーブルの「Date」を紐づけます

操作はいたって簡単です

該当する列の上でドラックをするだけです

これで下の画像のようなリレーション(売上データ:多⇒Calendar:1)が完成します

これで売上データとカレンダーテーブルを一緒に活用できるようになりました

では、レポート画面で「マトリックス」を作成してみましょう

マトリックスの行にカレンダーテーブルの「YEAR」を配置します

YEARの配置もドラックで行います

そしてマトリックスの値に売上データの売上金額を配置します

すると上記の画像のように「年」毎に売上金額の合計が算出されています

これはカレンダーテーブルと「多:1」の紐づけが行われているからです

では試しに、リレーションを消してみます

すると、以下のように2021年も2022年も同じ金額になってしまいます

これは、年ごとの多:1の紐づけが行われないまま、単純に売上金額の合計が算出されるからです

<まとめ>

今回はカレンダーテーブル自体を作成しました

エクセルと違い、テーブルも列も一から作る点がとても斬新だと思います

ただ、これだけだとまだ実用的なカレンダーテーブルとはいえません

次回、調整を加えていきたいと思います

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

にほんブログ村

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

前年の値や累計値を自動計算する~カレンダーテーブルを活用するツアー~

今回はカレンダーテーブルを活用して、時系列に関わる計算を行っていきます

前回でカレンダーテーブルを活用する準備が完全に整った状態です

数字を語る時にかならず「比較」が必要となりますが、この比較を自動的に行えるようにしましょう!

今回から「メジャー」という仕組み使用します

このメジャーの仕組みはエクセルのワークシートにはない仕組みです

メジャーはテーブルでもなく列でもなく、?の箇所の数字を埋めてくれる仕組みです

あくまで前後の文脈が決まってから数字が計算されます

例えば、「今年の4月」の数字があったとしたら、前年の4月の数字を、「2021年」の数字があったとしたら「2020年」の数字を自動的に穴埋めする仕組みです

このメジャーをつかいこなせば、レポート作業は格段に効率化されます

前年の値を計算するメジャーを作成する

まずはメジャーをクリックしてみましょう!

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

すると、下の画像のように数式を入力できるようになります

ここからはカレンダーテーブルを作成した時の要領で行えます

前年 = CALCULATE(SUM(‘売上データ'[売上金額]),DATEADD(‘Calendar'[Date],-1,YEAR))

これで、前年のメジャーが作成されました

このメジャーをマトリックスの「値」に配置してみます

すると、マトリックスの時系列の表示に合わせ、前年の値が埋められて表示されます

この前年の値の式はCALCULATE関数を基にして計算されます

前年 = CALCULATE(SUM(‘売上データ'[売上金額]),DATEADD(‘Calendar'[Date],-1,YEAR))

CALCULATE関数内では、SUM関数が使用されていますが、このSUM関数で売上金額の合計金額が算出されます

但し、売上金額を算出する際に「DATEADD関数」でフィルター処理が行われる仕組みです

ちなみにDATEADD関数の真ん中に「ー1」が指定されていますが、こちらをー2に指定すると前々年の数字が算出されます

仮にDATEADD関数の真ん中「ー1」のままで「YEAR」を「MONTH」に置き換えると前月の数字が算出されます

累計の値を算出するメジャーを作成する

今度は累計を算出するメジャーをTOTALYTD関数を使用して作成してみましょう

計算式は次の通りとなります

累計 = TOTALYTD(SUM(‘売上データ'[売上金額]),’Calendar'[Date])

実際にマトリックスに配置してみると、確かに月ごとの加算は行われています

但し、4月の累計値は4月の数字で開始されていません

これは、累計処理が1~12月を会計年度として処理されているからです

こちらを4月~翌年3月の仕様に変えてみます

こちらは、累計処理の終了基準を「3/31」で明確に示しています

これで累計処理が正しく行われます

前年比などの指標

前年比などの指標はクイックメジャーで簡単に作成することができます

クイックメジャーの中には様々な指標があらかじめ準備されています

試しに「差の割合」をクリックしてみます

すると、右のフィールドの値を左側の該当箇所にあてはめれば計算が行われるようになっています

数字を当てはめて「OK」ボタンを押せばメジャーが設定されます

新しく作成されたメジャーをマトリクスに配置すると次のようになります

「前年との相違は売上金額 %」となっていますが、こちらは変更することができます

「前年との相違は売上金額 %」を選択し、数式バーから変更します

<まとめ>

今回は前年の数字などの数字を算出するメジャーを作成しました

このメジャーを使用するとレポート作業の効率は格段に向上します

今回のシリーズでカレンダーテーブル活用に関する一連の必要事項を紹介しました

ぜひ、実際に手を動かしてものにしてみましょう!

最後に、「年」⇒「月」と階層を変えるドリルダウンの仕組みはとても便利ですので、こちらも有効活用しましょう

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

にほんブログ村

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

KPIカードによる達成率・傾向の表示~様々なカスタマイズ可能~

【ダッシュボードにKPIカードを挿入して、数字にメリハリを付けよう】

数字を見る際に必ず必要なのは指標との対比です。Power BIのKPIカードを使えば、指標の達成率をわかりやすく示すことができます

KPIカード

Power BIのKPIカードを使おうと思っても、良く使い方や設定方法が分からない・・という方も多いと思います

「この折れ線はどのことなんだろう?」「%がでているけどなんの数字かな?」

こう思った方も読者の中にはいらっしゃると思います

今回は他のグラフとの対比や、デフォルト設定の場合とを比較しながら「KPIカードとは?」について解説したいと思います

ビジュアルのビルド(初期設定)

ビジュアルのビルドでは3つのフィールドを配置します

①値、②トレンド軸、③傾向

恐らく、この日本語ではどのフィールドを配置するかのイメージがわかないと思いますので、まずは①~③が何なのかを解説したいと思います

①の値と③の傾向は対比させる組み合わせです

言い方を変えると、①がうまくいっているかどうかを③と対比させます

記事の冒頭のKPIカードでは以下のように設定しています

では②のトレンド軸は何かというと、①が③に対してうまくいっているかどうかについて、時系列でいえば「何の軸をもって適切にいえるようにするか?」ということを設定する軸です

記事の冒頭のKPIカードでは月単位です

上の内容を折れ線グラフを参考にして解説してみます

①の値が上の折れ線グラフの「売上金額」、②が「会計年度 年月」、③が計画値です

上の折れ線グラフを見てもらうとわかるのですが、KPIカード内のグラフは上の折れ線グラフの「売上金額」と一緒です

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

但し、Y軸の最小値が売上金額の最小値になるように調整されているので、もしかしたら売上がのように見えるかもしれません

この点は要注意が必要です

ではKPIカードの中の「36,400」と「25,572」そしてカッコの中の「+10,828」などは何の数字なのか?③の傾向はどのように反映されているか?という点については次で解説します

ビジュアルの書式設定

吹き出しの値及び日付

ビジュアルの書式設定で「吹き出しの値」にあたるのが下の画像の箇所です

ではこの値が何かについては、テーブルと両方見るとよくわかると思います

つまり何らかのフィルター処理をしない限りはトレンド軸で設定した範囲の最終の値です

上の画像では「2022年3月」と表示されていますが、デフォルトでは表示されません

こちらのトレンド軸の最終を表示したい場合は下の箇所で調整します

ターゲットラベル

前述の③:傾向に設定した内容はこちらのターゲットラベルの「」「ゴールまでの距離」に反映されます

上の画像の「25,527」はトレンド軸の最終の傾向/計画の内容になります

デフォルトでは下の画像のように「計画」の文言は「目標」と設定されます

こちらはラベルの箇所で修正します

ゴールまでの距離

カッコの中は③の「傾向」で設定した内容と①の「値」で設定した内容の差異を絶対値、もしくは%が表示されています

上の画像のカッコの中はゴールまでの距離で調整します

デフォルトでは%/パーセントだけの表示になります

ですので、下の画像の「スタイル」の箇所で必要に応じて調整を行います

その他

アイコン

上記の黄色の箇所は必要に応じて「非表示」にすることもできます

こちらはアイコンの箇所でオフにします

トレンド軸

①値が対比対象の③傾向を上回っている場合には「グラフ」や「フォント」が上記画像の正しい色で指定した色で表示されます

逆に下回っている場合には正しくない色で表示されます

デフォルトの設定では正しくない色は緑、正しくない場合には赤になっています

こちらも必要に応じて調整が必要です

低い方が良い場合

数字は全般的に目標や計画を上回った方が適切だと判断されますが、経費などの場合は逆が適切になったりしますので、調整が必要な時があります

「逆の場合」の調整箇所は2か所あります

<まとめ>

今回はKPIカードを使用してダッシュボード内に「達成状況や傾向」を表示する方法を解説しました

非常に機能が豊富で、Power BI内の日本語の表示が分かりにくいので扱いにくい面もありますが、このKPIカードをダッシュボードに挿入すると、数字の中身が分かりやすくなります

但し、

このKPIカードを使う場合「この数字は何か?」「グラフは何を示しているか?」については、読み手に対して「補足」が何らかの形で必要かと思います

後、デフォルトの設定のままだと分かりにくいのでぜひ「日付/トレンド軸最終」や「ラベルの文言」は調整しておきましょう!

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

にほんブログ村

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

条件付き書式をカスタマイズして魅力的なグラフを作成する~DAXを使いこなす

エクセルでもビジュアルはかなりカスタマイズできます!でも、Power BIだと更にカスタマイズができます!!

今回は、DAX式と条件付き書式を組み合わせて平凡な縦棒グラフを、周囲を「あっと」言わせるグラフにしましょう!

Before

上の画像が今回の工夫をする前の、通常の縦棒グラフです

こちらのグラフの横棒の色を、値に応じて変更できるようにします!

After

BeforeとAfterのグラフを見比べてみていかがでしょうか?

Afterだと広大な棒グラフの砂漠に「良いところ」「悪いところ」のメリハリがつきました

エクセルではここまでできません

しかも、Power BIのDAX式と条件付き書式を使えばそんなに難しくありません

ぜひ試してみてください!

ポイント

ポイントは2つあります

色指定を行うメジャー/ColorをDAX式を使い作成するのが一点目です

二点目は、条件付き書式に一点目の色指定を行うメジャーを組み込みます

色指定を行うメジャー

今回の場合だと、月の売り上げ金額に応じて色を変更します

ですので、色指定の対象となる値は売上金額です

売上金額に応じて複数の条件を設定し、条件に対応する色を指定します

関数はSWITCH関数を使用します

SWITCH(対象の値,条件式1,結果1,条件式2,結果2・・・)

上の式で結果/色指定はどうしましょう?

“RED”などで指定する方法もあります

今回はHEX値を使用します

こちらのHEX値はエクセルシートから抽出できます

HEX値を反映したメジャーは次のようになります

Color = SWITCH(TRUE(),’テーブル'[当月売上]<25000,”#FF0000″,’テーブル'[当月売上]<30000,”#FFFF00″,”#0099FF”)

条件付き書式の設定

条件付き書式は次の画像の箇所から設定します

データ形式スタイルは「フィールド」を指定します

基準にするフィールドには、前述の色指定のメジャーを設定します

これで、値に応じて色が変更になる棒グラフが作成できました

<まとめ>

今回はグラフの色を値に応じて変更できるようにしました

これで、平凡な棒グラフにメリハリがつきます

実はエクセルでも最高値の色を変える方法は紹介していました

ただエクセルでは2色が限界でした

Power BIでは値に応じて色を臨機応変に変更できます

中には今回紹介した「SWITCH関数がどうも馴染めない」という方もいらっしゃると思います

その場合はエクセルのワークシート関数「SUMIFS関数」などで慣れを作成してみてください

長文を最後までお読み頂き誠にありがとうございました

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

にほんブログ村

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

予実対比のグラフをPower BIで作成する~DAX使用/変数込み~

以前、対比表のグラフをエクセルで作成する方法を紹介しました。今回はPower BIで「対比表のグラフ」を作成する方法を紹介します

超過/紺と未達額/赤をメリハリをつけて表示できるので、対比を示すダッシュボード内に配置するのにぴったりなコンテンツです

このグラフはDAXの作り方を工夫すれば意外と簡単に作成できます

ポイント

詳細は過去の記事を参照して頂けると嬉しいのですが、大きくわけてポイントは2つあります

積み上げ棒グラフ

積み上げ棒グラフの内訳は3つに分けます

それぞれ、メジャーで設定します

 基本 ⇒計画、実績の低い方

 超過 ⇒実績-計画

 未達 ⇒計画-実績

折れ線グラフ

実績の横棒は折れ線グラフのマーカーで作成します

折れ線の実線は、太さをにします

メジャーで使用するDAX

基本

MIN関数を使い、計画金額と売上金額(実績)の合計額の低い方を表示できるようにする

超過

変数とIF関数を使用し、実績が計画を超えている場合には差(実績ー計画)を表示できるようにします

*VARを使用して変数設定、RETURNで関数の計算結果を返します

未達

変数とIF関数を使用し、計画が実績を超えている場合には差(計画ー実績)を表示できるようにします

*VARを使用して変数設定、RETURNで関数の計算結果を返します

グラフ設定

グラフ/ビジュアルは積み上げ棒グラフ+折れ線を使用します

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

メジャーの配置

設定したメジャーは次の画像のように設定します

折れ線マーカーの設定

折れ線の太さ

次の画像のようにストロークの幅をで設定します

マーカー

まずマーカーをオンにします

そしてマーカーの形(図形)とサイズを次の画像のように指定します

これでグラフの色などを調整して完成です

未達の色は赤にすると、とてもリアルに未達度合いが伝わりやすくなると思います

<まとめ>

今回はDAXのIF式を活用し、対比をメリハリをつけて表示するグラフを作成しました

元データについては、今回は詳細に言及しませんでしたが、計画と実績を対比する場合にはカレンダーテーブルの活用も大きなポイントの一つとなります

計画とカレンダーテーブルを連携する場合には計画側の形式もポイントになります

例えば「2022年1月」を2022/01/01の日付を設定したとしても、日付形式でないとカレンダーテーブルとのリレーションは有効になりません

詳細についてはこちらの記事にまとめであります

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

にほんブログ村

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

DAX使用時に罠に陥り易いところ~Power Pivot、Power BI~

今回の記事では、DAXを使用していて罠に陥り易いところを解説します

DAXは登場してまだ日が浅く、あまり事例が溜まっていないこともあるので、まだDAXを始めたばかりの方は

「あれ、なんでうまくいかないんだろう・・・」

ということも多いと思います

特にリレーション関連では不可解に感じることもあるかと思います

この記事では、自身の経験も含めて「思わぬところでハマった」箇所を解説していきます

ポイントは次の5つとなります

・データ変更時の更新処理

・DAX式の()の数の確認

・事業年度の月次の並び

・1対多の関係性の確認

・Power Query内のデータ形式の確認

更新漏れ

これは物凄い単純なのですが、急いでいる時などにハマる方もいらっしゃると思いますので紹介します

例えば、上の画像のように空欄があるデータがあり、後から元データの空欄を埋めたとします(✕✕物流

ところが「Power Pivot for Excel」の画面には反映していないので「なぜだ?」というケースがありました

元のデータを変えた場合には下の画像の黄色の箇所「最新の情報に更新」にて更新処理を必ず行いましょう。すぐに元データの変更が反映されます

【)】の抜け

意外とエラーの原因が分からないのが左括弧/に対応する右括弧/)の抜けです

特に変数を使うケースなどは分かりにくいです

赤字の波線が出たら、落ち着いて「赤字の波線」がではじめたところのの組み合わせを観察しましょう

下の画像では黄色の箇所でがぬけています

事業年度の月次表示

日本では多くの事業年度は4月から翌年の3月までです

その際、IF式を使って事業年度を調整する方も多いと思います

ところが、月の表示を組み合わせると下の画像のように「1~3月」が思うような位置に並びません

上の画像の場合で言えば、本来は2021年度は4月から始まり、1~3月は最後に回って欲しいのです

この場合は、事業月を「yyyy年MM月」を表示する月を作成した方が早いです

下の画像では「FORMAT」を使用して表示を「yyyy年MM月」に変えています

これで月の表示も狙い通りになります

リレーションが効いていない

DAXを使う際に、厄介なことの一つがリレーションが効いてない時の対処です

リレーションが効いていないと、全て同じ数字になるなどの状態になります

この場合は下の画像のようにアラームは出ています

この様なときは丁寧にリレーションの状況を確認して、の漏れを見つけましょう

リレーションの線が破線になるケース

しっかり抜け漏れなくリレーションを作成しても、リレーションの線が破線になり、リレーションが有効にならないケースがあります

中にはうっかり「非アクティブ化」をクリックしてしまい、波線になっていることもあるかと思います

これはDAXを始めた頃は解決方法が分かりにくいかと思います

後、原因が分かりにくいのが次の画像のケースです

上の画像では「▶」の向きがになっており、本来「1」は予定表の方についているべきなのです

この矢印の逆向きの話しについては「1対多」の関係を考慮する必要があります

特に管理画面ではなく、2つのテーブル間でクリック処理によりリレーションを作成する場合に注意が必要です

ちなみに上の画像内のは「多」という意味です

下の画像は注文データテーブルとカレンダーテーブル(グレーの線)の組み合わせになっています

カレンダーテーブルには「2019/04/02」はつしかありません

一方、注文データテーブルには「2019/04/02」が複数存在します

ですのでカレンダーテーブルの「2019/04/02」を「2019/04/02」が多数存在する注文データテーブルの方向に紐づける必要があります

上記の説明が、少し分かりにくいと感じた方は次のケースで考えてみてください

カレンダーテーブルに多数「2019/04/02」が存在し、紐づけようがなくなってしまう場合です

上の画像のように本来は1になっているべきカレンダーテーブル側に「2019/04/02」が複数ある場合、カレンダーテーブル内のABのどちらを注文テーブル側の「2019/04/02」と紐づけたらいいか分からないですよね

つまり、紐づける方向は多ではなくからになるということです

では、具体的にリレーションの線が破線になっているのを修正したいと思います

1になるカレンダーテーブルの予定表から注文データに線を引っ張ります

こうすることで正しいリレーションを作成することができます

正しくリレーションが作成できている場合にはリレーション管理画面は次のようになっています

1の方がにありますので、この点もご注意ください

リレーションの方向が一致しているのにリレーションが有効にならないケース

Power Queryで作成したクエリをデータモデルに追加した場合には、クエリ内のデータ形式が一致せずに2つのテーブルが紐付かず、リレーションが効かないケースがあります

このケースが一番、罠にハマるパターンの中で原因に気づけないケースです

但し、データ形式を変えればあっさりリレーションは有効になります

これはAccessと違い、テーブルを構築する際にPower PivotやPower Queryの場合にはデータ形式を設定する必要がないことと深く関係があります

下の画像は、Accessの画面ですがテーブルを作成する際の画面です

こちらは、Power Queryエディタの画面です

Power Queryではデータ形式は変更できますが、基本的には自動設定です

特に日付データの場合は型式が「テキスト」でも「日付」でも見た目が一緒なので、既存のデータモデルとの型式の違いに気づきにくいです

ですので、特にカレンダーテーブルとのリレーションを作成する時にはPower Query側の日付形式にはご注意ください

<まとめ>

今回はPower PivotやPower BIでDAXを使用する時にハマりやすいものを、小さいものから大きい物まで幅広く紹介しました

ポイントをまとめると次のようになります

・データ変更時の更新処理

・DAX式の()の数の確認

・事業年度の月次の並び

・1対多の関係性の確認

・Power Query内のデータ形式の確認

ぜひ上の5つを意識しながら、DAXを活用してみてください

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

にほんブログ村

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