次の方法で共有


カスタム計算とは

カスタム計算を使用すると、データセット クエリを変更せずに動的メトリックと変換を定義できます。 このページでは、AI/BI ダッシュボードでカスタム計算を使用する方法について説明します。

カスタム計算を使用する理由

カスタム計算を使用すると、ソース SQL を変更することなく、既存のダッシュボード データセットから新しいフィールドを作成および視覚化できます。 データセットごとに最大 200 個のカスタム計算を定義できます。

カスタム計算は、次のいずれかの種類です。

  • 計算メジャー: 総売上や平均コストなどの集計値。 計算された指標では、AGGREGATE OVER コマンドを使用して、時間範囲内の値を計算することができます。
  • 計算ディメンション: 年齢範囲の分類や文字列の書式設定など、集計されていない値または変換。

カスタム計算はメトリック ビューと同様に動作しますが、定義されているデータセットとダッシュボードにスコープが設定されます。 他のデータ資産で使用できるカスタム メトリックを定義するには、 Unity カタログのメトリック ビューを参照してください。

計算された指標を使用して動的なメトリクスを作成する

次のデータセットがあるとします。

Item リージョン 料金 費用 日付
Apples 米国 30 15 2024-01-01
Apples カナダ 20 10 2024-01-01
Oranges 米国 20 15 2024-01-02
Oranges カナダ 15 10 2024-01-02

地域別の利益率を視覚化する必要がある。 カスタム計算を使用しない場合は、 margin 列を使用して新しいデータセットを作成する必要があります。

リージョン Margin
米国 0.40
カナダ 0.43

この方法は機能しますが、新しいデータセットは静的であり、1 つの視覚化のみをサポートする場合があります。 元のデータセットに適用されたフィルターは、追加の手動調整なしで新しいデータセットに影響しません。

カスタム計算では、次の式を使用して利益利益を集計として表すことができます。

(SUM(Price) - SUM(Cost)) / SUM(Price)

このメジャーは動的です。 視覚エフェクトで使用すると、視覚エフェクトのグループ化が反映されるように自動的に更新されます。 たとえば、上の同じメジャーを使用して、視覚化で選択されている内容に応じて、 Region または Itemによって利益利益を視覚化できます。

計算ディメンションを使用して未集計の値を定義する

計算ディメンションを使用すると、ソース データセットを変更せずに、集計されていない値または軽量の変換を定義できます。 これは、視覚化のためにデータを整理または再フォーマットする場合に役立ちます。

たとえば、個々の年齢ではなく年齢グループ別に年齢の傾向を分析するには、次の式を使用してカスタム age_group ディメンションを定義できます。

CASE
   WHEN age < 18 THEN '<18'
   WHEN age >= 18 AND age < 25 THEN '18–24'
   WHEN age >= 25 AND age < 35 THEN '25–34'
   WHEN age >= 35 AND age < 45 THEN '35–44'
   WHEN age >= 45 AND age < 55 THEN '45–54'
   WHEN age >= 55 AND age < 65 THEN '55–64'
   WHEN age >= 65 THEN '65+'
END

ウィンドウに対して計算を定義する

ダッシュボードの視覚化の一般的なタスクは、過去 7 日間の売上のローリング 合計など、範囲全体の集計を計算することです。 カスタム計算では、ウィンドウ関数を使用してこの機能をサポートしています。これにより、現在の行に関連する一連の行 ("ウィンドウ") に対して計算を実行できます。

AI/BI ダッシュボードでは、次の 2 種類のウィンドウ関数がサポートされています。

  • スカラー ウィンドウ関数。固定のグループに対して集計され、スカラー関数として動作します。 単独で使用すると、演算ディメンションが生成されます。
  • 集計ウィンドウ関数。動的グループに対して集計され、集計関数として動作します。 使用すると、計算された測定値が形成されます。

また、ウィンドウ関数は 詳細レベル式の基礎でもあります。この式を使用すると、視覚化のグループ化とは別に集計の粒度を制御できます。

スカラー ウィンドウ関数

スカラー ウィンドウ関数では、 OVER 演算子と省略可能な PARTITION BY 句と ORDER BY 句を使用して、視覚化のグループ化が発生する前に、関連する行全体の集計を計算します。 これらは、ウィンドウ関数自体で定義された静的なパーティションセットに対して集計され、その後、変換されていない基のテーブルに次元として結合されます。

リージョン別の総売上の計算例:

SUM(sales) OVER (PARTITION BY Region)

リージョンごとの累積売上の計算例:

SUM(sales) OVER (PARTITION BY Region ORDER BY Date RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

OVER の構文

<AGGREGATE_FUNCTION>(<column>) OVER (
  [PARTITION BY <dimensions>]
  [ORDER BY <column>]
  [ROWS|RANGE frame_specification]
)

詳細については、SQL 言語リファレンスの Window 関数 を参照してください。

集計ウィンドウ関数

集計ウィンドウ関数では、視覚化のグループ化が適用された後、 AGGREGATE OVER 演算子を使用してウィンドウ集計を計算します。 集計対象のグループは、式が使用される視覚化から自動的に継承されます。 必要に応じて、 PARTITION BY 句と * を使用して、継承されたすべてのパーティションを表し、 EXCEPT 句を使用して特定のディメンションを除外できます。 ORDER BY句を使用すると、隣接する行間で結果のパーティションを部分的に集計し、"ウィンドウ化" 機能を提供できます。

前の例と同じデータセットを使用して、次の式は、 AGGREGATE OVER 演算子を使用して、末尾の 7 日間の平均利益率を計算します。

(
  (SUM(Price) - SUM(Cost)) / SUM(Price)
) AGGREGATE OVER (
  ORDER BY Date TRAILING 7 DAY
)

作成後、この測定値はどの視覚化にも適用できます。

AGGREGATE OVER の構文

<AGGREGATE_EXPRESSION> AGGREGATE OVER (
  [PARTITION BY * [EXCEPT (<field> [, ...])]]
  [ORDER BY <field> <frame_specification>]
)

この構文では:

  • PARTITION BY * は、視覚化のグループ化から継承されたすべてのパーティションを表します
  • EXCEPT (<field> [, ...]) は、パーティション セットから除外するディメンションを指定します
  • PARTITION BY句とORDER BY句はどちらも省略可能ですが、空のAGGREGATE OVER ()は無効です

フレームの指定には、次のいずれかを指定できます。

  • CURRENT
  • CUMULATIVE
  • ALL
  • (TRAILING|LEADING) <number> <unit>
    • <number> は正の整数です
    • <unit>DAYMONTH、または YEAR
    • 例: TRAILING 7 DAY または LEADING 1 MONTH

次の表は、集計におけるフレーム指定が同等のSQL ウィンドウフレーム句とどのように比較されるかを示しています。

フレームの指定 同等の SQL ウィンドウ フレーム句
CURRENT RANGE BETWEEN CURRENT ROW AND CURRENT ROW
ALL RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
CUMULATIVE RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
TRAILING <number> <unit> RANGE BETWEEN <number> <unit> PRECEDING and 1 <unit> PRECEDING
LEADING <number> <unit> RANGE BETWEEN 1 <unit> FOLLOWING and <number> <unit> FOLLOWING

ORDER BY フィールドが視覚化でグループ化されていない場合、AGGREGATE OVERは最後の行の集計値を各グループに表示する値として受け取ります。 これは、"最後の" 半加法の動作と同じです。

OVERAGGREGATE OVER

OVERAGGREGATE OVERの主な違いは、OVERがスカラー関数であり、AGGREGATE OVERが集計関数であることです。 OVER にはグループを定義するための PARTITION BY 句が必要ですが、 AGGREGATE OVER は周囲の視覚化からグループを継承し、現在のグループの外部にデータを組み込むことができます。

OVER 構文を使用してください。

  • テーブルなど、集計されていないコンテキストで使用する必要があるウィンドウ計算。
  • すべての視覚化グループとフィルターを無視する必要があるウィンドウ計算。
  • 固定された詳細レベルでの集計: PARTITION BYを使用して特定の細分性で集計を計算します。
  • ROW_NUMBERなどのRANKおよびLAG関数を使用する。

AGGREGATE OVER 構文を使用してください。

  • さまざまなグループ化コンテキストで使用できるウィンドウ計算、または現在のグループの外部にデータを組み込む必要があるウィンドウ計算。
  • 視覚化フィルターを考慮したウィンドウ計算。
  • 視覚化よりも 粗い詳細レベル での集計: PARTITION BY * EXCEPT (...)を使用してディメンションを除外します。
  • 不足している行に対して堅牢な時間ベースの範囲: TRAILING または LEADINGを使用したウィンドウの移動。

パフォーマンスの利点

カスタム計算は、パフォーマンス用に最適化されています。 小さなデータセット (≤100,000 行と ≤100 MB) の場合、計算はブラウザーで実行され、応答性が向上します。 大規模なデータセットは、SQL ウェアハウスによって処理されます。 詳細については、 データセットの最適化とキャッシュに関するページを 参照してください。

カスタム計算を作成する

この例は、samples.nyctaxi.trips データセットに基づいて計算された指標を作成します。 AI/BI ダッシュボードの操作方法に関する一般的な知識を前提としています。 AI/BI ダッシュボードの作成に慣れていない場合は、「ダッシュボード を作成する」を参照してください。

  1. 既存のデータセットを開くか、新しいデータセットを作成します。

  2. [ + カスタム計算の追加] をクリックします。

    カスタム計算ボタンは、結果パネルの右上隅で強調表示されます。

  3. 画面の右側に [ 計算の作成 ] パネルが開きます。 [名] テキスト フィールドに、「コスト/マイル」と入力します。

  4. (省略可能)[ コメント ] テキスト フィールドに、「料金の金額と乗車距離を使用して 1 マイルあたりのコストを計算します」と入力します。

  5. [ ] フィールドに、次のように入力します。

    try_divide(SUM(fare_amount), SUM(trip_distance))
    
  6. Create をクリックしてください。

命令の値が入力されたカスタム計算エディター。

他の計算結果の参照

カスタム計算では、同じデータセットで定義されている他のカスタム計算を参照できます。 これにより、より単純な計算を作成し、再利用性と保守容易性を促進することで、複雑なメトリックを構築できます。

別のカスタム計算を参照する場合は、データセット内の列であるかのように、式でその名前を直接使用します。

たとえば、次の計算メジャーを作成したとします。

  • total_revenue: SUM(sale_amount)
  • total_cost: SUM(cost_amount)

両方を参照する 3 番目の計算メジャーを作成できます。

  • profit_margin: (MEASURE(total_revenue) - MEASURE(total_cost)) / MEASURE(total_revenue)

  • 同じデータセット内の計算のみを参照できます。
  • 循環参照は許可されません (B が A を参照している場合、計算 A は計算 B を参照できません)。
  • 参照される計算は、他の式で使用する前に作成する必要があります。

メトリック ビューにカスタム計算を追加する

Important

この機能は パブリック プレビュー段階です

メトリック ビューによって作成されたデータセットの上にカスタム計算を定義できます。 データセットを開くと、 結果テーブルスキーマ のみが表示されます。 [ カスタム計算 ] をクリックして、新しいカスタム計算を定義します。 他のデータ資産で使用できる追加のカスタム メトリックを定義するには、ビュー定義を変更します。 Unity カタログのメトリック ビューを参照してください。

ダッシュボード データセット エディターから新しいメトリック ビューを定義するには、「 メトリック ビューとしてエクスポートする」を参照してください。

スキーマを表示する

結果パネルの [ スキーマ ] タブをクリックして、カスタム計算とそれに関連付けられているコメントを表示します。

計算メジャーは、[メジャー] セクションに一覧表示され、計算メジャー アイコン fx でマークされます。 計算メジャーに関連付けられている値は、視覚化で GROUP BY を設定すると動的に計算されます。 結果テーブルに値が表示されない。 [ディメンション] セクションに計算 ディメンションが 表示されます。

計算メジャーがスキーマ タブに表示されます。

視覚化でカスタム計算を使用する

以前に作成した マイルあたりのコスト 計算メジャーを視覚化で使用できます。

計算指標は、チャート上で設定されたディメンションに対して自動的に集計されます。 この動作は、ディメンションとメジャーがメトリック ビューでどのように機能するかと同じです。ここで、集計は、視覚化で定義したグループに動的に適応します。

  1. [キャンバス] をクリックします。 次に、キャンバスに新しい視覚化ウィジェットを配置します。
  2. 視覚化構成パネルを使用して、次のように設定を編集します。
    • データセット: Taxicab data
    • 視覚化: 棒グラフ
    • X 軸:
      • フィールド: dropoff_zip
      • スケールの種類: カテゴリ
      • 変換: なし
    • Y 軸:
      • 1 マイルあたりのコスト

テーブルの視覚化では計算ディメンションがサポートされますが、計算メジャーはサポートされていません。

次の図はグラフを示しています。

マイルあたりのコストと降車郵便番号を示す横棒グラフです。

カスタム計算を使用した視覚化は、フィルターが適用されると自動的に更新されます。 たとえば、 pickup_zip フィルターを追加すると、選択した値に一致するデータのみが表示されるように視覚化が更新されます。

カスタム計算を編集する

計算を編集するには:

  1. [ データ ] タブをクリックし、編集する計算に関連付けられているデータセットをクリックします。
  2. 結果パネルの [スキーマ] タブをクリックします。
  3. メジャーディメンションは、 データセット フィールドの一覧の下に表示されます。 [Kebab] メニュー アイコン をクリックします。編集する計算の右側にある kebab メニューをクリックします。 次に、[編集] をクリックします。
  4. [カスタム計算の編集] パネルで、編集するテキスト フィールドを更新します。 次に、[更新] をクリックします。

カスタム計算を削除する

計算を削除するには:

  1. [ データ ] タブをクリックし、編集するメジャーに関連付けられているデータセットをクリックします。
  2. 結果パネルの [スキーマ] タブをクリックします。
  3. 対策 セクションがフィールドの一覧の下に表示されます。 [Kebab] メニュー アイコン をクリックします。編集する計算の右側にある Kebab メニューをクリックします。 その後、 [削除] をクリックします。
  4. 表示される [削除] ダイアログで [削除] をクリックします。

制限事項

カスタム計算を使用するには、次のことが該当する必要があります。

  • 式で使用される列は、同じデータセットに属している必要があります。
  • 外部テーブルまたはデータ ソースを参照する式はサポートされていないため、失敗したり、予期しない結果が返されたりする可能性があります。

サポートされている関数

カスタム計算でサポートされているすべての関数の完全なリファレンスについては、「 カスタム計算関数リファレンス」を参照してください。 サポートされていない関数を使用しようとすると、エラーが発生します。

例示

次の例は、カスタム計算の一般的な使用方法を示しています。 各カスタム計算は、データセットのスキーマの [データ] タブに表示されます。キャンバスでは、フィールドとしてカスタム計算を選択できます。

条件付きでデータのフィルター処理と集計を行う

条件付きでデータを集計するには、 CASE ステートメントを使用します。 次の例では、 samples.nyctaxi.trips データセットを使用し、10103 郵便番号で開始するすべての乗車の料金の合計を計算します。

SUM(CASE
  WHEN pickup_zip=10103 THEN fare_amount
  WHEN pickup_zip!=10103 THEN 0
END)

文字列を構築する

CONCAT関数を使用して、新しい文字列値を作成します。 concat関数concat_ws関数を参照してください。

CONCAT(first_name, ' ', last_name)

日付の書式設定

DATE_FORMATを使用して、視覚化に表示される日付文字列の書式を設定します。

DATE_FORMAT(tpep_pickup_datetime, 'YYYY-MM-dd')