メインコンテンツまでスキップ

詳細レベルの表現

詳細レベルの式を使用すると、視覚化の詳細レベルとは異なる集計を計算する粒度を指定できます。このページでは、AI/BI ダッシュボードで詳細レベルの式を使用する方法について説明します。

詳細レベル表現とは何ですか?

詳細レベルの式を使用すると、視覚化に存在するディメンションに関係なく、集計を計算するときに使用するディメンションを正確に指定できます。これにより、計算の範囲を細かく制御できるようになります。詳細レベルの式は、ディメンションまたはメジャーのいずれかになります。

詳細レベルの式には 2 つの種類があります。

  • 固定の詳細レベル : 視覚化内の他のすべてのディメンションを無視して、式自体で指定された定義済みのディメンション セットを集計します。
  • より粗い詳細レベル : グループ化セットから特定のディメンションを除外して、視覚化よりも粗いレベルで集計します。

詳細レベルの式は、特定の使用パターンにおけるデータセット計算のウィンドウ関数を使用して作成されます。

詳細レベル表現を使用する場合

詳細レベルの式は、次の場合に使用します。

  • 合計の割合を計算します (たとえば、各カテゴリの合計売上の割合)。
  • 個々の値をデータセット全体の集計と比較します (たとえば、売上高と平均売上高)。
  • 異なるグループ間で一定のコホートまたはセグメントレベルのメトリクスを作成します。
  • 1 回の計算で複数レベルの集計を実行します。

固定された詳細レベルで表現を定義する

固定された詳細レベルの式は、視覚化のディメンションを無視して、定義した粒度で集計を行います。 固定された詳細レベルの式はディメンションであり、 PARTITION BY句を持つスカラー ウィンドウ関数を使用して実装されます。

構文

SQL
<AGGREGATE_FUNCTION>(<column>) OVER (PARTITION BY <dimension1>, <dimension2>, ...)

データセット全体を集計するには、 PARTITION BY句を省略し、 OVERの後に空の括弧を残します。

固定の詳細レベルを使用する場合

次のような場合には、固定詳細レベルの式を使用します。

  • すべての用途にわたって静的パーティショニングを持つ 視覚化グループ:メトリクスに依存しません
  • データセット レベルの集計: 他の行レベルまたはグループと比較したグローバル集計 (たとえば、地域別の総売上高の割合)。
  • 複数レベルの階層: 同じ視覚化内に詳細レベルとロールアップ レベルのメトリックスが表示されます。

例: 地域別売上合計

売上データセットがあり、各製品の売上とその地域の売上合計を並べて表示したいとします。サンプルデータは次のとおりです。

リージョン

製品

営業

西

ラップトップ

5000

西

ねずみ

500

ラップトップ

6000

モニタリング

3000

地域別の総売上を計算するには、次を使用します。

SQL
SUM(Sales) OVER (PARTITION BY Region)

結果:

リージョン

製品

営業

地域合計

西

ラップトップ

5000

5500

西

ねずみ

500

5500

ラップトップ

6000

9000

モニタリング

3000

9000

各行には、個々の製品の売上とその地域の固定合計が表示されます。地域の合計は、製品別にフィルタリングまたはグループ化する方法に関係なく一定のままです。

例: 合計の割合

固定された詳細レベルの式は、「合計の割合」の計算を実行する計算メジャーを含む、より複雑な式に構成できます。これを行うには、メジャー式内の固定レベルの詳細式を参照して、視覚化のグループ化を動的にすることができます。

たとえば、まずデータセット全体に対して実行されるスタンドアロンの計算として、 total_sales固定の詳細レベル式として定義できます。

SQL
SUM(sales) OVER ()

次に、計算されたメジャー定義で固定の詳細レベルの式を参照できます。

SQL
SUM(Sales) / ANY_VALUE(total_sales)

上記の式は、製品などの任意のディメンションでグループ化する視覚化でメジャーとして使用して、各製品の合計売上の割合を表示できます。

注記

メジャー計算で使用するには、固定の詳細レベルの式を集計関数でラップする必要があります。固定詳細レベルの式の結果が定数であり、グループの行内で繰り返されると予想される場合は、上記の例に示すように、 ANY_VALUEなどの関数を使用して集計結果から単一の値を返すことができます。

固定された詳細レベルの表現によるフィルタリング

固定詳細レベルの式は視覚化のグループ化とフィルターが適用される前にコンピュートされるため、ダッシュボード上の動的フィルターの影響を受けるようにするには、基になるSQLセット テキストに影響を与えるフィルターを問題として定義する必要があります。 ダッシュボードの詳細については、「ダッシュボードの操作」を参照してください。

より粗い詳細レベルで表現を定義する

より粗い詳細レベルでの式は、視覚化のグループ化セットからディメンションを除外することで、視覚化の粒度よりも粗い粒度で集計を実行します。 このような式はメジャーであり、 ALL範囲指定子を持つ集計ウィンドウ関数を使用して実装されます。概念的には、ディメンションの全範囲で構成されるウィンドウを集計することは、そのディメンションをグループ化から完全に除外することと同じです。

構文

SQL
<AGGREGATE_EXPRESSION> AGGREGATE OVER (ORDER BY <dimension> ALL)

より粗い詳細レベルを使用する場合

次のような場合には、より粗い詳細レベルの式を使用します。

  • 動的グループ化: 視覚化のグループ化に適応するパーセンテージまたは集計を計算します (たとえば、選択したディメンションの合計のパーセンテージなど)
  • フィルターを考慮した集計: ダッシュボードのフィルターを尊重しながら、より粗い粒度で計算します。

例: 合計の割合

より粗い詳細レベルの式の最も一般的な使用例は、合計値のパーセンテージを計算することです。動的パーティション内で、 Regionによる総売上の割合を計算するには、次のようにします。

SQL
SUM(Sales) / (SUM(Sales) AGGREGATE OVER (ORDER BY Region ALL))

この表現:

  1. 視覚化のパーティション内の総売上高をコンピュートします。 RegionProductなど。
  2. Regionを除く、ビジュアライゼーションのパーティション内のProductにわたる合計売上高をコンピュートします。
  3. 2 つを割って、各Productについて、各Regionが各売上に占める割合を表すパーセンテージを取得します。

製品の販売頻度

各製品の販売数を計算するのは簡単ですが、特定の販売範囲内での製品の合計数を計算するには、別のアプローチが必要です。 たとえば、販売量バケットごとにグループ化された製品の数を示すヒストグラムを作成する方法を考えてみましょう。

カスタム計算:

  • sale_count固定詳細レベル式として定義します: COUNT(*) OVER (PARTITION BY Product)

使用方法: x 軸でsale_countでグループ化された棒グラフを作成し、y 軸でCOUNT(*)を選択します。

コホート平均と比較

取引規模は同じ地域の平均取引規模と比べてどうですか?

カスタム計算:

  • average_deal_amount_by_region固定詳細レベル式として定義します: AVG(deal_amount) OVER (PARTITION BY Region)
  • percentage_of_region_average次のように定義します deal_amount - average_deal_amount_by_region

上記の 2 つの式を 1 つの計算に組み合わせることもできます。

使用方法: テーブルを定義し、視覚化に必要な他のディメンションとともにpercentage_of_region_averageを選択します。

制限事項

スカラーウィンドウ関数のDISTINCT

スカラー ウィンドウ関数でDISTINCT直接使用することはできません。たとえば、これは機能しません:

SQL
COUNT(DISTINCT customer_id) OVER (PARTITION BY region)

代わりに、 ARRAY_SIZE COLLECT_SETと一緒に使用します。

SQL
ARRAY_SIZE(COLLECT_SET(customer_id) OVER (PARTITION BY region))

スカラーウィンドウ関数の集約

メジャー式を作成するときに、スカラー ウィンドウ関数 (固定詳細レベルに使用) を直接集計することはできません。

パターン 1: 上記の合計に対する割合の例のように、ウィンドウ関数を個別のディメンション計算として定義し、メジャー式で参照します。

パターン 2: あるいは、 SUMような分解可能な集計の場合、ネストされた集計を使用できます。これは、最初に各グループの内部集計 (ウィンドウ化されていない) を計算し、次にグループ全体で集計し、2 番目のパスを生成します。

SQL
SUM(quantity) / SUM(SUM(quantity)) OVER ()

このパターンは、 SUMMINMAXCOUNTなどの関数では機能しますが、分解できないMEDIANPERCENTILEなどの関数では機能しません。括弧で定義されている演算の順序に注意してください。 SUM(SUM(quantity) OVER ())のような式は似ていますが、有効とは認識されないため、このセクションの最初のパターンを使用して表現する必要があります。

その他のリソース