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

カスタム計算とは何ですか?

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

カスタム計算を使用する理由は何ですか?

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

カスタム計算は次のいずれかの種類になります。

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

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

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

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

項目

リージョン

料金

コスト

Date

リンゴ

USA

30

15

2024年1月1日

リンゴ

Canada

20

10

2024年1月1日

オレンジ

USA

20

15

2024年1月2日

オレンジ

Canada

15

10

2024年1月2日

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

リージョン

マージン

USA

0.40

Canada

0.43

このアプローチは機能しますが、新しいデータセットは静的であり、1 つの視覚化しかサポートしない場合があります。 元のデータセットに適用されたフィルターは、追加の手動調整を行わない限り、新しいデータセットに影響を与えません。

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

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

この測定は動的です。視覚化で使用すると、データセットに適用されたフィルターを反映して自動的に更新されます。

範囲にわたって計算されたメジャーを定義する

ダッシュボードの視覚化における一般的なタスクは、過去 7 日間などの範囲にわたるSUM(sales)などのメジャーをコンピュートすることです。 ダッシュボード データセットの場合、 AGGREGATE OVERコマンドを使用して、これらの種類の範囲ベースのメジャー計算を定義します。

AGGREGATE OVERコマンドは、現在のグループまたはパーティションの外部のデータを組み込むことができます。たとえば、ビジュアライゼーションがデータを日ごとにグループ化している場合、末尾の 7 日間の範囲により、各日のデータポイントに過去 6 日間のデータを含めることができます。 同じメジャーが月ごとにグループ化された視覚化で使用される場合、7 日間の範囲では各月の最後の 7 日間のみが使用されます。

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

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

作成後、このメジャーはあらゆる視覚化に適用できます。

AGGREGATE OVER構文

AGGREGATE OVERコマンドには次の構文が必要です:

{expr} AGGREGATE OVER (ORDER BY {field} {frame})

議論

  • 評価する有効な計算メジャー式

  • フィールド (必須)

    有効な列名

  • フレーム (必須) 次のいずれかになります。

    • CURRENT
    • CUMULATIVE
    • ALL
    • (TRAILING|LEADING) 数値 単位
      • 数値は整数です
      • 単位はDAYMONTH 、または YEAR
      • 例: TRAILING 7 DAYまたは LEADING 1 MONTH

次の表は、aggregate over のフレーム仕様と同等の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

AGGREGATE OVERとウィンドウ関数との比較

AGGREGATE OVERコマンドは、メトリクスの計算によく使用されるSQLのウィンドウ関数に似ています。 ただし、ウィンドウ関数とは異なり、式でパーティション フィールドを指定せずにAGGREGATE OVERを使用できます。代わりに、視覚化クエリのグループ化からパーティションを継承します。つまり、これらの対策をより動的に使用できるということです。たとえば、視覚化の y 軸にメジャーを追加し、x 軸に製品ラインを追加することで、製品ライン別の 7 日間の移動平均を計算できます。

視覚化でORDER BYフィールドがグループ化されていない場合、 AGGREGATE OVER最後の行の集計値を各グループに表示する値として取得します。半加法的な尺度に精通している場合は、これがlast半加法的な動作と同等であると認識するかもしれません。

カスタムディメンションを使用して集計されていない値を定義する

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

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

SQL
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

パフォーマンス上の利点

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

カスタム計算を作成する

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

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

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

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

  3. 画面の右側に「 計算の作成 」パネルが開きます。 名前 テキストフィールドに Cost per mile と入力します。

  4. (オプション) 説明 テキスト フィールドに「運賃額と移動距離を使用してマイルあたりのコストを計算します」と入力します。

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

    SQL
    try_divide(SUM(fare_amount), SUM(trip_distance))
  6. 作成 をクリックします。

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

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

備考

プレビュー

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

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

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

スキーマを表示する

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

計算されたメジャーは メジャー セクションに一覧表示され、 計算済みメジャーのアイコン fx でマークされます。計算メジャーに関連付けられた値は、ビジュアライゼーションで GROUP BY を設定するときに動的に計算されます。結果テーブルに値は表示されません。計算されたディメンションは、 ディメンション セクションに表示されます。

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

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

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

  1. キャンバス をクリックします。次に、新しい視覚化ウィジェットをキャンバスに配置します。
  2. 視覚化構成パネルを使用して、次のように設定を編集します。
    • データセット: Taxicab data

    • 視覚化:

    • X軸:

      • フィールド: dropoff_zip
      • スケールタイプ: Categorical
      • 変換: None
    • Y軸:

      • 1マイルあたりのコスト
注記

テーブルのビジュアライゼーションは、計算ディメンションをサポートしますが、計算メジャーはサポートしません。

次の画像はチャートを示しています。

1 マイルあたりのコストとドロップオフ郵便番号を示す棒グラフ。

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

カスタム計算を編集する

計算を編集するには:

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

カスタム計算を削除する

計算を削除するには:

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

制限事項

カスタム計算を使用するには、次の条件を満たす必要があります。

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

サポートされている機能

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

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

条件に応じてデータをフィルタリングして集計する

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

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

文字列を構築する

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

SQL
CONCAT(first_name, ' ', last_name)

日付のフォーマット

視覚化に表示される日付文字列をフォーマットするには、 DATE_FORMATを使用します。

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