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

カスタム計算とは?

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

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

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

  • 計算メジャー : 総売上高や平均コストなどの集計値
  • 計算ディメンション : 未集計の値や変換 (年齢範囲の分類や文字列の書式設定など)

例: 計算メジャー

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

項目

リージョン

料金

コスト

リンゴ

USA

30

15

リンゴ

Canada

20

10

オレンジ

USA

20

15

オレンジ

Canada

15

10

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

リージョン

余地

USA

0.40

Canada

0.43

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

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

SQL

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

このメジャーは動的です。ビジュアライゼーションで使用すると、データセットに適用されたフィルターを反映するように自動的に更新されます。

例: 計算ディメンション

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

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

SQL

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

パフォーマンス上の利点

カスタム計算は、パフォーマンスのために最適化されています。データセットの結果が 100,000 行以下、または 100 MB 以下 (いずれか小さい方) の場合、フィルタリングと集計はブラウザーで処理されます。これにより、特にフィルターを適用する際のダッシュボードの応答性が向上します。大規模なデータセットの場合、計算は SQLウェアハウスによって処理されます。 詳細については、「 データセットの最適化とキャッシュ」を参照してください。

カスタム計算を作成する

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

  1. データ タブで、次のステートメントを使用してデータセットを作成します。
SQL
SELECT * FROM samples.nyctaxi.trips
  1. データセットの名前を Taxicab data に変更します。

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

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

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

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

  5. フィールドに「try_divide(SUM(fare_amount), SUM(trip_distance))」と入力します。

  6. 作成 をクリックします。

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

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

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

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

ビジュアライゼーションでのカスタム計算の使用

以前に作成した Cost per mile 計算メジャーを視覚化で使用できます。

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

    • 視覚化:

    • X軸:

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

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

カスタム計算は、テーブル ビジュアライゼーションでは使用できません。

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

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

カスタム計算を含むビジュアライゼーションは、適用されたフィルターに基づいて動的に更新されます。たとえば、 pickup_zip のフィルターをキャンバスに追加し、フィルター値を選択すると、ビジュアライゼーションが更新され、選択したフィルター値から発生した旅行のマイルあたりのコスト メトリクスのみが表示されます。 結果の棒グラフには、それに応じてフィルタリングされたデータが反映されます。

カスタム計算の編集

計算を編集するには:

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

カスタム計算の削除

計算を削除するには:

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

制限

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

  • 式で使用される列は、同じデータセットに属している必要があります。
  • 式には、外部テーブルまたはデータソースへの呼び出しを含めることはできません。

サポートされている関数

次の表に、サポートされている関数を示します。サポートされていない関数を使用しようとすると、エラーが発生します。

集計関数

すべての計算済みメジャーは集計する必要があります。 次の集計操作がサポートされています。

集計

説明

avg(expr) または mean(expr)

列または式で計算された平均を返します。

count(*)

グループ内のロー数を返します。

count(DISTINCT expr)

グループ内の一意の行の数を返します。

sum(expr)

列または式の値の合計を返します。

max(expr)

列または式の最大値を返します。

min(expr)

列または式の最小値を返します。

percentile(expr, percentage [,frequency])

グループ内の指定されたパーセンテージで expr の正確なパーセンタイル値を返します。

first(expr[,ignoreNull])

グループの最初の expr の値を返します。

last(expr[,ignoreNull])

グループの最後の expr の値を返します。

count_if

指定された条件を満たす行の数を返します。

median

一連の値の中央値を返します。

stddev

一連の値の標準偏差を返します。

分散

値のセットの分散を返します。

算術演算

式は、次の算術演算と組み合わせることができます。

オペレーション

説明

expr1 + expr2

expr1 と expr2 の合計を返します。

expr1 - expr2

expr1から expr2 を減算したときの差を返します。

multiplier * multiplicand

2 つの式の製品を返します。

dividend/divisor

配当を除数で除算した結果を返します。

- expr

式の否定された値を返します。

+ expr

式の値を返します。

try_add(expr1, expr2)

2 つの値を加算します。エラーが発生した場合は、 NULLを返します。

try_subtract(expr1, expr2)

expr1から expr2 を減算します。エラーが発生した場合は、 NULLを返します。

try_multiply(乗数、乗算)

2 つの数値を乗算します。エラーが発生した場合は、 NULLを返します。

try_divide(dividend, divisor)

配当を除数で割ります。エラーが発生した場合は、 NULLを返します。

POWまたはパワー

expr1expr2の累乗にした結果を返します。

キャスト関数

次の関数を使用して、指定した型に値をキャストします。

関数

説明

cast(expr AS type)

expr をターゲット データ型 typeにキャストします。

try_cast(expr AS type)

expr値をターゲットデータ型に安全にキャストtype

日付、タイムスタンプ、および間隔関数

次の関数を使用して、日付、タイムスタンプ、および間隔を操作します。

関数

説明

datediff(endDate, startDate)

startDate から endDateまでの日数を返します。

timestampdiff(unit, start, stop

単位で測定された 2 つのタイムスタンプの差を返します。

date_format(expr, fmt)

タイムスタンプを fmt形式の文字列に変換します。

timediff(unit, start, stop)

単位で測定された 2 つのタイムスタンプの差を返します。

date_part

日付またはタイムスタンプから、年、月、日などの特定の部分を抽出します。

date_trunc

日付またはタイムスタンプを、年や月などの指定した単位に切り捨てます。

文字列関数

次の関数を使用して、文字列を変換します。

関数

説明

concat(expr1, expr2[, …])

引数の連結を返します。

concat_ws(sep[, expr1[, …]])

sepで区切られた文字列の連結を返します。

その他の機能

次の機能もサポートされています。

関数

説明

CASE expr { WHEN opt1 THEN res1 } […] [ELSE def] END

最初のoptNexpr に等しいか、一致しない場合は defresN を返します。

CASE { WHEN cond1 THEN res1 } […] [ELSE def] END

true と評価される最初のcondNresN を返すか、見つからない場合は def を返します。

coalesce(expr1, expr2 [, …])

最初の null 以外の引数を返します。

nvl(expr1, expr2)

expr1NULLの場合は expr2 を返し、そうでない場合は expr1 を返します。