Python における Self とは: 実際の例
Python における Self とは: 実際の例
このブログ投稿では、タイム インテリジェンスにおけるいくつかの厄介な問題、特に週の粒度によって引き起こされる問題や、1 年の週数が不規則であることによって引き起こされる可能性のある問題を扱います。オフセットを使用して、DAX で正確なタイム インテリジェンスを実現します。
今日は興味深いシナリオをご用意しました。これは最近、LuckyTemplates フォーラムで何度か話題になりました。人々がやりたかったのは、ビジュアル (折れ線グラフや棒グラフなど) を取得し、開始日に動的に変化させることでした。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。
この場合、石油 1 バレルあたりの平均スポット価格を計算したのと同じデータセットを使用しました。常に 1 月の初めから開始するのではなく、ビジュアルをクリックして別の開始日に変更しながら、常に 1 年間のデータを表示できるようにしたいと考えました。
目次
DAX のタイム インテリジェンスのサンプル シナリオ
このテクニックを使用する理由はいくつかあります。計算方法に関して常に再調整されるメトリクスがある場合、これを使用できます。再調整以降のデータのみを表示したい場合があります。
これを使用するもう 1 つの理由は、これをアニメーション化して視覚化したい場合です。これは基本的にデータを取得し、再生アクセスをクリックすると動的に表示します。
このビジュアルでは、開始日を月ごとに変更して、12 か月の期間で時間の経過とともにどのように変化するかを示すことができます。これは、さまざまなビジネス ケースにとって興味深い便利なビジュアルですが、理論的には、DAX とデータ モデリングに関連する多くの重要な問題も表しています。
LuckyTemplates に移動して、最初にデータ モデルを見てみましょう。これは、拡張日付テーブルと日付に接続されたスポット価格テーブルを備えた非常に単純なデータ モデルです。
DAX のタイム インテリジェンスにオフセットを使用する
これから取り組むことの 1 つはオフセットです。拡張日付テーブルのオフセットは動的に計算されます。レポートが更新されるか開かれるたびに、M コードが実行されます。たとえば、月次オフセットでは、現在の月に 0、前月に -1、2 か月前に -2 が割り当てられます。将来を見据えて、翌月は +1、2 か月後は +2 が割り当てられます。
これは単純な概念ですが、DAX でタイム インテリジェンスを扱い、months、quares、weeksを扱う場合には非常に強力です。オフセットを使用しない場合、計算がかなり複雑になることがあります。
オフセットを使用するということは、年のどこにいるかに関係なく、1 か月前に戻ると常に -1 になり、1 か月先に進むと常に +1 になる連続した一連の数値を使用することを意味します。
DAX でのタイム インテリジェンスのためのラバー アヒル戦略の実装
以前、私はラバー ダッキングについて話しました。これは、DAX を書き始める前に戦略を大声で言語化することです。
私は、DAX のタイム インテリジェンスを使用して、月次のコンテキストからこれをどのように処理するかを大声で考えています。私は、選択した年と月に基づいて何かを開始し、接続されていないテーブルを使用してそれらを選択します。考えてみると、他のすべての選択には年をまたぐことになるからです (1 月を除く)。
3 月から始まる 12 か月が必要な場合、翌年には少なくとも 2 か月が必要になります。接続されたスライサーを使用する場合、フィルタリングできるのはその年のみであり、翌年のフィルタリングはできません。
開始日からのオフセットの収集
月と年の両方を接続したテーブルでこれを実行してみましょう。まず、開始日を扱う最初のオフセットを収集する必要があります。
次に、そのオフセットを 12 か月前に移動して、そのオフセットのセット内にある日付のみを確認します。DAX ではそれがどのようになるかを説明しましょう。
月次範囲の計算
これは、範囲内月次の測定値であり、年 (接続されていない年テーブルから取得した) と月 (接続されていない月テーブルから取得した) を選択します。
また、選択が行われていない場合、デフォルトで 1 月になる別のパラメーターもあります。このパラメータは主にデバッグのみを目的としています。
開始月と終了月のオフセットの計算
MAX オフセットを計算して、開始月のオフセットを見てみましょう。日付テーブルのすべてのフィルターを削除し、選択した月と選択した年に絞り込みます。各月には、その月と年に対応するオフセットが 1 つだけ存在する必要があります。
その時点から、開始月オフセット + 11 か月である終了月オフセットを取得できます。
次に、選択した各日付を調べて、それが最初の月のオフセットと終了月のオフセットの範囲内にあるかどうかを判断します。その期間内にある場合は 1 を与え、そうでない場合は 0 を与えます。
ビジュアルの月次ビューに戻ると、1 に設定した範囲内ビジュアルが表示されます。したがって、開始から終了までのオフセット内の月のみが表示されます。たとえば、「2 月」をクリックすると、2 月から 1 月までが表示されます。
週間範囲の計算
これを週ごとの観点から見てみましょう。ビジュアルは最初は問題なく始まり、第 1 週から第 52 週まで続きます。これまでのところ、非常に良好です。
しかし、年のスライサーで他の年をクリックすると、52 週目が表示されますが、一部には 53 週目があるため、多くの問題が発生します。この例から、問題が明らかになり始めていることがわかります。
開始期間は2020 年第 15 週ですが、終了期間は2021 年第 14 週ではなく、2021 年第 13 週になります。
第 1 週に戻ると、最初は問題なく始まっていますが、第 52 週で終了していることがわかります。ここで第 53 週の計算を見ると、2020 年と 2021 年の最大週数は 53 週です。これは毎週の粒度では機能しません。
これを機能させるために何ができるかを見てみましょう。この部分の DAX 計算を修正する必要があります。
これは、1 年が 52 週しかない場合は 51 が正しい場合もありますが、53 週ある年では最後の期間が省略されるためです。これはまさに私たちが数週間にわたってダイナミックなビジュアルで見てきたものであり、計算では 2020 年と 2021 年の最後の期間が削除されました。
これを修正するために、範囲内毎週の 間違った測定に進みます。これは、実際には前の測定よりも単純に見えます。開始オフセットを測定し、最大オフセットを計算しました。次に、フィルターから日付を取り除き、これにより正しいオフセットが得られるという前提で、選択した週と選択した年にフィルターを適用しました。
ただし、最大オフセットを使用しているか最小オフセットを使用しているかは問題ではないため、これは機能しません。私たちが行っているのは、CALCULATE ステートメントに裸の列を入れないようにアグリゲーターをラップすることだけです。
しかし、ここでISO WeekNumberに戻ると、年と週番号によって最初の期間の週のオフセットが一意に決定されるわけではないことがわかります。
私はこれを行うための完璧な方法を思いつきました。MIN を使用することもできますが、このWeek1 Offsetメジャーを作成する方が合理的です。第 1 週をオフセットするために、分割されない第 2 週を処理します。1 年が 52 週であるか 53 週であるかに関係なく、第 2 週はそのまま残ります。
この計算では、オフセットを取得するために第 2 週までフィルタリングしています。そして、第 2 週のオフセットを取得したら、そこから 1 を引くだけです。これにより、週 1 のオフセットが明確に得られます。これで問題は解決します。
毎週の範囲内計算
次に、範囲内週次測定に戻り、収穫数が第 1 週のものである場合、第 1 週のオフセットを計算する IF ステートメントを作成します。第 1 週でない場合は、前の月次計算で行ったように、開始週のオフセットを計算するだけです。
そして、終了週のオフセットは、開始週のオフセット + 最大週番号 (52 または 53 のいずれか) になります。その後、開始オフセットを二重にカウントしないように、1 を減算するだけです。
月次範囲に使用したのと同じ構成を実行して週をフィルタリングできます。開始オフセットと終了オフセットの間にあるものには 1 が与えられ、そうでないものには 0 が与えられます。
次に、[範囲内週次] メジャーをフィルター ペインに配置します。すべてがチェックアウトされ、正確に表示されます。
再生軸をクリックして、週単位で実行できます。月のコンテキストと同様に、正しく機能していることがわかります。
結論
これは DAX のタイム インテリジェンスについてかなり深く掘り下げたもので、週番号をめぐる問題のいくつかに対処する方法について説明しました。このチュートリアルが役に立ち、問題のある週の状況に対処するときにツールボックスにいくつかの追加ツールが含まれていることを願っています。
この特定のチュートリアルで取り上げたコンテンツを気に入っていただけた場合は、LuckyTemplates TV チャンネルに登録することを忘れないでください。私自身やさまざまなコンテンツ作成者からの膨大な量のコンテンツが常に公開されており、すべて LuckyTemplates と Power Platform の使用方法を改善することに専念しています。
Python における Self とは: 実際の例
R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。
この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。
このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。
この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。
LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。
LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。
このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。
これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。
LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて