タグ別アーカイブ: カレンダー

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使用時に罠に陥り易いところ~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へ

フリーアドイン~エクセルシート上にカレンダーを!~

エクセルでも、スマホのようにアプリをダウンロードできる仕組みがあるのをご存知でしょうか?

エクセルのアプリ(アドイン)は無料なので、ぜひ有効活用して業務の削減につなげていきましょう!

前回は、地図上にグラフを作成するアドインを紹介しました

今回紹介するのは、エクセルシート上でカレンダーを表示できるアドインです

アドインの名前は「Mini Calendar and Date Picker」といいます

これが優れもので、このアドインを使いこなせば、日付や時刻関連のショートカットキーを覚える必要がなくなります

加えて、このアドインは純粋にカレンダーとしても、とてもすぐれていますよ!

1.「Mini Calendar and Date Packer」の入手・設定

エクセル画面上の挿入タブ内、「アドインの入手」から「Mini Calendar・・・」アドインを入手してください

アドインの入手法や設定方法の詳細については、ぜひ過去の記事をご参照ください

2.シートへの日付・時刻の挿入

シートにアドイン「Mini Calendar・・・」を設定できたら、日付を挿入したいセルにカーソルを置き、カレンダー上の好きな日付をクリックしましょう

今回は、12月1日の日付をカレンダー上でクリックしたので、「12月1日」の日付がセルに挿入されました

Mini-Calendar-Date
日付挿入

次に時刻を挿入します

時刻を挿入するには、下の画面の黄色の箇所をクリックします

そうすれば、時刻がセルに挿入されます

日付や時刻の表示形式については、以下の画面にて、セル毎に事前設定しておくと便利です

3.曜日設定

「Mini Calendar・・・」の下の画面に、各種ボタンが並んでいます

この各種ボタンの内、左から3番目をクリックしていくと、カレンダーの曜日設定を自由に変更していくことができます!

4.週番号の表示・

「Mini Calendar・・・」の画面下、右から3番目のボタンをクリックすると、週番号が表示されます

下は2021年の1月の表示です

2021年12月は以下のような週番号の表示になります

以上で、今回の解説は終了します

2~4.で3つのアドイン機能を紹介しましたが、特に2.の日付や時刻の挿入は便利だと思います

祝日の表示がない点だけは残念ですが、カレンダーを見ながら手動で日付や時刻をシート上に入力する必要もないですし、ショートカットキーによる操作も必要がなくなります

皆さん、ぜひ有効活用してください!

但し後々、このアドインが有料化されることもありえるかと思いますので、その点は注意が必要です

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

にほんブログ村