PivotTable

推奨
  • 推奨フィールド構成: 指標 1 個、次元 1
  • データリシェイプをサポート: 少なくとも指標 1 個、次元 0 個 :::

:::info{title=エンコードマッピング} ピボットテーブルは次の視覚チャネルに対応しています:

row : 行次元。複数の次元をサポートし、行上で次元値ごとにデータをグループ化します

column : 列次元。複数の次元をサポートし、列上で次元値ごとにデータをグループ化します

detail : 詳細チャネル。複数の指標をサポートし、セル内に指標値を表示します

説明

ピボットテーブルは、多次元データのクロス分析に適しており、行・列次元と指標の計算方法を柔軟に設定できます。

適用シーン:

  • 複雑な多次元データの統計分析
  • データのドリルダウンと集計表示
  • 業務レポート生成とデータ探索
Warning

データ要件:

  • 行次元 1 個、または列次元 1 個、または指標 1 個以上が必要です
  • データは集計済みである必要があります
  • データはグループ化できる必要があります

デフォルトで有効な機能:

  • 行列ソート、データフィルタリング、集計計算、小計・総計はデフォルトで有効です

chartType

Type: "pivotTable"

説明

ピボットテーブル。多次元データのクロス分析シーンに適しています

'pivotTable'

dataset

Type: Record[]

説明

TidyData 仕様に準拠し、集計済みのデータセットです。グラフのデータソースと構造を定義します。ユーザーが入力するデータセットに追加処理は不要です。VSeed には強力なデータリシェイプ機能があり、自動でデータをリシェイプします。ピボットテーブルのデータは最終的に対応するツリー構造へ変換されるため、ユーザーが手動でデータ処理を行う必要はありません。

[{region:'East China', product:'A', sales:1000}, {region:'East China', product:'B', sales:1500}]

dimensions

Type: TableDimension[] | undefined

説明

ピボットテーブルの行次元と列次元です。データは自動でツリー構造に処理され、行軸と列軸へマッピングされます。

[{id: 'region', alias: 'Region', isRow: true}, {id: 'product', alias: 'Product', isColumn: true}]

id

Type: string

説明

次元に対応するフィールド ID

alias

Type: string | undefined

説明

次元の別名

timeFormat

Type: TimeFormat | undefined

説明

次元の日付フォーマット設定

type

Type: "year" | "quarter" | "month" | "week" | "day" | "hour" | "minute" | "second"

説明

時間粒度。日付表示の精度を決定します

encoding

Type: "row" | "column" | undefined

説明

次元をマッピングするチャネル:

  • row: 複数の次元を行チャネルへマッピングできます

  • column: 複数の次元を列チャネルへマッピングできます

measures

Type: TableMeasure[] | undefined

説明

ピボットテーブルは複数の指標をサポートします。

[{id: 'sales', alias: 'Sales', aggregation: 'sum'}]

id

Type: string

説明

指標 ID。重複できません

alias

Type: string | undefined

説明

指標の別名。重複可能。未設定の場合、alias は id になります

autoFormat

Type: boolean | undefined

説明

自動数値フォーマット。デフォルトで有効で、優先度が最も高いです。

autoFormat=true の場合、すべての numFormat 設定を上書きします。

有効にすると、チャートのデータラベルとツールチップは、指標値と言語環境に基づいて適切なフォーマットを自動選択します。

フォーマット規則: 10進数、compact notation 有効、小数部は最小0桁・最大2桁、自動丸め、ブラウザの Intl.NumberFormat 実装を使用します。

例:

  • locale=zh-CN: 749740.264 → 74.45万

  • locale=en-US: 749740.264 → 744.5K

numFormat

Type: NumFormat | undefined

説明

指標のカスタム数値フォーマット。ラベルとツールチップに自動適用されます。

注意: カスタムフォーマットを使用するには autoFormat=false を明示的に設定する必要があります。そうしないと autoFormat がこの設定を上書きします。

type

Type: "number" | "percent" | "permille" | "scientific" | undefined

説明

数値フォーマットタイプ。数値(10進数)、パーセント(%)、パーミル(‰)、科学表記をサポート

ratio

Type: number | undefined

説明

数値フォーマットの比率。0 にはできません

  • 100000 は 10万 に変換, ratio:10000, symbol:"万"
  • 100000 は 10K に変換, ratio:1000, symbol:"K"

symbol

Type: string | undefined

説明

数値フォーマット記号。例: %, ‰

  • 100000 は 10万 に変換, ratio:10000, symbol:"万"
  • 100000 は 10K に変換, ratio:1000, symbol:"K"

thousandSeparator

Type: boolean | undefined

説明

数値フォーマットの桁区切り

suffix

Type: string | undefined

説明

数値フォーマットの接尾辞

prefix

Type: string | undefined

説明

数値フォーマットの接頭辞

fractionDigits

Type: number | undefined

説明

数値フォーマットの小数桁数。ブラウザの Intl.NumberFormat の minimumFractionDigits と maximumFractionDigits を使用し、significantDigits より優先度は低いです。

  • 1234.5678 は 1235 に変換, fractionDigits:0 (roundingMode:halfCeil)
  • 1234.5678 は 1234.6 に変換, fractionDigits:1 (roundingMode:halfCeil)
  • 1234.5678 は 1234.57 に変換, fractionDigits:2 (roundingMode:halfCeil)
  • 1234.5678 は 1230.568 に変換, fractionDigits:3 (roundingMode:halfCeil)
  • 1234.5678 は 1234.5678 に変換, fractionDigits:4 (roundingMode:halfCeil)
  • 1234.5678 は 1234.56780 に変換, fractionDigits:5 (roundingMode:halfCeil)

significantDigits

Type: number | undefined

説明

数値フォーマットの有効桁数。ブラウザの Intl.NumberFormat の minimumSignificantDigits と maximumSignificantDigits を使用し、fractionDigits より優先度は高いです。

  • 1234.5678 は 1000 に変換, significantDigits:1
  • 1234.5678 は 1200 に変換, significantDigits:2
  • 1234.5678 は 1230 に変換, significantDigits:3
  • 1234.5678 は 1234 に変換, significantDigits:4
  • 1234.5678 は 1234.6 に変換, significantDigits:5 (roundingMode:halfCeil)
  • 1234.5678 は 1234.57 に変換, significantDigits:6 (roundingMode:halfCeil)
  • 1234.5678 は 1234.568 に変換, significantDigits:7 (roundingMode:halfCeil)
  • 1234.5678 は 1234.5678 に変換, significantDigits:8 (roundingMode:halfCeil)

roundingPriority

Type: "morePrecision" | "lessPrecision" | undefined

説明

significantDigits と fractionDigits の両方を設定した場合の数値フォーマットの丸め優先度。ブラウザの Intl.NumberFormat を使用し、Intl.NumberFormat の roundingPriority と同じ規則に従います。

  • 1234.5678 は 1230 に変換, significantDigits:3 (roundingPriority:lessPrecision)
  • 1234.5678 は 1234.5678 に変換, significantDigits:3 (roundingPriority:morePrecision)

roundingMode

Type: "floor" | "ceil" | "expand" | "trunc" | "halfCeil" | "halfFloor" | "halfExpand" | "halfTrunc" | "halfEven" | undefined

説明

数値フォーマットの丸めモード。ブラウザの Intl.NumberFormat を使用し、Intl.NumberFormat の roundingMode と同じ規則に従います。

format

Type: NumFormat | undefined

type

Type: "number" | "percent" | "permille" | "scientific" | undefined

説明

数値フォーマットタイプ。数値(10進数)、パーセント(%)、パーミル(‰)、科学表記をサポート

ratio

Type: number | undefined

説明

数値フォーマットの比率。0 にはできません

  • 100000 は 10万 に変換, ratio:10000, symbol:"万"
  • 100000 は 10K に変換, ratio:1000, symbol:"K"

symbol

Type: string | undefined

説明

数値フォーマット記号。例: %, ‰

  • 100000 は 10万 に変換, ratio:10000, symbol:"万"
  • 100000 は 10K に変換, ratio:1000, symbol:"K"

thousandSeparator

Type: boolean | undefined

説明

数値フォーマットの桁区切り

suffix

Type: string | undefined

説明

数値フォーマットの接尾辞

prefix

Type: string | undefined

説明

数値フォーマットの接頭辞

fractionDigits

Type: number | undefined

説明

数値フォーマットの小数桁数。ブラウザの Intl.NumberFormat の minimumFractionDigits と maximumFractionDigits を使用し、significantDigits より優先度は低いです。

  • 1234.5678 は 1235 に変換, fractionDigits:0 (roundingMode:halfCeil)
  • 1234.5678 は 1234.6 に変換, fractionDigits:1 (roundingMode:halfCeil)
  • 1234.5678 は 1234.57 に変換, fractionDigits:2 (roundingMode:halfCeil)
  • 1234.5678 は 1230.568 に変換, fractionDigits:3 (roundingMode:halfCeil)
  • 1234.5678 は 1234.5678 に変換, fractionDigits:4 (roundingMode:halfCeil)
  • 1234.5678 は 1234.56780 に変換, fractionDigits:5 (roundingMode:halfCeil)

significantDigits

Type: number | undefined

説明

数値フォーマットの有効桁数。ブラウザの Intl.NumberFormat の minimumSignificantDigits と maximumSignificantDigits を使用し、fractionDigits より優先度は高いです。

  • 1234.5678 は 1000 に変換, significantDigits:1
  • 1234.5678 は 1200 に変換, significantDigits:2
  • 1234.5678 は 1230 に変換, significantDigits:3
  • 1234.5678 は 1234 に変換, significantDigits:4
  • 1234.5678 は 1234.6 に変換, significantDigits:5 (roundingMode:halfCeil)
  • 1234.5678 は 1234.57 に変換, significantDigits:6 (roundingMode:halfCeil)
  • 1234.5678 は 1234.568 に変換, significantDigits:7 (roundingMode:halfCeil)
  • 1234.5678 は 1234.5678 に変換, significantDigits:8 (roundingMode:halfCeil)

roundingPriority

Type: "morePrecision" | "lessPrecision" | undefined

説明

significantDigits と fractionDigits の両方を設定した場合の数値フォーマットの丸め優先度。ブラウザの Intl.NumberFormat を使用し、Intl.NumberFormat の roundingPriority と同じ規則に従います。

  • 1234.5678 は 1230 に変換, significantDigits:3 (roundingPriority:lessPrecision)
  • 1234.5678 は 1234.5678 に変換, significantDigits:3 (roundingPriority:morePrecision)

roundingMode

Type: "floor" | "ceil" | "expand" | "trunc" | "halfCeil" | "halfFloor" | "halfExpand" | "halfTrunc" | "halfEven" | undefined

説明

数値フォーマットの丸めモード。ブラウザの Intl.NumberFormat を使用し、Intl.NumberFormat の roundingMode と同じ規則に従います。

encoding

Type: "column" | undefined

説明

指標をマッピングするチャネル:

  • column: 指標列

parentId

Type: string | undefined

説明

フラットな指標設定でツリー状の指標構造を構築します。parentId は親指標グループの ID を指し、階層構築に使用されます。

Tip

指標ツリーの設定方法は2つあります: 方法1は children で指標ツリーを直接設定する方法、方法2は parentId を持つフラットな指標リストを指定する方法です。この2つは同時に使用できません。

page

Type: Page | undefined

説明

ページネーション設定。ページネーションに使用するフィールド名を指定します。次元である必要があります。

field

Type: string

説明

ページネーションフィールド。ページネーションに使用するフィールド名を指定し、次元である必要があります。

currentValue

Type: string

説明

現在のページネーション値。現在ページを決定するために使用する値を指定します。

'2023-01-01'

backgroundColor

Type: BackgroundColor

説明

チャートの背景色。デフォルトは透明です。色名文字列(例: 'red', 'blue')または hex、rgb、rgba 値(例: '#ff0000', 'rgba(255,0,0,0.5)')を指定できます。

borderColor

Type: string | undefined

説明

テーブルの枠線色。

bodyFontSize

Type: number | undefined

説明

テーブル本文のフォントサイズ。

bodyFontColor

Type: string | undefined

説明

テーブル本文のフォント色。

bodyBackgroundColor

Type: string | undefined

説明

テーブル本文の背景色。

headerFontSize

Type: number | undefined

説明

行ヘッダーと列ヘッダーのフォントサイズ。

headerFontColor

Type: string | undefined

説明

行ヘッダーと列ヘッダーのフォント色。

headerBackgroundColor

Type: string | undefined

説明

行ヘッダーと列ヘッダーの背景色。

hoverHeaderBackgroundColor

Type: string | undefined

説明

行または列ヘッダーセルにホバーしたときの背景色。ホバー中の行と列が交差するセルを強調表示します。

hoverHeaderInlineBackgroundColor

Type: string | undefined

説明

行または列ヘッダーセルにホバーしたときの背景色。ホバー中の行と列にあるすべてのセルを強調表示します。

selectedBorderColor

Type: string | undefined

説明

選択セルの枠線色。強調表示に使用します。

selectedBackgroundColor

Type: string | undefined

説明

選択セルの背景色。強調表示に使用します。

bodyCellStyle

Type: BodyCellStyle | BodyCellStyle[] | undefined

説明

テーブル本文部分のセルに特殊なスタイルを設定します。

selector

Type: Selector | Selectors | FieldSelector | undefined

説明

データセレクタ。

selector を設定すると、数値セレクタ、局所データセレクタ、条件付き次元セレクタ、条件付き指標セレクタの4種類のデータマッチング機能を提供します。

selector を設定しない場合、スタイルはグローバルに適用されます。

注意: selectordynamicFilter は同時に使用できません。dynamicFilter の優先度が高いです。

数値セレクタ: selector = "tool" selector = ["tool", "book"] selector = 100 selector = [100, 200]

局所データセレクタ: selector = { profit: 100 } selector = [{ profit: 100 }, { profit: 200 }]

条件付き次元セレクタ: selector = { field: 'category', operator: 'in', value: 'tool' } selector = { field: 'category', operator: 'not in', value: 'book' }

条件付き指標セレクタ: selector = { field: 'profit', operator: '>=', value: 100 } selector = { field: 'profit', operator: 'between' value: [100, 300] }

フィールド列フィルタ: selector = { field: 'category' } selector = { field: ['category', 'profit'] }

field

Type: string | string[]

説明

フィールド名。単一フィールドまたは複数フィールド配列を指定できます。

単一フィールド: field: 'sales'

複数フィールド: field: ['sales', 'profit', 'revenue']

operator

Type: "in" | "not in" | undefined

説明

演算子:

  • in: 次元フィールド値が 'value' リスト内にあるデータ項目を選択

  • not in: 次元フィールド値が 'value' リスト内にないデータ項目を選択

op

Type: "in" | "not in" | undefined

説明

演算子:

  • in: 次元フィールド値が 'value' リスト内にあるデータ項目を選択

  • not in: 次元フィールド値が 'value' リスト内にないデータ項目を選択

operator と同じ。

value

Type: string | number | (string | number)[]

説明

選択する次元値。配列をサポートします。

dynamicFilter

Type: TableDynamicFilter | undefined

説明

動的フィルタ(コード駆動)。

AI 生成の JavaScript コードで複雑なデータフィルタリングロジックを実装します。 Top N、統計分析、複雑条件など、静的 selector では表現しにくいシーンに適しています。

主な機能:

  • 任意の複雑なデータフィルタ条件をサポート

  • データ操作に組み込みユーティリティ関数を使用

  • ブラウザ環境で安全に実行(Web Worker サンドボックス)

環境要件: ブラウザ環境のみをサポートします。Node.js 環境では fallback を使用します。

注意: selectordynamicFilter は同時に使用できません。dynamicFilter の優先度が高いです。

テーブル動的フィルタの設定。

AI 生成の JavaScript コードでセル単位の精密なフィルタリングを実装します。

type

Type: "row-with-field"

description

Type: string | undefined

説明

ユーザーのフィルタリング要件説明(自然言語)。

"売上が 1000 を超えるセルを強調表示"

"各行で最大値のセルを強調表示"

code

Type: string

説明

AI 生成の JavaScript フィルタリングコード。

  • 組み込みユーティリティ関数のみ使用できます(_ または R からアクセス)

  • 入力パラメータ: data(配列)。各項目には行番号を表す _index フィールドが含まれます。

  • セルセレクタ配列を返す必要があります: Array<{ __row_index: number, field: string }>。

  • field が "*" の場合、行全体が強調表示されます。

  • 禁止: eval、Function、非同期操作、DOM API、ネットワークリクエスト。

Top N フィルタ: dynamicFilter = { type: 'row-with-field', description: '売上上位3製品を強調表示', code: const sorted = _.sortBy(data, 'sales'); const reversed = [...sorted].reverse(); const result = _.take(reversed, 3); return _.flatten( _.map(result, item => [ { __row_index: item._index, field: 'product' }, { __row_index: item._index, field: 'sales' } ]) );, enabled: true }

複数条件フィルタ: dynamicFilter = { type: 'row-with-field', description: '利益率が20%を超え、売上が5000を超える製品を強調表示', code: const matched = _.filter(data, item => { const profitRate = (item.profit / item.sales) * 100; return profitRate > 20 && item.sales > 5000; }); return _.flatten( _.map(matched, item => [ { __row_index: item._index, field: 'product' }, { __row_index: item._index, field: 'sales' } ]) );, enabled: true }

相対値フィルタ: dynamicFilter = { type: 'row-with-field', description: '平均を上回る売上の製品を強調表示', code: const avgSales = _.meanBy(data, 'sales'); const matched = _.filter(data, item => item.sales > avgSales); return _.flatten( _.map(matched, item => [ { __row_index: item._index, field: 'product' }, { __row_index: item._index, field: 'sales' } ]) );, enabled: true }

グループ化フィルタ: dynamicFilter = { type: 'row-with-field', description: '各地域で売上が最も高い製品を強調表示', code: const grouped = _.groupBy(data, 'region'); const topByRegion = _.map(_.values(grouped), group => _.maxBy(group, 'sales')); return _.flatten( _.map(topByRegion, item => [ { __row_index: item._index, field: 'product' }, { __row_index: item._index, field: 'sales' } ]) );, enabled: true }

行全体を強調表示: dynamicFilter = { description: '売上が利益を超える行を強調表示', code: const matched = _.filter(data, item => item.sales > item.profit); return matched.map(item => ({ __row_index: item._index, field: '*' }));, enabled: true }

fallback

Type: Selector | Selectors | undefined

説明

コード実行に失敗した場合、または環境がサポートされない場合のフォールバック案。

field

Type: string

説明

次元フィールド ID。

operator

Type: "in" | "not in" | undefined

説明

演算子:

  • in: 次元フィールド値が 'value' リスト内にあるデータ項目を選択

  • not in: 次元フィールド値が 'value' リスト内にないデータ項目を選択

op

Type: "in" | "not in" | undefined

説明

演算子:

  • in: 次元フィールド値が 'value' リスト内にあるデータ項目を選択

  • not in: 次元フィールド値が 'value' リスト内にないデータ項目を選択

operator と同じ。

value

Type: string | number | (string | number)[]

説明

選択する次元値。配列をサポートします。

result

Type: DynamicFilterExecutionResult<RowWithFieldRes> | undefined

説明

動的フィルタ実行結果(ランタイムフィールド)。prepare() フェーズで書き込まれ、実行時は読み取り専用です。

success

Type: false | true

data

Type: T[] | undefined

error

Type: string | undefined

backgroundColor

Type: string | undefined

説明

セルの背景色。

enableBackgroundColorScale

Type: boolean | undefined

説明

セル背景のカラースケールを有効にするかどうか。

backgroundColorScale

Type: { minValue?: number; maxValue?: number; minColor: string; maxColor: string; } | undefined

説明

セル背景色スケールのマッピング。backgroundColor より優先度が高いです。

minValue

Type: number | undefined

説明

最小値。未設定の場合、現在のデータ列の最小値がデフォルトになります。

maxValue

Type: number | undefined

説明

最大値。未設定の場合、現在のデータ列の最大値がデフォルトになります。

minColor

Type: string

説明

最小値に対応する色。

maxColor

Type: string

説明

最大値に対応する色。

enableProgressBar

Type: boolean | undefined

説明

背景プログレスバー(セル値の大きさを反映するバー)を有効にするかどうか。デフォルトでは無効です。

barPositiveColor

Type: string | undefined

説明

セル値が正の場合の背景バーの色。

barNegativeColor

Type: string | undefined

説明

セル値が負の場合の背景バーの色。

barMin

Type: number | undefined

説明

プログレスバーの最小値。 未設定の場合、列の最小値から自動計算されます。

barMax

Type: number | undefined

説明

プログレスバーの最大値。 未設定の場合、列の最大値から自動計算されます。

textColor

Type: string | undefined

説明

セル文字色。

textFontSize

Type: number | undefined

説明

セル文字サイズ。

borderColor

Type: string | undefined

説明

セルの枠線色。

borderLineWidth

Type: number | undefined

説明

セル枠線の線幅。

indicatorsAsCol

Type: boolean | undefined

説明

指標を列として表示するかどうか。true の場合は指標が水平方向(列)に展開され、false の場合は垂直方向(行)に展開されます。

true

totals

Type: PivotTableTotals | undefined

説明

ピボットテーブルの総計と小計設定。

{ row: { showGrandTotals: true, showSubTotals: true, subTotalsDimensions: ['category'] } }

row

Type: RowOrColumnTotalConfig | undefined

説明

行の総計と小計設定。

showGrandTotals

Type: boolean | undefined

説明

総計(総計行/列)を表示するかどうか。

showSubTotals

Type: boolean | undefined

説明

小計を表示するかどうか。

subTotalsDimensions

Type: string[] | undefined

説明

小計対象の次元。これらの次元で小計をグループ化します。

['category', 'region']

column

Type: RowOrColumnTotalConfig | undefined

説明

列の総計と小計設定。

showGrandTotals

Type: boolean | undefined

説明

総計(総計行/列)を表示するかどうか。

showSubTotals

Type: boolean | undefined

説明

小計を表示するかどうか。

subTotalsDimensions

Type: string[] | undefined

説明

小計対象の次元。これらの次元で小計をグループ化します。

['category', 'region']

theme

Type: Theme | undefined

説明

チャートテーマ。テーマは優先度の低い設定で、すべてのチャートタイプで共有される一般設定と、チャートカテゴリ内で共有される固有設定を含みます。

ライトテーマとダークテーマが組み込まれています。ユーザーは Builder でカスタムテーマを定義できます。

'dark'

'light'

'customThemeName'

length

Type: number

brand

Type: brand

locale

Type: "zh-CN" | "en-US" | "ja-JP" | "de-DE" | "id-ID" | "fr-FR" | "ko-KR" | "vi-VN" | undefined

説明

ロケール。チャート言語設定。'zh-CN' と 'en-US' をサポートします。別の方法として intl.setLocale('zh-CN') を呼び出して言語を設定できます。