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

式を使ったカスタム指標の設定

最終更新 2026/10/03

右側からフィールドをドラッグして集計方式を選択するほか、カスタム指標を直接追加することもできます。

ヒント

BIダッシュボードの編集中は、カスタム指標のデータ結果は表示されません。結果はプレビューで確認できます。プレビューについて詳しくは、プレビュー、一時保存、オンラインを参照してください

分析シナリオに応じて、現在の言語(Trinoなど)でサポートされている集約関数を使ってフィールド式を作成できます。以下ではTrinoを例に、よく使われる関数を紹介します。式に異常があるとクエリでエラーになるため、オンラインにする前にロジックに誤りがないことを確認してください。

なお、フィールド式で最終的に生成されるデータ結果は数値タイプである必要があります。数値以外のタイプのカスタム指標は-と表示されます。

基本の集約関数​

通常の指標と同じ集計方式を使用できます

関数説明
count(x)カウント。null値は除外されます
count(distinct x)重複を除いたカウント。null値は除外されます
avg(x)平均値。数値タイプのフィールドのみ対応
sum(x)合計。数値タイプのフィールドのみ対応
max(x)最大値。数値タイプのフィールドのみ対応
min(x)最小値。数値タイプのフィールドのみ対応

上記の集約関数のほかに、次の集約関数も使用できます

関数説明
count(*)カウント。count(x)との違いは、空の行もカウントされることです
max_by(x,y)入力値のうち、yの最大値に関連付けられたxの値
min_by(x,y)入力値のうち、yの最小値に関連付けられたxの値
approx_distinct(x)近似的な重複除外カウント。count(distinct x)との誤差は4‰です

詳しくは、Aggregate functionsを参照してください

集約処理中のフィルター

集約関数を使用するときは、FILTERとWHERE句で表した条件を組み合わせて、集約処理から行を除外できます

データが次のとおりだとします

channelpay_amount
iOS648
Android68

カスタム指標を2つ作成すると、「行から列への変換」を実現できます

-- iOSチャネルの売上
sum("pay_amount") filter(where "channel" = 'iOS')
-- Androidチャネルの売上
sum("pay_amount") filter(where "channel" = 'Android')

四則演算​

フィールド式では、四則演算の記号や具体的な数値を使って、課金率やARPUなど、ビジネスシナリオに応じた数式タイプの指標を作成できます

Operator説明
+加算
-減算
*乗算
/除算

なお、Trinoでは、フィールドタイプがintまたはbigintで、除算の結果に小数を残したい場合は、式の中でまずcast(フィールド as double)を行ってから計算する必要があります。また、四則演算のいずれかの項がnullの場合は最終的な結果もnullになるため、事前に処理してください


上記のOperatorのほかに、次の関数も使用できます

関数説明
abs(x)絶対値
ceiling(x)xを切り上げた、最も近い整数を返します
floor(x)xを切り捨てた、最も近い整数を返します
approx_distinct(x)近似的な重複除外カウント。count(distinct x)との誤差は約4‰です

詳しくは、Mathematical functions and operatorsを参照してください

条件式​

カスタム指標では、条件式を組み合わせて必要な指標の結果を得ることができます

関数説明

CASE expression

WHEN value THEN result

[ WHEN ... ]

[ ELSE result ]

END

上から順に条件を判定し、最初に条件を満たしたときの結果を返します。どの条件も満たさない場合はelseの結果を返します
if(condition, true_value, false_value)条件を判定し、真の場合と偽の場合で異なる結果を返せます
coalesce(value1, value2[, ...])最初のnullでない値を返します。nullになるのを避けるために使用できます

詳しくは、Conditional expressionsを参照してください

ウィンドウ関数​

構文:関数 OVER (PARTITION BY パーティションフィールド ORDER BY 並べ替えフィールド)

ヒント

注意:ウィンドウ関数を使用する場合、関係するパーティションフィールドや並べ替えフィールドは、集約関数またはgroup byで使用されているフィールドである必要があります(must be an aggregate expression or appear in GROUP BY clause)

BIダッシュボードでは、選択したディメンションに基づいてgroup byが行われ、順にgroup_0、group_1……という別名が付けられます。パーティションフィールドや並べ替えフィールドには、この名前を使用する必要があります

詳しくは、Window functionsを参照してください

集約関数​

すべての集約関数は、OVER句を追加することでウィンドウ関数として使用できます

データが次のとおりだとします

userchannelpay_amount
aiOS648
bAndroid68
cAndroid6
dAndroid128

最終的に次の結果を得たいとします

userchannelchannel内での売上の割合
aiOS648
bAndroid68 / (68 + 6 + 128)
cAndroid6 / (68 + 6 + 128)
dAndroid128 / (68 + 6 + 128)

userとchannelをディメンションにドラッグし、カスタム指標を1つ作成します

sum("pay_amount")/ sum("pay_amount") over(partition by "group_1")

ランキング関数​

関数説明
rank()値グループ内での値の順位を返します。順位は、その行より前にある、同順位ではない行の数に1を加えた値です
dense_rank()値グループ内での値の順位を返します
row_number()各行に一意の連続した番号を返します

値関数​

関数説明
first_value(x)ウィンドウの最初の値を返します
last_value(x)ウィンドウの最後の値を返します
nth_value(x, offset)ウィンドウの先頭からoffsetで指定した位置の値を返します。offsetは1から始まり、任意のスカラー式を指定できます。nullの場合、またはウィンドウのサイズを超える場合はnullを返します
lead(x[, offset[, default_value]])ウィンドウ内で現在の行からoffset行後の値を返します。offsetには任意のスカラー式を指定でき、デフォルトは1(次の行)です。nullの場合はエラーになり、ウィンドウのサイズを超える場合はdefault_valueを返します。default_valueを指定していない場合はnullを返します
lag(x[, offset[, default_value]])ウィンドウ内で現在の行からoffset行前の値を返します。offsetには任意のスカラー式を指定でき、デフォルトは1(前の行)です。nullの場合はエラーになり、ウィンドウのサイズを超える場合はdefault_valueを返します。default_valueを指定していない場合はnullを返します

よくある質問​

Q:設定したカスタム指標のデータが表示されないのはなぜですか?

A:式の設定に次のような誤りがないか確認してください

  • フィールドは構文規則に従う必要があります。SR構文の場合は``で囲み、Trino構文の場合は""で囲んでください
  • 式で生成される指標の結果は数値タイプである必要があります。max(文字列フィールド)などの関数で数値以外の結果になった場合は表示できません

Q:クエリでエラーが発生するのはなぜですか?

A:式の設定に次のような誤りがないか確認してください

  • 存在しないフィールドを使用している
  • 式が不完全である(括弧が不足しているなど)
  • サポートされていない関数を使用している、または集約関数を使わずにフィールドを直接使用している

Q:ディメンションフィールドはカスタマイズできますか?

A:現在は対応していません。ワークシートのSQL文を調整して、新しいディメンションフィールドを追加できます

このページは役に立ちましたか?