時系列関数のかわりにフィルタ関数を使用する

このトピックでは、時系列関数とフィルタ関数の違いを説明し、フィルタ関数の実装方法を説明します。この情報は、ワークブックとクラシック・ダッシュボードの両方に当てはまります。

時系列関数とフィルタ関数

時系列関数AgoおよびTodateを使用すると、year-ago、year-to-dateなどを計算するメトリックを簡単に作成できます。この方法はビジネス・ユーザー・レポートに適しています。ただし、これらの関数では複雑な問合せが生成され、パフォーマンスに多大な負荷がかかります。また、いずれかの関数がレポートで使用されるたびに、データベースのリソースをさらに使用して、サブ問合せが追加で生成されます。

クラシック・ダッシュボードでは、時系列関数を使用せず、ベース・メトリックとFilter関数を一緒に使用して適切な期間をフィルタすることで、多くの場合、同じ結果を得られます。この方法はビジネス・ユーザー・レポートには複雑すぎる可能性がありますが、ITチームが事前に定義したダッシュボードで優れた機能性を発揮します。この方法を使用すると、生成される物理SQLコードがはるかにシンプルでより効率的になり、サブ問合せが追加で生成されることもありません。つまり、SQL問合せがより高速に実行され、使用されるデータベースのリソースが少なくなるため、データベースの全体的なCPU使用率と入出力呼出しが低減されることになります。

次の図は、同じレポートに、ベース・メトリックとmonth Agoメトリックの両方を使用した場合に生成される物理問合せの例を示します。2つの問合せが生成されます

GUID-37245A7E-00E9-4071-9627-1A5BAED91311-default.jpgの説明が続きます
.jpgの説明

次の図は、かわりに、Filter関数を使用した場合に単一の問合せに対して生成されるSQLコードを示しています。

GUID-F1D33998-F8D4-40BF-B630-6EDCEF1DCEFC-default.jpgの説明が続きます
.jpgの説明

プロンプトを使用したダッシュボードでのフィルタ関数の実装

ほとんどの実装では、ダッシュボードにプロンプトが用意されているため、ユーザーは探している月を選択することが可能です。最初のステップは、フィルタする必要がある期間を、ユーザーの選択内容に基づいて特定することです。

この例では、カレンダ・ディメンションに列ユリウス周期番号が含まれていると想定しますが、これは計算が簡単になるためです。ユリウス周期番号がなくても実現できますが、選択された期間を計算するために、より複雑な式が必要になります。

  1. Monthプロンプトを変更して、プレゼンテーション変数(MonthSelected)を追加します。

    GUID-DEEBC7D1-806C-48E9-965C-6131745A65CE-default.pngの説明が続きます
    .pngの説明

  2. 別のダッシュボード・プロンプトを作成して対応するユリウス周期番号を取得し、別の変数(PeriodNumberSelected)に入れます。この2つ目のプロンプトはエンド・ユーザーに表示されず、かわりにダッシュボードで非表示になり、変数MonthSelectedに基づいて値が自動的に計算されます。

    GUID-D41AE43F-CD62-498D-B041-9700D586BF77-default.pngの説明が続きます
    .pngの説明

  3. ダッシュボード・プロパティを編集して、「フィルタと変数」をクリックします。
  4. ユリウス周期プロンプト・パスを追加します。

    GUID-E46E926E-F0A3-4934-9D10-F0119B9109DF-default.jpgの説明が続きます
    .jpgの説明

  5. 分析で、列のグローバル・フィルタを削除し、必要に応じて、ユリウス周期番号に基づいて列式フィルタ関数を使用します。いくつかの例を示します。

    Current Month: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800})

    Month Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-1)

    Year Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-12)

    Year to date: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"<=@{PeriodNumberSelected}{80800} and “Time”.”Year”=@{YearSelected}{2019})

パラメータを使用したワークブックでのフィルタ関数の実装

ワークブックにも同じ原則を適用できます。プロンプトとプレゼンテーション変数が、ダッシュボード・フィルタおよびパラメータで置き換えられます。

MonthSelected、PeriodNumberSelected、YearSelectedの3つのパラメータを作成します。パラメータMonthSelectedのみが、ダッシュボード・フィルタのキャンバスに表示されます。

パラメータMonthSelectedに使用できる値は、すべての月を選択する論理SQL問合せに基づいて定義されます。

パラメータPeriodNumberSelectedおよびYearSelectedの場合、使用可能な値は移入されません。GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpgの説明が続きます
.jpgの説明

MonthSelectedの値に基づいてフィルタされた論理問合せを使用して、初期値のみが移入されます。GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpgの説明が続きます
.jpgの説明