DAX 計算を使用して LuckyTemplates で特定の日付を選択する

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

このチュートリアルでは、 LuckyTemplates データ レポートでの特定の日付の選択またはフィルター処理について説明します。このチュートリアルで使用される資料は、からのものです。問題を解決する方法を学び、使用される手法を理解します。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

目次

LuckyTemplates のデータ レポートについて理解する

これは、使用されるサンプル データ レポートです。これは、1 つのテーブル ビジュアルと 2 つのスライサーで構成されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

目的は、スライサーの日付列で日付を選択できるようにすることです。つまり、スライサーで日付を選択すると、テーブルの視覚化には 7 日間隔で過去の日が表示されます。この例では、日付スライサーで選択されたデータは 2007 年 5 月 12 日です。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

表には、日付間に 7 日の差がある前の日付が表示されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

また、選択に基づいて日付の数を動的に表示するには、what if パラメーターを作成する必要があります。3を選択した場合、テーブル ビジュアルには 3 つの日付のみが表示されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

テーブルとビジュアライゼーションの再作成

最初のステップは、what if パラメータを作成することです。LuckyTemplates デスクトップ内で、[モデリング] タブに移動し、[新しいパラメーター]を選択します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

パラメータに名前を追加し、データ型をWhole Numberに設定します。次に、以下の図に示すように、最小値、最大値、増分値、およびデフォルト値を設定します。ボックスをチェックしてスライサーをページに追加します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

OKを押すとスライサーが生成されます。ドロップダウン ボタンをクリックし、[リスト] を選択して、スライサーをリストに変換します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に、切断された日付テーブルとして使用される複製された日付テーブルを作成します。パワー クエリ エディターに移動し、Dates を複製します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に、複製したDisDate の名前を変更し、「閉じて適用」をクリックします。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

LuckyTemplates への日付テーブルとスライサーの読み込み

複製されたテーブルが LuckyTemplates モデルに読み込まれたら、切断された日付テーブルの日付列を含むスライサーを作成します。DisDate テーブルを開き、Date をキャンバスにドラッグします。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に、ビジュアライゼーションをスライサーに変更します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

その後、スライサーの形式をListに変更します。視覚化は次のようになります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に、スライサーを複製し、データ フィールドを Dates テーブルの Date 列に変更します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

日付スライサーから日付を選択すると、マトリックス内で Sales テーブルに表示される行の数が制限されます。2005 年 3 月 14 日を選択すると、マトリックスにはその日付のみが表示されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

この設定を使用すると、結果と測定は機能しません。その理由は、対策が機能し始める前であっても、マトリックスへのアクセスがすでにフィルタリングされているためです。これらのフィルターされた値については、間隔を指定して日付を生成することはできません。

選択スライサーのメジャーの作成

選択範囲がスライサー上に配置されたときに、マトリックスを直接フィルター処理しない日付の設定を作成する必要があります。行列のフィルター処理は、スライサーから直接ではなく、DAX コードを通じて行う必要があります。したがって、DisDate スライサーから日付を選択しても、マトリックスには変更は発生しません。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

これは、DisDate テーブルが Dates テーブルとの関係がないために発生します。このため、切断されたテーブルが不可欠です。

Dates テーブルのスライサーを削除し、最初のメジャーを作成します。メジャーは、「表示する日付」スライサーから選択された値を取得します。作成する必要がある最初の変数はValuesToShowです。次に、それを「表示する日付」の値と一致させ、RETURN を入力して、選択された値を返します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

そのメジャーをマトリックスにドラッグします。[表示する日付] スライサーから 6 を選択すると、マトリックスの [メジャー] 列も 6 になります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に、スライサーで選択された切断された日付を取得する別の変数を作成します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

完了すると、DisDate スライサーで選択された値が [測定] 列に表示されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

計算テーブルの作成

スライサーで選択した日付から始まる 7 日間隔の日付のリストを作成します。次に、[表示する日付] スライサーの選択に基づいてマトリックスが日数を生成することを確認します。これを行うには、まず計算テーブルを作成する必要があります。

計算された表は、DAX コード内で日付がどのように生成されるかを視覚化するのに役立ちます。データ ビューに移動し、[新しいテーブル] をクリックします。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

変数SelectedDate を入力し、それをDATE関数と同等にします。次に、括弧内に日付を入力します。次に、行列に表示する日付の数を指定する別の変数を作成します。DatesToShowを入力し、日付の数と等しくします。

その後、7 日間隔の日付のリストを生成する別の変数を作成します。DatesListを入力し、GENERATESERIES関数を使用します。 、いくつかの引数を渡すことによって数値のリストを生成する関数です。

最初の引数に、開始値としてSelectedDate – (DatesToShow * 7)  を入力します。次に、終了値としてSelectedDateを入力します。最後の引数には、増分値または日付間の間隔として7を入力します。完了したら、関数を閉じてRETURNDateListを入力します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に、5 月 5 日から始まり 7 ずつ遡って 7 つの値を含むテーブルが表示されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

ここで、必要以上に多くの日付が作成されたことがわかります。元のサンプル レポートでは、同じ [表示する日付] と [日付] の選択で表示される最後の日付は 3 月 31 日でした。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

これを修正するには、DatesToShow 変数の値を 5 に変更するか、6 から 1 を減算します。この例では、6 から 1 が減算されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

その後、値が 3 月 31 日に終了することがわかります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

フィルターコンテキストへの日付の挿入

次に、これらの日付を使用して日付フィルター コンテキストに挿入する必要があります。フィルター コンテキストで売上金額を計算する必要もあります。したがって、GENERATESERIES構文をコピーし、メジャーに戻ります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

メジャーに新しい変数を追加し、DatesToShowと入力します。次に、その変数をGENERATESERIES構文と同等とみなします。構文内の変数をSelectedDateからDisSelectedDateに、DatesToShowからValuesToShowに変更します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

最後に、結果の変数を作成します。これをTotal Sales および DatesToShow に対してCALCULATE関数と同等にして、 GENERATESERIES構文から受け取ったすべての日付をフィルター コンテキストに挿入します。完了したら、RETURN関数にResultを入力します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

これで、DAX コードが要求している日付がマトリックスに表示されないことがわかります。マトリックスに Total Sales メジャーを取り込むと、コードが Sales 金額自体を返していることがわかります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

このメジャーの問題は、 GENERATESERIES構文で作成された日付に、切断された日付テーブルとのデータ系列があることです。これは、Date テーブルが Sales テーブルに接続されていないことを意味します。そのため、日付のリストがフィルター コンテキストに適用されたときに、Sales テーブルが含まれませんでした。

関数を使用して仮想関係を作成し、フィルター コンテキストを適用する必要があります。

TREATAS を使用して LuckyTemplates マトリックスの日付を修正する

GENERATESERIES構文から受け取った値を、元の Date テーブルの一部であるかのように扱う必要があります。これは基本的に、データ モデル内の Date テーブルの Date 列を使用してリネージを構築します。

したがって、Result 変数で、Total Sales テーブルの後にTREATASと入力し、引数を指定します。最初の引数には、リレーションシップのない列またはテーブルを指定します。この場合、DatesToShow列が使用されます。

2 番目の引数には、最初の引数の列の系統をマップする列を指定します。この例では、Dates テーブルの Date 列が使用されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

ただし、コードを修正しても、スライサーを使用すると、マトリックスの [測定] 列に正しい値が表示されません。列内の値が繰り返していることもわかります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

問題はコードの記述方法にあります。TREATAS はすべての値をフィルター コンテキストに適用し、選択された日付の既存のフィルター コンテキストをGENERATESERIES関数から取得したすべての値でオーバーライドします。

TREATAS での KEEPFILTERS 関数の使用

既存のフィルター コンテキストをオーバーライドせずにフィルターがフィルターに挿入されるようにするには、KEEPFILTERS関数を使用する必要があります。 CALCULATEのフィルタリング セマンティクスを変更します。

TREATAS関数の前にKEEPFILTERS を入力し、対策を確認します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

「メジャー」列内の値が繰り返されていないことがわかります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

5 月と 4 月の月を展開すると、[メジャー] 列の値が [総売上] 列の値と等しいことがわかります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

マトリックス内の Total Sales メジャーを削除し、表示する日付スライサーで数値を選択します。すると、同じ数の日付がマトリックスに表示されることがわかります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

LuckyTemplates マトリックスで日付が欠落している問題を修正する

このレポートのもう 1 つの問題は、 DatesToShowスライサーで 8 を選択しても行列が変化しないことです。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

スライサーで 9 を選択すると、マトリックスには 8 つの日付のみが表示されます。また、日付のリストに 3 月 17 日が含まれていないことにも気づきます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

その理由は、Date テーブルの日によっては、Sales テーブルに一致するトランザクションが存在しないためです。したがって、メジャーはそれらの日付に対して空白を返します。空白が返されるため、行列の背後で実行されるコードは結果から空白行を削除します。

LuckyTemplates は、返された結果を使用して行列にデータを入力します。したがって、一部の日は空白で返されるため、マトリックスでその日の売上とエントリを確認できません。

データに売上がない日について何かを表示したい場合は、メジャーに戻ってCALCULATE構文を削除します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

DAX を使用して LuckyTemplates で欠落している日付を解決する

DatesテーブルのDatesToShow列とDate列にTREATASを書き込むことにより、データ リネージュを作成します。次に、 TREATAS関数によって返されたすべての日付がフィルター コンテキストに含まれているかどうかを確認します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

そこから、複数の変数によって実行を分割します。変数名をResultからCreateDataLineageに変更して、 TREATASの結果が格納されていることを示します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に、マトリックスからのフィルター コンテキストに表示されるすべての日付を保持する別の変数を作成します。変数名としてVisibleDateを入力し、 Date列に を使用します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

次に行うことは、 TREATAS関数の結果に売上金額を含む列を作成することです。変数名としてDatesWithSales を書き込み、 CreateDataLineage変数に対して 使用します。

関数内で新しい列を作成し、行コンテキストの Total Sales メジャーを使用してSales Amountという名前を付け、コンテキストの遷移を開始します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

その後、DatesWithSales変数に格納されているすべての日付がフィルター コンテキストに含まれているかどうかを確認する変数を作成します。変数名としてIsDateInFilterContextを入力し、 関数を使用します。

そこから、関数の最初の引数としてDatesWithSalesを記述します。次に、第 2 引数としてDates[Date] IN VisibleDateを入力し、 DatesWithSalesテーブルに含まれる日付がVisibleDate変数に含まれているかどうかを確認します。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

作成する必要がある最後の変数はResultです。IsDateInFilterContext変数に対して 関数を使用します。以前は含まれていなかった日数を含めるには、[@Sales Amount] + 0と書き込みます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

すべてを終えると、マトリックス内に欠落していた日付 3 月 17 日が表示されます。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

元の小節で +0 を使用する

前の手順では、ファクト テーブルにトランザクションがないすべての日付を含めるメジャーを構築する方法を示しました。ここで、作成した元のメジャーで+ 0を使用すると、メジャー列の値はすべて 0 になります。

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

DAX 計算を使用して LuckyTemplates で特定の日付を選択する

その理由は、Result変数に空白または Sales 金額が含まれているためです。したがって、0 を追加すると、空白が 0 に置き換えられます。集計列によってデータセットから空白行が削除されることに注意してください。これらを LuckyTemplates に返すと、空白ではなく限られた行のみが表示されるようになります。

ただし、0 が追加されるため、集計列は強制的に行を保持します。次に、Dates テーブルに存在するすべての日付を含むテーブルが返され、該当する場合、または空白の場合は 0 が表示されます。

これが、フィルター コンテキストに表示され、 DatesToShow変数に含まれる日付に 0 を追加するだけで済むようにメジャーを書き直す必要がある理由です。


Power Automate コネクタ: 数値、テキスト、日付時刻
拡張日付テーブル Power Query M 関数
Power Query LuckyTemplates | Power Automate コネクタ 日付フィールドに基づいて新しいレコードを作成する

結論

LuckyTemplates マトリックスで特定の日付を選択できるデータ レポートを作成するには、計算テーブルとDAX 関数を使用する必要があります。DAX の関数とメジャーは、結果を簡単に取得できる方法で記述する必要があります。


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて