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

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

このチュートリアルで説明した、各月の最初の N 営業日を動的に比較する問題をもう一度見てみましょう。この問題は、フォーラムの LuckyTemplates メンバーからのクエリに基づいていました。彼は、特定の月の最初の 5、10、15、20 の請求可能日 (週末と休日以外) を動的に調べて比較したいと考えていました。前の月。

パワー クエリを使用する代わりに、DAX コーディング言語ソリューションを考え出します。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

最初のビデオでは、この問題を解決する方法についてのパワー クエリ ソリューションを考え出しました。しかし、その後、LuckyTemplates の専門家の 1 人、Antriksh Sharma が、さらに深く掘り下げる価値のある、素晴らしく効率的な対策を思いつきました。彼がメジャーの開発に使用したテクニックのいくつかについて説明します。これにより、DAX ツールボックスに追加のツールが提供されます。

確かに私にとっても、これを検討した他の専門家にとってもそうでした。月をまたいだ同等の営業日の同一比較は、一般に、多くの状況で使用できる貴重なパターンです。

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

パワークエリに飛び込んで、Antrikshがここで何をしたかを見てみましょう。Month & YearTotal Sales、そして最後に、開発した what-if パラメーターに基づいて電力クエリを使用して選択したN 営業日の Total Sales があります。

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

アントリクシュはまったく異なるアプローチをとり、驚くほど短期間でこの問題全体を解決しました。コマンドの使用です。

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

これはあまり頻繁には使用しない DAX 関数ですが、この種の問題には最適です。SQL BI DAX ガイドを見ると、GENERATE 関数は 2 つの異なるテーブルを入力として使用し、SQL コマンド CROSS APPLY と同等の処理を実行するテーブル関数であると記載されています。

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

したがって、ベース テーブル (Table1) を取得してそれを反復処理し、次に 2 番目のテーブル式を取得して最初のテーブルの各行に対してそれを評価し、出力としてテーブルに返します。

Antriksh の対策を採用してテーブルに落とし込んでみましょう。前回実行したパワー クエリ ソリューションとまったく同じ結果が生成されることがわかります。これは良いことであり、両方の対策が非常にうまく検証されています。

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

この対策を分解してみましょう。ここで適用される最初のフィルターは Dates[IsBusinessDay] = TRUE です。これにより、拡張日付テーブルの IsBusinessDay フィールドに基づいて、週末および休日以外の日付がすべて取り出されます。

これについては、最初のチュートリアルで詳しく説明し、それを休日のテーブルに結び付ける方法についても説明しました。

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

この興味深い部分は、2 つのテーブル入力にあります。最初のテーブルは、日付テーブルの月と年フィールドの 1 列のテーブルです。

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

しかし、2 番目のテーブル入力では興味深いことが起こります。Antriksh はを使用し、動的パラメーターを TOPN の行数として使用しました。

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

Total Salesメジャーは 2 番目のテーブルにアタッチされ、その後、最初のテーブルに適用されます。

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

目次

DAX コーディング言語を使用した複雑なメジャーの理解

このような複雑なメジャーが何をしているのかを理解する最も簡単な方法の 1 つは、表形式エディタにアクセスすることです。この式を見て、最初にこの TOPN 式が何をしているのかを理解することができます。

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

TOPN 部分をコピーして、新しいDAX クエリを作成しましょう。DAX クエリは EVALUATE で始まることに注意してください。

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

TOPN 部分を貼り付けると、販売注文テーブルから最初の 5 つの日付が取得されていることがわかります。TOPN には、sales テーブル内のすべての注文日の値で構成されるテーブルがあります。

この TOPN 関数は、what-if パラメーターの値 (この場合は 5) を取得し、それを販売注文日フィールドに適用します。次に、そのフィールドに基づいて、フィルター コンテキスト内の最初の 5 つの日付を昇順で取得します。

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

追加のフィルター コンテキストがないことを考えると、テーブル全体から最初の 5 つの日付を取得するだけです。

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

@Sales 列は、適切なフィルター コンテキスト内の総売上高を TOPN テーブルに追加しているだけです。

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

これまでのところ、月と年の最初のテーブル、売上テーブルの最初の N 日付の TOPN の 2 番目のテーブル、そしてそれに関連付けられた総売上高ができています。

DAX コーディング言語での GENERATE テーブルの使用

この GENERATE テーブルが何をしているのかを見てみましょう。表形式エディターに戻り、新しい DAX クエリを作成します。

いつものように EVALUATE から開始し、コードの GENERATE 部分に貼り付けて、「5」をクリックします。

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

最初のテーブルの各行が反復され、@Sales 関数のコンテキストで評価された TOPN テーブルの 5 行と結合していることがわかります。

最初のテーブルの最後に到達するまで、4 月の最初の 5 営業日、5 月の最初の 5 営業日、6 月の最初の 5 営業日というように続きました。

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

これはまさに私たちが必要としているものであり、これらの値を合計するという比較的単純な問題になります。結果 (GENERATE 結果のテーブル変数) が得られたので、@Sales 関数を合計する必要があります。

コンテキスト内で、4 月の最初の 5 営業日、5 月の最初の 5 営業日などを合計して合計 $23,737,430 になるまで集計します。この場合、運用する月と年のコンテキストはありません。 。

これにより、@Sales 列全体が合計され、パワー クエリ ソリューションで取得したのとまったく同じ合計が得られます。

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

スライサーを 10 に変更すると、パワー クエリで行ったのと同じ結果が DAX コーディング言語で動的に得られることがわかります。

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

また、加えた変更を反映するために動的に調整される下部の棒グラフもあります。

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

小節タイトルを動的に調整する

もう一つ紹介したいトリックがあります。what-if パラメータに動的な調整を作成し、それをメジャー タイトルに動的に結び付けることができます。

たとえば、上部のスライサーを 15 に変更すると、下部のメジャーの名前が「Total Sales for the First 15 Business Days of Each Month」に動的に変更されます。

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

DAX では、条件付き書式設定を使用してこれを簡単に行う方法があります。基本的には 3 つの文字列を取得するだけです。1 つ目はTotal Sales for Firstで、それを what-if パラメーターから取得した値と連結し、それをタイトルの残りの部分に結び付けます。

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

次に、ビジュアルに移動し、タイトルの条件付き書式設定に移動して、fxをクリックします。

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

フィールド値によって書式設定し、動的なタイトル メジャーを選択します。これにより、what-if パラメーターの選択が変更されます。

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

結論

私たちが現在持っているのは、DAX コーディング言語を使用した完全なソリューションです。GENERATE 関数を使用してそれを行うための非常に創造的で効率的な方法について説明しました。素晴らしい DAX 知識を私たちに共有してくれた Antriksh に感謝したいと思います。私は彼の 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 ゲートウェイとは何ですか? 知っておくべきことすべて