Appearance
Are you an LLM? You can read better optimized documentation at /md/chart-options/dimension-metrics.md for this page in Markdown format
ディメンションとメトリクス
概要
- ディメンションやメトリクス等の型定義や設定例について説明します。
- 事前にチャート設定のデータモデリングについても確認してください
ディメンション
型定義
- データソースとして、
- カラムを指定する場合は
fieldにカラム名を指定します- カラムのデータ型に応じて、
ExtraDimensionFieldOptionsによる加工も可能です
- カラムのデータ型に応じて、
- カスタムSQLを指定する場合は
is_custom_sql: trueを指定し、sqlにSQL文字列を指定します
- カラムを指定する場合は
display_nameを指定すると、チャートの凡例やツールチップの表示名を指定できます
ts
type DimensionField =
| ({
field: string; // カラム名を指定
display_name?: string;
} & ExtraDimensionFieldOptions)
| {
is_custom_sql: true;
sql: string;
alias: string;
display_name?: string;
};
type ExtraDimensionFieldOptions =
| {}
| {
enable_range_aggr: true;
// データのバケット化を行う場合に指定
// 生成されるSQL例: FLOOR(${field} / ${range_aggr_step}) * ${range_aggr_step})
range_aggr_step: number;
}
| {
enable_date_trunc: true;
// 日付の端数切り捨てを行う場合に指定
// 生成されるSQL例: DATE_TRUNC(${field}, ${date_trunc_arg})
date_trunc_arg: 'YEAR' | 'MONTH' | 'WEEK';
}
| {
enable_date_extract: true;
// 日付の部分抽出を行う場合に指定
// 生成されるSQL例: EXTRACT(${date_extract_arg} FROM ${field})
date_extract_arg: 'YEAR' | 'MONTH' | 'DAY';
}
| {
enable_datetime_trunc: true;
// 日時型(TSなし)の端数切り捨てを行う場合に指定
datetime_trunc_arg: 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE';
}
| {
// 日時型(TSなし)の部分抽出を行う場合に指定
enable_datetime_extract: true;
datetime_extract_arg: 'YEAR' | 'MONTH' | 'DAY' | 'HOUR' | 'MINUTE';
}
| {
// 日時型(TSあり)の端数切り捨てを行う場合に指定
enable_timestamp_trunc: true;
timestamp_trunc_arg: 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' | 'MINUTE';
timestamp_timezone: string;
}
| {
// 日時型(TSあり)の部分抽出を行う場合に指定
enable_timestamp_extract: true;
timestamp_extract_arg: 'YEAR' | 'MONTH' | 'DAY' | 'HOUR' | 'MINUTE';
timestamp_timezone: string;
};設定例
ts
// カラム category を指定する場合
{ field: 'category', display_name: 'カテゴリ' }
// 日付カラムを月単位で集計する場合
{
field: 'sales_date',
enable_date_trunc: true,
date_trunc_arg: 'MONTH',
display_name: '売上月',
}
// カスタムSQLを指定する場合
// SQLは利用するDWHのSQL構文に合わせて記述してください
{
is_custom_sql: true,
sql: 'IF(category = "FOOD", "FOOD", "OTHERS")',
alias: 'food_or_others',
display_name: 'カテゴリ(食品・その他)',
}メトリクス
型定義
- データソースとして、
- カラムを指定する場合、
aggregatorで集計関数を指定します - カスタムSQLを指定する場合は
is_custom_sql: trueを指定し、sqlに集計関数を含めたSQL文字列を指定します
- カラムを指定する場合、
display_nameを指定すると、チャートの凡例やツールチップの表示名を指定できます
ts
type MetricsField =
| {
field: string; // カラム名を指定
display_name?: string;
aggregator: 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'COUNT' | 'MAX' | 'MIN' | 'ANY_VALUE';
}
| {
is_custom_sql: true;
sql: string; // 集計関数を含める必要があります
alias: string;
display_name?: string;
};設定例
ts
// カラム sales を SUM で集計する場合
{ field: 'sales', display_name: '売上合計', aggregator: 'SUM' }
// カラム id のユニーク数を集計する場合: COUNT(DISTINCT id) が生成されます
{ field: 'id', display_name: 'ユニーク数', aggregator: 'COUNT_UNIQUE' }
// カスタムSQLを指定する場合
// SQLは利用するDWHのSQL構文に合わせて記述してください
{
is_custom_sql: true,
sql: 'SUM(IF(category = "FOOD", sales, 0))',
alias: 'food_sales_sum',
display_name: '食品売上合計',
}その他のカラム指定方法
型定義
- ディメンションやメトリクスの他に、カラムの指定方法として
RawFieldとAttributeFieldがありますRawFieldは、GROUP BY句を伴わないSELECT句で利用され、指定されたカラムをそのまま取得しますAttributeFieldはGROUP BY句を伴うSELECT句で利用され、同じグループ内のいずれかのデータを取得します(通常MAXを利用)
ts
type RawField =
| {
field: string;
display_name?: string;
}
| {
is_custom_sql: true;
sql: string;
alias: string;
display_name?: string;
};
type AttributeField = RawField;カラムを特定するキー
チャート設定内やSQL内で、特定のディメンションやメトリクスを参照する場合、次のキーを利用する場合があります。
ts
// `${field.toLowerCase()}___` or `${alias}`
type DimensionFieldInternalKey = `${string}___` | string;
// `${field.toLowerCase()}___${aggregator.toLowerCase()}` or `${alias}`
type MetricsFieldInternalKey = `${string}___${string}` | string;
// `${field}` or `${alias}`
type RawFieldInternalKey = string;例えば、次のように変換されます。
ts
// ディメンション
{ field: 'category' } // => 'category___'
{ is_custom_sql: true, alias: 'food_or_others', ... } // => 'food_or_others'
// メトリクス
{ field: 'sales', aggregator: 'SUM' } // => 'sales___sum'
{ is_custom_sql: true, alias: 'food_sales_sum', ... } // => 'food_sales_sum'
// その他のカラム
{ field: 'id' } // => 'id'
{ is_custom_sql: true, alias: 'id', ... } // => 'id'