このトピックでは、時系列関数とフィルタ関数の違いを説明し、フィルタ関数の実装方法を説明します。この情報は、ワークブックとクラシック・ダッシュボードの両方に当てはまります。
時系列関数とフィルタ関数
時系列関数Ago
およびTodate
を使用すると、year-ago、year-to-date
などを計算するメトリックを簡単に作成できます。この方法はビジネス・ユーザー・レポートに適しています。ただし、これらの関数では複雑な問合せが生成され、パフォーマンスに多大な負荷がかかります。また、いずれかの関数がレポートで使用されるたびに、データベースのリソースをさらに使用して、サブ問合せが追加で生成されます。
クラシック・ダッシュボードでは、時系列関数を使用せず、ベース・メトリックとFilter
関数を一緒に使用して適切な期間をフィルタすることで、多くの場合、同じ結果を得られます。この方法はビジネス・ユーザー・レポートには複雑すぎる可能性がありますが、ITチームが事前に定義したダッシュボードで優れた機能性を発揮します。この方法を使用すると、生成される物理SQLコードがはるかにシンプルでより効率的になり、サブ問合せが追加で生成されることもありません。つまり、SQL問合せがより高速に実行され、使用されるデータベースのリソースが少なくなるため、データベースの全体的なCPU使用率と入出力呼出しが低減されることになります。
次の図は、同じレポートに、ベース・メトリックとmonth Ago
メトリックの両方を使用した場合に生成される物理問合せの例を示します。2つの問合せが生成されます
次の図は、かわりに、Filter
関数を使用した場合に単一の問合せに対して生成されるSQLコードを示しています。
プロンプトを使用したダッシュボードでのフィルタ関数の実装
ほとんどの実装では、ダッシュボードにプロンプトが用意されているため、ユーザーは探している月を選択することが可能です。最初のステップは、フィルタする必要がある期間を、ユーザーの選択内容に基づいて特定することです。
この例では、カレンダ・ディメンションに列ユリウス周期番号
が含まれていると想定しますが、これは計算が簡単になるためです。ユリウス周期番号
がなくても実現できますが、選択された期間を計算するために、より複雑な式が必要になります。
Month
プロンプトを変更して、プレゼンテーション変数(MonthSelected
)を追加します。
ユリウス周期番号
を取得し、別の変数(PeriodNumberSelected
)に入れます。この2つ目のプロンプトはエンド・ユーザーに表示されず、かわりにダッシュボードで非表示になり、変数MonthSelected
に基づいて値が自動的に計算されます。
ユリウス周期
プロンプト・パスを追加します。
月
列のグローバル・フィルタを削除し、必要に応じて、ユリウス周期番号
に基づいて列式フィルタ関数を使用します。いくつかの例を示します。
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の場合、使用可能な値は移入されません。
.jpgの説明
MonthSelectedの値に基づいてフィルタされた論理問合せを使用して、初期値のみが移入されます。
.jpgの説明