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

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

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

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

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

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

ceal_physical_ago_query.jpgの説明が続きます
画像ceal_physical_ago_query.jpgの説明

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

ceal_filter_function_sql.jpgの説明が続きます
画像ceal_filter_function_sql.jpgの説明

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

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

この例では、計算が容易になるため、カレンダ・ディメンションに列Julian Period Numberが含まれています。これは、Julian Period Numberがなくても実現できますが、選択した期間を計算するために、より複雑な式が必要になります。

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

    ceal_month_prompt.pngの説明が続きます
    図ceal_month_prompt.pngの説明

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

    ceal_julian_period_number_prompt.pngの説明が続きます
    図ceal_julian_period_number_prompt.pngの説明

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

    ceal_dashboard_filters_variables.jpgの説明が続きます
    画像ceal_dashboard_filters_variables.jpgの説明

  5. 分析で、Month列のグローバル・フィルタを削除し、必要に応じてJulian Period Numberに基づく列式フィルタ関数を使用します。いくつか例を挙げます。

    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パラメータの場合、使用可能な値は移入されません。ceal_periodnumberselected_parameter.jpgの説明が続きます
図ceal_periodnumberselected_parameter.jpgの説明

MonthSelectedの値に基づいてフィルタリングされた論理問合せを使用して、初期値のみが移入されます。ceal_monthselected_parameter.jpgの説明が続きます
図ceal_monthselected_parameter.jpgの説明