Delphi、C++ Builder & .NET sgcUI の製品です

sgcPivotGrid、Delphi、C++ Builder & .NET 向けのピボットテーブルグリッド

生の行を、答えに変えます。フィールドを行、列、値にドロップし、日付を年、四半期、月でグループ化して、ドラッグアンドドロップのフィールドリストでユーザー自身にレイアウトを作らせます。型付きの列ストアが 100 万行を 1 秒足らずで再計算し、ダブルクリックすると、どのセルでも元になったソースの行を表示します。

VCL、FireMonkey、WinForms、WPF、Avalonia100 万行: Win64 での再計算の目標は 100 ms無料の .NET Community 版sgcUI Enterprise に含まれます
SalesPivot デモ: Filters、Columns、Rows、Values の各エリアを持つフィールドリストと、それが作るピボット

ピボットテーブルに必要なすべてを

6 つのグループに分けた 15 の機能です。登録版と表示された機能は、無料の .NET Community 版には含まれません。

速度とデータ

一度読み込み、一度再計算します。ウィンドウがあってもなくても動きます。

100 万行をピボットした後の MillionRows デモと、表示される所要時間のラベル

速度とデータ

100 万行を 1 秒足らずでピボット

注文履歴やセンサーログは、すぐにスプレッドシートの限界を超えます。sgcPivotGrid はすべての列を型付きの列ストアに保持し、ソースの行を 1 回走査してセルを集計し、結果のうち見えている部分だけを描画します。100 万行の再計算の QA 目標は Win64 で 100 ms で、MillionRows デモは 100 万行を読み込んでピボットし、自分で測った時間を表示します。

数百万行のテーブルのレイアウトを変えたときに、ユーザーがウィンドウの固まりを見るべきではありません。AsyncCalculation をオンにすると、グリッドはバックグラウンドスレッドで再計算し、新しい結果の準備ができるまで前の結果を画面に残し、UI スレッドで OnCalculated を発生させます。 登録版のみ

  • TsgcPivotEngine はエンジンで、グリッドの Pivot として公開され、単独でも使えます
  • BeginLoad、DefineColumn、AppendRow、EndLoad は、最後に 1 回だけ再計算して行を読み込みます
  • BeginUpdate と EndUpdate は、レイアウトの変更を 1 回のパスにまとめます
  • テキストの列は辞書エンコードされ、合計は常にソースの値から求められ、平均の平均にはなりません
  • AsyncCalculation または RecalculateAsync がバックグラウンドで計算し、CancelCalculation は前の結果を画面に残します
  • .NET では、RecalculateAsync は Task<bool> を返し、CancellationToken を受け取ります

非同期計算は Community 版には含まれません。

ヘルプのトピックを読む 非同期計算のトピックを読む
DataSetPivot デモ: 編集に追従するピボットの上に表示した注文テーブル

速度とデータ

TDataSet、グリッド、自分のコードから取り込む

ピボットを、すでに手元にあるデータに向けます。データセットソースは任意の TDataSet をエンジンにコピーし、ライブ更新がオンなら、ポストのたびに再読み込みするので、ユーザーがフォームで行う編集にピボットが追従します。テーブルソースは、sgcGrid などの任意の IsgcUITable を読み取り、テーブルが変わったときだけ再読み込みします。すでにメモリ上に行を持つコードは、単にそれらを追加します。ピボットがデータへ書き戻すことはありません。

  • TsgcPivotSource_DataSet の DataSet、Active、Columns、LiveUpdates
  • ソースは TDataLink を通じて読み取るので、TDataSet のどの派生クラスでも動作します
  • TsgcPivotSource_Table は sgcGrid などの IsgcUITable を読み取り、TableVersion が変わると再読み込みします
  • .NET では、同じエンジンが DataTable を読み取ります
ヘルプのトピックを読む

分析

営業マネージャーが尋ねる疑問に、プロパティで答えます。

2025 年を四半期と月に展開し、2024 年を折りたたんだピボット

分析

人が考える単位で日付をグループ化

営業レポートを 1 日ずつ読む人はいません。同じ日付フィールドを異なるグルーピングで何度か列に追加すると、sgcPivotGrid は年、四半期、月のレベルを作り、それぞれに小計を付けます。ユーザーはプラスとマイナスのボタンでレベルを開閉でき、コードからはレベル全体を一度に展開できます。展開や折りたたみでは、データを再集計せずに新しいスナップショットを作ります。週と日のグルーピングは、それを必要とする運用レポート向けに用意されています。

  • TsgcPivotDateGrouping: pvdYear、pvdQuarter、pvdMonth、pvdWeek、pvdDay
  • AddField('Date', pvaColumn, pvdQuarter) は、呼び出しごとに 1 つのレベルを追加します
  • 各軸の ExpandAll、CollapseAll、ExpandLevel
  • 独自の位置とキャプションを持つ小計と総計
ヘルプのトピックを読む
3 つのメジャーを並べて表示: 金額の合計、重複を除いた顧客数、平均利益率

分析

重複を除いた個数を含む 8 種類の集計

売上は合計で、注文数は個数ですが、3 月に購入した顧客が何人いるかは重複を除いた個数で、経理部門が求める数値です。各データフィールドが独自の集計を選ぶので、1 つのレイアウトに、売上の合計、重複を除いた顧客数、平均利益率を並べて表示できます。フィールドリストでは、Values チップのボタンで、1 回のクリックで集計を切り替えられます。合計は常にソースの値から計算されます。

  • TsgcPivotAggregation: pvfSum、pvfCount、pvfAverage、pvfMin、pvfMax
  • 統計向けの pvfCountDistinct、pvfStdDev、pvfVar
  • AddDataField('Sales', pvfSum) でメジャーを追加し、各列メンバーの下に複数のメジャーを置けます
  • 8 種類すべてが、無料の Community 版に含まれます
ヘルプのトピックを読む
売上上位 5 製品と「その他」の行。メンバーのチェックリストを開いた状態

分析 登録版のみ

重要なものに絞り込み、上位 N 件を残す

大きなレイアウトは、ユーザーが絞り込めて初めて役立ちます。メンバー、ラベル、値のフィルターが結果を絞り込み、等しいから範囲内、含むまで 13 種類の演算子に対応します。Top N は、各親の中で合計が最大のメンバーを残し、残りを 1 つの「その他」の行にまとめられるので、合計は合ったままです。「その他」のドリルダウンは、そこに含まれるすべてのメンバーのソース行を返します。

  • TsgcPivotFilterOperator: pvcEqual、pvcGreater、pvcBetween、pvcContains、pvcBeginsWith など
  • メンバーのチェックリスト向けの FilterValues と FilterExclude。フィールドリストからも使えます
  • Top N ビュー向けの TopN、TopNOthers、OthersCaption
  • SortBy の pvsValue と pvoDescending で、最大のものから順に並べます

メンバー、ラベル、値のフィルターと並べ替えは、Community 版に含まれます。「その他」付きの Top N は登録版です。

ヘルプのトピックを読む
計算した利益率フィールドと列合計に対する割合を表示した AdvancedPivot デモ

分析 登録版のみ

計算フィールドと総計に対する割合

利益率、利益、構成比は管理職が議論する数値ですが、データベースに列として存在することはまれです。計算フィールドは、IF、ROUND、MIN、MAX、ISNULL と日付関数を使った式から、すべてのソース行の値を計算し、ほかの列と同じように集計されます。「値の表示」は、メジャーを、行、列、総計に対する割合、累計、基準項目との差、順位に変換します。

営業マネージャーは、データにないメンバーも求めます。たとえば East と West を足した 1 行や、Q1 から Q2 を引いた差異の列です。計算アイテムは、同じフィールドの兄弟アイテムに対する数式で、そのようなメンバーを行または列のフィールドに追加します。実際のメンバーの後ろに並び、小計と総計はソース行に基づいたままなので、二重に数えられることはありません。

  • CalculatedFields.Add は、Name と Expression を持つ TsgcPivotCalculatedField を返します
  • 行レベルの評価: 計算した利益の合計は、利益の合計になります
  • ShowAs: pvwPercentOfRow、pvwPercentOfColumn、pvwPercentOfGrandTotal、pvwRunningTotal、pvwDifferenceFrom、pvwRank
  • ShowAsBaseItem は、差を測る基準となるメンバーを選びます
  • Field.CalculatedItems.Add(Name, Formula) で East+West や Q1-Q2 のようなアイテムを定義でき、レイアウト JSON に保存されます

Community 版には含まれません。これらのメンバーは SGC_PIVOTGRID_ADVANCED の下でコンパイルされます。

ヘルプのトピックを読む 計算アイテムのトピックを読む

操作

ユーザー自身が答えを見つけられるようにします。

操作

ドラッグアンドドロップで、ユーザーが自分のレポートを作成

新しい疑問のために、新しいリリースは不要であるべきです。グリッドの隣にフィールドリストを置いてプロパティを 1 つ設定すると、ユーザーはソースの列を Filters、Columns、Rows、Values にドラッグできます。Values にドロップしたテキスト列は個数、数値の列は合計になり、チップのボタンで集計を切り替えられます。各チップは検索ボックス付きのメンバーのチェックリストを開き、遅延モードでは、ユーザーが適用するまで変更が保留されるので、非常に大きなデータで役立ちます。同じフィールドリストは FireMonkey でも動作します。

  • PivotGrid でバインドする TsgcVCLPivotFieldList と TsgcFMXPivotFieldList
  • 4 つのエリア: pvaFilter、pvaColumn、pvaRow、pvaData
  • DeferUpdate と ApplyChanges により、ユーザーの操作が終わったときに 1 回だけ再計算します
  • .NET の WinForms、WPF、Avalonia のフィールドリスト
  • アラビア語とヘブライ語の右から左対応:行ヘッダー領域、列の順序、シェブロン、フィールドリストがミラー化され、XLSX エクスポートは右から左のシートを書き出します
ヘルプのトピックを読む
売上の値に緑のカラースケールを適用した、国別と月別のピボット

操作

カラースケールで、注目すべき箇所がすぐわかる

数値のグリッドは、色を付けるまで物語を隠したままです。書式ルールは、値に応じてデータセルに色を付けます。カラースケールは、メジャーの最小値から最大値のどこにあるかに応じて、各セルを 2 色の間で塗り分け、値のルールは、条件に一致するセルの色を変えたり太字にしたりします。同じルールが、画面にも PNG や SVG の画像にも適用されます。どちらも同じレンダラーで描画されるためです。カスタムの描画コードは不要です。

  • FormatRules コレクションの TsgcPivotFormatRule。オブジェクトインスペクターで編集できます
  • MinColor と MaxColor を持つ pvrColorScale
  • 演算子、BackColor、ForeColor、Bold を持つ pvrValue ルール
  • Measure でデータフィールドを選び、Theme でライトとダークを切り替えます
ヘルプのトピックを読む
グリッドの隣に、1 つのピボットセルの元になった注文を一覧表示した DataSetPivot デモ

操作

どの数値でも、元の行までドリルダウン

合計がおかしく見えるとき、最初の疑問は、どの注文がその合計を構成しているかです。セルをダブルクリックするか、キーボードの Enter キーを押すとドリルダウンし、エンジンは、その値に集計されたソースの行を、行番号として、またはレイアウトに含まれない列を含む、ストアのすべての列を持つテーブルとして返します。DataSetPivot デモは、サイドパネルにセルの元になった注文を一覧表示します。

  • グリッドの OnDrillDown と、コードから実行する DrillDownCell
  • DrillDown は、ソースの行を IsgcUITable として返します
  • GetSourceRows は行番号を返し、SourceValue は値を読み取ります
  • Top N の「その他」の行をドリルダウンすると、そこに含まれるすべてのメンバーの行が返されます
ヘルプのトピックを読む

操作

平易な言葉でレイアウトを依頼

ユーザーは「四半期ごとの売上上位 3 か国」のような質問を、AI クエリバーまたはコードから入力し、TsgcPivotGridAI が AI プロバイダーにレイアウトを依頼します。任意の LLM を利用できます。TsgcUIAIEventProvider は各リクエストを独自のコードに渡し、TsgcUIAIChatProvider は sgcWebSockets の TsgcAIChat コンポーネントを使います。アプリケーションの外に出るのは、質問とフィールドのカタログだけです。名前、キャプション、型、フィールドごとに最大 5 つのサンプル値で、行そのものは送られません。回答は、1 回の再計算で適用する前に実際のフィールドと照合され、元に戻すと前のレイアウトが復元されます。

  • Provider と PivotGrid を持つ TsgcPivotGridAI。VCL、FireMonkey、WinForms、WPF、Avalonia で利用できます
  • Ask は回答を待ち、AskAsync はワーカースレッドで実行し、Cancel で停止します
  • OnBeforeAsk でリクエストを編集または取り消しでき、OnLayout で回答を拒否できます
  • MaxSampleValues でサンプルを制限します。不明なフィールドは破棄され、回答は 64 KB に制限されます
  • sgcPivotGridWS ブリッジの TsgcPivotGridAIQuery は引き続き Chat で動作し、Provider を割り当てた場合は Chat より優先されます

Community を含むすべてのエディションとすべてのプラットフォームで利用できます。AI レイアウトの元に戻す操作は Community 版にはありません。sgcWebSockets プロバイダーには、登録版と登録済みの sgcWebSockets が必要です。Delphi と C++ Builder では sgcUICoreWS、.NET では esegece.sgcUICore.sgcWebSockets パッケージです。

ヘルプのトピックを読む

出力

ファイル、ブラウザー、チャート、サーバージョブに出力できます。

GridToPivotToChart デモ: グリッドの行、ピボット、sgcCharts のチャートを 3 つのペインに表示

出力

見たままをエクスポート、またはチャートに

ピボットは、多くの場合レポートの終わりではなく始まりです。エクスポートはどれも、展開したレベルとフィルターを含め、ユーザーが配置したままのビューを書き出します。スプレッドシート向けの CSV、ほかのシステム向けの JSON、ブラウザーやメール向けの HTML、文書向けの PNG と SVG です。結果は sgcCharts が直接読めるテーブルでもあるので、GridToPivotToChart デモは、データをコピーせずに、グリッドの行からピボット、チャートへと進みます。ファイルだけでなくストリームにも対応します。

経理チームは、ピボットを貼り付けた画像ではなく、書式付きで Excel に渡したいと考えます。SaveToXLSX は外部ライブラリなしで本物のブックを書き出します。列見出しはグループごとに結合され、合計は太字、行はアウトライングループ、見出しは固定され、メジャーの書式は Excel の数値書式に、パーセント表示は Excel のパーセントになります。 登録版のみ

ピボットに追従するチャートには、sgcCharts の TsgcChartTableLink がチャートをピボットの結果にバインドします。値の列ごとに 1 つの系列を作成し、行ラベルをカテゴリに使い、棒、積み上げ棒、折れ線、面を選べます。ピボットが変わると再構築され、系列の色は保持されます。sgcCharts のすべてのエディションに含まれ、sgcGrid でも使えます。下のピボットチャートは、フィールドボタンとチャートデザイナーを加えたものです。

  • ファイルまたはストリームへの SaveToCSV、SaveToJSON、SaveToHTML
  • エンジンと、VCL、FireMonkey、WinForms、WPF、Avalonia の各グリッドの SaveToXLSX
  • サイズを任意で指定できる SaveToPNG と SaveToSVG
  • TsgcPivotGridRenderer は、ウィンドウなしで、サーバーや Linux64 で描画します
  • ResultTable は、表示中の結果を sgcCharts 向けの IsgcUITable として公開します
  • TsgcChartTableLink がチャートをピボットの結果にバインドします。sgcGrid でも使えます

XLSX エクスポートは Community 版には含まれません。そのほかのエクスポートとチャートリンクは、すべてのエディションで使えます。

ヘルプのトピックを読む XLSX エクスポートのトピックを読む ピボットチャートのトピックを読む
PivotChart デモ: ピボットグリッド、フィルタ、列、行、値のフィールドボタン、地域とチャネルごとの売上と数量の複合チャート

出力 登録版のみ

チャートから変更できるピボットチャート

ピボットのチャートは、ピボットと一緒に動くべきです。TsgcPivotChartTable は、ピボットの結果を、メジャーごとに 1 つのグループを持ち、要求に応じて総計も含むチャートテーブルに変換し、sgcCharts の TsgcChartTableLink がそれをプロットします。Layout = pvlBar のフィールドリストは、チャートの上に、フィルタ、列 (凡例)、行 (軸)、値のフィールドボタンとして表示されます。ユーザーはボタンをドラッグしてフィールドを移動し、ファネルでメンバをフィルタし、メニューからフィールドの展開、折りたたみ、削除を行います。すべての変更はピボットエンジンに渡されるため、グリッドとチャートには常に同じレイアウトが表示されます。

チャートデザイナーは、sgcCharts のランタイムチャートエディタに、リンク用のデータページを加えたものです。チャートの種類、列または行ごとの系列、上位 N 件、円グラフの系列、データラベル、総計の行と列、複合チャートの各メジャーの系列の種類と軸を設定できます。タイトル、凡例、軸、色、テーマは、ほかのページに残ります。チャートの設定はピボットのレイアウト JSON に保存され、Delphi と .NET で同じ形式なので、一方で保存したレイアウトをもう一方で読み込めます。

  • 集合縦棒、積み上げ縦棒、100% 積み上げ縦棒、折れ線、面、円、ドーナツ、第 2 軸付きの複合
  • フィールドの移動、フィルタ、展開、折りたたみ、削除ができるフィールドボタン。キーボードからも操作できます
  • Delphi の sgcVCLShowChartDesigner と sgcFMXShowChartDesigner、WinForms と WPF の ShowDesigner、Avalonia の ShowDesignerAsync
  • ピボットレイアウトの charts メンバは、総計、チャートの種類、系列、上位 N 件、タイトル、凡例、色を保持します
  • チャートビューの SaveToPNG、SaveToSVG、ExportToPDF、Print によるエクスポート、または TsgcChartRenderer を使ったウィンドウなしのエクスポート

ピボットチャートには、sgcPivotGrid と sgcCharts の登録版が必要です。2 つの製品は互いに依存せず、sgcUICore の 2 つのインターフェイスを通じてつながります。棒、積み上げ棒、折れ線、面のチャートリンクは、すべてのエディションに含まれます。

ヘルプのトピックを読む
保存済みビュー「地域別の売上」と「製品別の利益率」を表示したレイアウトの一覧

出力 登録版のみ

レイアウトを保存し、1 回の呼び出しで復元

パワーユーザーは、月曜日には地域別の売上、月末には製品別の利益率と、同じビューを何度も作ります。レイアウトの永続化は、フィールド、エリア、グルーピング、集計、並べ替え、フィルター、合計を含むレイアウト全体を JSON として書き出し、1 回の再計算で読み込み直します。ファイル、データベースのフィールド、ユーザープロファイルに保存したり、名前付きビューの一覧を用意したり、あるグリッドのレイアウトを別のグリッドにコピーしたりできます。

  • グリッドとエンジンの SaveLayoutToFile と LoadLayoutFromFile
  • データベースや設定ストア向けの SaveLayoutToString と LoadLayoutFromString
  • グリッド版は、ユーザーが変更した列幅も保持します
  • LoadLayoutFromString(SaveLayoutToString) で、グリッド間でレイアウトをコピーします

Community 版には含まれません。

ヘルプのトピックを読む

アクセシビリティ

スクリーンリーダー、キーボード、ハイコントラスト向けの UI Automation を、設定なしで使えます。

アクセシビリティ

ヘッダー付きで公開されるピボットテーブル

sgcPivotGrid は、折りたたみと展開ができる行ヘッダーと列ヘッダー、データセル、合計を持つ表として、その内容を Microsoft UI Automation に公開します。フィールドリストはエリアごとのフィールドの一覧として公開されるため、スクリーンリーダーのユーザーもピボットを作成できます。

  • 矢印キー、Home、End、Page Up、Page Down でフォーカスセルを移動し、左右キー (またはプラスキーとマイナスキー) でヘッダーを折りたたみ、展開します
  • フィールドリストでは、上下キーでフィールドのフォーカスを移動し、Ctrl+1 から Ctrl+4 でフィールドを行、列、値、フィルターへ移動し、Ctrl+Up と Ctrl+Down で並べ替え、Space で切り替え、Del で削除します
  • フィールドリストのキーは、マウスでフィールドをドラッグする操作の代わりになります
  • 常に表示されるフォーカスリング。Windows のハイコントラストテーマでは、ピボットグリッドはシステムカラーで描画されます

アクセシビリティは、無料の Community 版を含むすべてのエディションで既定で有効です。VCL では Delphi 7 から Delphi 13 までのすべての Delphi と C++Builder のバージョンで、FireMonkey では Windows で、そして WinForms、WPF、Avalonia で使えます。 Delphi と C++Builder では、AccessibleName と AccessibleDescription が UI Automation に公開される名前と説明を設定し、.NET では各フレームワーク標準のアクセシブルな名前とヘルプテキストが同じ役割を果たします。アクセシビリティ適合レポートを参照してください。

ヘルプのトピックを読む

sgcPivotGrid の動作を見る

sgcUI スイートのデモに含まれる sgcPivotGrid:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。

予算に対して計測

QA のパフォーマンスグループは、リリースビルドで、固定データに対する 5 回の実行の中央値として、これらのシナリオを実行します。この数値は各シナリオが収まるべき目標値で、ヘルプに掲載しています。

測定項目結果条件
100 万行の再計算(行フィールド 2 つ、列フィールド 1 つ、Sum 1 つ)100 msWin64 リリースビルド、QA の目標値
100 万行の再計算(行フィールド 2 つ、列フィールド 1 つ、Sum 1 つ)160 msWin32 リリースビルド、QA の目標値
100 万行の AppendRow(テキスト 3 つ、浮動小数点 1 つ、日付 1 つの値)900 msWin64 リリースビルド、QA の目標値
100 万行の AppendRow(テキスト 3 つ、浮動小数点 1 つ、日付 1 つの値)1,400 msWin32 リリースビルド、QA の目標値

出典: これらの数値を解説しているヘルプのトピック。

sgcPivotGrid の主な利用シーン

ERP と基幹業務の開発者

ERP 内での営業と経理の分析

経理担当者と営業担当者に、スプレッドシートへエクスポートせずに、注文テーブルのピボットを提供できます。データセットソースは、ピボットをフォームが使うのと同じ TDataSet にバインドし、ポストされたすべての編集に追従します。日付は年、四半期、月でグループ化され、カラースケールが弱い地域を示し、ダブルクリックすると疑わしい合計の元になった請求書を一覧表示するので、疑問にアプリケーション内で答えられます。

  • ライブ更新付きのデータセットソース
  • 日付のグルーピング
  • カラースケール
  • ドリルダウン
DataSetPivot デモを実行する

アナリストとコントローラー

パワーユーザー向けのセルフサービス分析

パワーユーザーは、変更依頼を出すのではなく、自分で探索したいと考えています。フィールドリストで、行、列、フィルター、値の間でフィールドをドラッグでき、メンバーのチェックリストでデータを絞り込み、保存したレイアウトでお気に入りのビューを呼び戻せます。AI ブリッジを使うと、質問を入力するだけでレイアウトが作られ、答えが意図と違う場合も、元に戻すまで 1 クリックです。

  • フィールドリスト
  • 「その他」付きの Top N
  • レイアウトの永続化
  • AI レイアウト
AdvancedPivot デモを実行する

バックオフィスとレポートサービス

サーバーでの定期レポート

夜間のサマリーに画面は不要です。エンジンとヘッドレスレンダラーは、サービスやコンソールアプリケーションで、Windows でも、Delphi 10.2 以降の Linux64 でも動作します。その日の行を読み込み、保存したレイアウトを適用して、ピボットを PNG、SVG、HTML、CSV として書き出せば、メールに添付したり、イントラネットのページに公開したりできます。

  • ウィンドウなしの TsgcPivotEngine
  • TsgcPivotGridRenderer
  • HTML と CSV のエクスポート
  • Linux64
HeadlessReport デモを実行する

A Pivot Table in a Few Lines

The same API in Delphi, C++ Builder and C#: load 100,000 rows once, then lay out regions by quarter with the largest region first.

A VCL form with a pivot grid and a field list: 100,000 rows loaded with one recalculation, regions by quarter, largest region first.

unit frmSales;

interface

uses
  Classes, Controls, Forms, SysUtils,
  sgcUICore_Theme, sgcPivotGrid_Types, sgcPivotGrid_Fields, sgcPivotGrid_VCL,
  sgcPivotGrid_FieldList_VCL;

type
  TFormSales = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

implementation

procedure TFormSales.FormCreate(Sender: TObject);
const
  Regions: array[0..3] of string = ('North', 'South', 'East', 'West');
var
  vGrid: TsgcVCLPivotGrid;
  vList: TsgcVCLPivotFieldList;
  vField: TsgcPivotField;
  i: Integer;
begin
  vGrid := TsgcVCLPivotGrid.Create(Self);
  vGrid.Parent := Self;
  vGrid.Align := alClient;
  vGrid.Theme := utDark;
  vList := TsgcVCLPivotFieldList.Create(Self);
  vList.Parent := Self;
  vList.Align := alRight;
  vList.PivotGrid := vGrid;
  // load 100,000 rows, one recalculation at EndLoad
  vGrid.Pivot.BeginLoad(True);
  try
    vGrid.Pivot.DefineColumn('Region', pvtText);
    vGrid.Pivot.DefineColumn('Date', pvtDateTime);
    vGrid.Pivot.DefineColumn('Sales', pvtFloat);
    for i := 1 to 100000 do
      vGrid.Pivot.AppendRow([Regions[i mod 4], EncodeDate(2025, 1, 1) + i mod 365,
        10 + (i mod 97) * 1.5]);
  finally
    vGrid.Pivot.EndLoad;
  end;
  // layout: regions by quarter, the largest region first, shown as % of total
  vGrid.Pivot.BeginUpdate;
  try
    vField := vGrid.Pivot.AddField('Region', pvaRow);
    vField.SortBy := pvsValue;
    vField.SortOrder := pvoDescending;
    vGrid.Pivot.AddField('Date', pvaColumn, pvdQuarter).Caption := 'Quarter';
    vField := vGrid.Pivot.AddDataField('Sales', pvfSum);
    vField.ShowAs := pvwPercentOfGrandTotal;
  finally
    vGrid.Pivot.EndUpdate;
  end;
  vGrid.SaveToHTML(ExtractFilePath(ParamStr(0)) + 'sales.html');
end;

end.

ヘルプのトピックを読む →

The same pivot in C++ Builder, with the headers that the packages generate.

#include <vcl.h>
#pragma hdrstop
#include "sgcUICore_Theme.hpp"
#include "sgcPivotGrid_Types.hpp"
#include "sgcPivotGrid_Fields.hpp"
#include "sgcPivotGrid_VCL.hpp"
#include "sgcPivotGrid_FieldList_VCL.hpp"

void __fastcall BuildSalesPivot(TForm *Form)
{
	TsgcVCLPivotGrid *vGrid = new TsgcVCLPivotGrid(Form);
	vGrid->Parent = Form;
	vGrid->Align = alClient;
	vGrid->Theme = utDark;
	TsgcVCLPivotFieldList *vList = new TsgcVCLPivotFieldList(Form);
	vList->Parent = Form;
	vList->Align = alRight;
	vList->PivotGrid = vGrid;
	// load 100,000 rows, one recalculation at EndLoad
	static const String Regions[4] = {"North", "South", "East", "West"};
	Variant vValues[3];
	vGrid->Pivot->BeginLoad(true);
	try {
		vGrid->Pivot->DefineColumn("Region", pvtText);
		vGrid->Pivot->DefineColumn("Date", pvtDateTime);
		vGrid->Pivot->DefineColumn("Sales", pvtFloat);
		for (int i = 1; i <= 100000; i++) {
			vValues[0] = Regions[i % 4];
			vValues[1] = TDateTime((double)EncodeDate(2025, 1, 1) + i % 365);
			vValues[2] = 10 + (i % 97) * 1.5;
			vGrid->Pivot->AppendRow(vValues, 2);
		}
	}
	__finally {
		vGrid->Pivot->EndLoad();
	}
	// layout: regions by quarter, the largest region first, shown as % of total
	vGrid->Pivot->BeginUpdate();
	try {
		TsgcPivotField *vField = vGrid->Pivot->AddField("Region", pvaRow);
		vField->SortBy = pvsValue;
		vField->SortOrder = pvoDescending;
		vGrid->Pivot->AddField("Date", pvaColumn, pvdQuarter)->Caption = "Quarter";
		vField = vGrid->Pivot->AddDataField("Sales", pvfSum);
		vField->ShowAs = pvwPercentOfGrandTotal;
	}
	__finally {
		vGrid->Pivot->EndUpdate();
	}
	vGrid->SaveToHTML(ExtractFilePath(ParamStr(0)) + "sales.html");
}

ヘルプのトピックを読む →

The C# version for WinForms. It uses only features of the free Community edition.

using System;
using System.Windows.Forms;
using esegece.sgcPivotGrid;
using esegece.sgcUICore;

namespace SalesPivot
{
    internal class MainForm : Form
    {
        private static readonly string[] Regions = { "North", "South", "East", "West" };

        public MainForm()
        {
            Text = "Sales pivot";
            var grid = new TsgcWinFormsPivotGrid { Dock = DockStyle.Fill, Theme = TsgcUITheme.utDark };
            var list = new TsgcWinFormsPivotFieldList { Dock = DockStyle.Right, Width = 260, PivotGrid = grid, Theme = TsgcUITheme.utDark };
            Controls.Add(grid);
            Controls.Add(list);

            // load 100,000 rows, one recalculation at EndLoad
            grid.Pivot.BeginLoad();
            try
            {
                grid.Pivot.DefineColumn("Region", TsgcPivotDataType.pvtText);
                grid.Pivot.DefineColumn("Date", TsgcPivotDataType.pvtDateTime);
                grid.Pivot.DefineColumn("Sales", TsgcPivotDataType.pvtFloat);
                for (int i = 1; i <= 100000; i++)
                    grid.Pivot.AppendRow(Regions[i % 4], new DateTime(2025, 1, 1).AddDays(i % 365), 10 + (i % 97) * 1.5);
            }
            finally { grid.Pivot.EndLoad(); }

            // layout: regions by quarter, the largest region first
            grid.Pivot.BeginUpdate();
            try
            {
                var region = grid.Pivot.AddField("Region", TsgcPivotArea.pvaRow);
                region.SortBy = TsgcPivotSortBy.pvsValue;
                region.SortOrder = TsgcPivotSortOrder.pvoDescending;
                grid.Pivot.AddField("Date", TsgcPivotArea.pvaColumn, TsgcPivotDateGrouping.pvdQuarter).Caption = "Quarter";
                grid.Pivot.AddDataField("Sales", TsgcPivotAggregation.pvfSum).DisplayFormat = "#,##0";
            }
            finally { grid.Pivot.EndUpdate(); }
            grid.SaveToHTML("sales.html");
        }

        [STAThread]
        static void Main() { Application.EnableVisualStyles(); Application.Run(new MainForm()); }
    }
}
dotnet add package esegece.sgcPivotGrid.WinForms

ヘルプのトピックを読む →

The Delphi and C++ Builder samples show values as percent of grand total (ShowAs), a Registered edition feature. The C# sample uses only features of the free Community edition.

sgcPivotGrid のデモを実行する

コンパイル済みのデモ実行ファイルは sgcUI_bin.zip にあり、インストールは不要です。すべてのデモのソースは、Delphi、C++ Builder、.NET 向けにパッケージに同梱されています。

SalesPivot

SalesPivot

日付のグルーピング、カラースケール、フィールドリスト、エクスポートを備えた 10 万行の売上データです。SalesPivotFMX は FireMonkey 版です。

DataSetPivot

DataSetPivot

注文の TClientDataSet です。行を編集するとピボットが追従し、セルをダブルクリックするとその注文を一覧表示します。

MillionRows

MillionRows

生成した 100 万行を読み込んでピボットし、かかった時間を表示します。

AdvancedPivot

登録版のみ AdvancedPivot

計算フィールド、値の表示方法、「その他」付きの Top N、レイアウトの保存と読み込みを扱います。

GridToPivotToChart

GridToPivotToChart

sgcGrid の行がピボットにデータを渡し、ピボットの結果が sgcCharts のチャートにデータを渡します。データのコピーはありません。

PivotChart

登録版のみ PivotChart

チャートの上のフィールドボタン、チャートデザイナー、8 種類のチャート、ピボットレイアウトと一緒に保存されるチャートです。C++ Builder 版、SalesPivotFMX の Chart タブ、.NET の PivotChart (WinForms)、PivotChartWpf、PivotChartAvalonia もあります。

HeadlessReport

ウィンドウなしでピボットを組み立て、PNG ファイルにレンダリングします。

登録版のみ AskYourPivot

AI クエリバーに質問を入力すると、定型の回答を返すプロバイダーまたは sgcWebSockets の TsgcAIChat を使う TsgcPivotGridAI を通じて、レイアウトが返されます。元に戻すこともできます。

コンパイル済みデモ

sgcUI 全製品のすぐに実行できる実行ファイルです。インストールは不要です。

sgcUI_bin.zip をダウンロード →

Getting Started ガイド

Delphi (VCL) 向けの QuickStart デモ 5 つが Demos\PivotGrid\Delphi\00.QuickStart に入っています。PDF ガイドが、それらを順を追って解説します。最初のピボットグリッド、行・列・値、合計と書式ルール、データセットへの接続、売上分析アプリケーション。

ガイドをダウンロード(PDF、英語) →

sgcPivotGrid が含まれるエディション

sgcPivotGrid は sgcUI Enterprise に含まれ、単体でも販売しています。All-Access バンドルにも含まれます。

sgcPivotGrid 単体パッケージ

€249 / 開発者、ソースコード一式、1 年間のアップデート付き。

sgcPivotGrid を購入 → 価格を見る →

sgcUI Enterprise

sgcUI 全 17 製品、€699 から。

Enterprise を見る →

.NET

.NET 版も同じ価格です。無料の Community 版が NuGet に esegece.sgcPivotGrid.Community として公開されています。

価格を見る →

無料の Community 版は、NuGet の esegece.sgcPivotGrid.Community です。表に含まれる内容を示します。

機能Community(無料)登録版
ピボットグリッドとフィールドリスト(VCL、FireMonkey、WinForms、WPF、Avalonia)✓✓
CountDistinct、StdDev、Var を含む 8 種類の集計✓✓
日付のグルーピング、小計、総計✓✓
フィルター、並べ替え、ドリルダウン✓✓
条件付き書式とカラースケール✓✓
CSV、JSON、HTML へのエクスポート、ヘッドレスの PNG と SVG、sgcCharts のチャートリンク✓✓
任意の LLM と AI クエリバーによる AI ピボットレイアウト✓✓
計算フィールド−✓
値の表示方法−✓
「その他」付きの Top N−✓
レイアウトの永続化−✓
計算アイテム−✓
Excel XLSX へのエクスポート−✓
非同期計算−✓
ピボットチャート: フィールドボタン、チャートデザイナー、チャートレイアウトの永続化−✓
AI レイアウトの元に戻す操作、sgcPivotGridWS ブリッジ、sgcWebSockets AI プロバイダー−✓

対応フレームワークとプラットフォーム

sgcPivotGrid のコンポーネント

Component機能
TsgcVCLPivotGrid, TsgcFMXPivotGridVCL と FireMonkey 向けのピボットテーブルコントロールです(FMX は XE6 以降)。
TsgcVCLPivotFieldList, TsgcFMXPivotFieldListユーザーがレイアウトを変更できる、ドラッグアンドドロップのフィールドリストです。Layout = pvlBar にすると、ピボットチャートの上のフィールドボタンになります (登録版のみ)。
TsgcPivotEngineGrid.Pivot として参照できる計算エンジンで、ウィンドウなしでも使えます。
TsgcPivotSource_DataSet, TsgcPivotSource_TableTDataSet、または sgcUI のテーブルインターフェイスを実装する任意のテーブルをピボットします。
TsgcPivotGridRendererサーバーとレポート向けのヘッドレスの PNG と SVG の出力です。
TsgcPivotChartTablesgcCharts の TsgcChartTableLink 向けに、ピボットの結果をチャートテーブルとして提供します。メジャーごとに 1 つのグループを持ち、要求に応じて総計も含みます。登録版のみ。
TsgcPivotFormatRuleカラースケールなどの条件付き書式のルールです。
TsgcPivotGridAI平易な言葉の質問を、任意の AI プロバイダーでピボットレイアウトに変換します。すべてのエディション、すべてのプラットフォームで利用できます。
TsgcVCLAIQueryBar, TsgcFMXAIQueryBarsgcUICore の AI クエリバー:質問を入力し、適用された内容を確認し、キャンセルや元に戻す操作ができます。
TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS)AI プロバイダー:1 つのイベントで任意の LLM を使うか、sgcWebSockets の TsgcAIChat を使います(登録版のみ)。
TsgcPivotGridAIQuery (sgcPivotGridWS)sgcWebSockets の TsgcAIChat を渡す Chat プロパティを持つ TsgcPivotGridAI です。登録版のみです。
TargetComponent対応プラットフォーム
Delphi 7 から 13、VCLTsgcVCLPivotGridWin32 と Win64
Delphi XE6 から 13、FireMonkeyTsgcFMXPivotGridWindows、macOS、iOS、Android
C++ Builder 2007 から 13VCL と FMX のピボットグリッド生成された .hpp ヘッダーと静的ライブラリ
Delphi 10.2 から 13、フレームワークに依存しませんエンジン、ソース、エクスポート、レイアウト JSON、ヘッドレスレンダラーLinux64。たとえば、サーバーでピボットレポートを作成できます
.NET Framework 4.7.2、.NET 8、9、10TsgcWinFormsPivotGrid, TsgcWpfPivotGrid, TsgcAvaloniaPivotGridWinForms、WPF、Avalonia、ヘッドレスの PNG と SVG

Avalonia 12:Avalonia ピボットグリッドのページで、TsgcAvaloniaPivotGrid を XAML と C# で紹介しています。

よくある質問

エンジンは大量のデータ向けに作られています。型付きの列ストア、再計算ごとに 1 回のパス、仮想描画を備えます。Win64 での QA の目標値は、100 万行の再計算が 100 ms、追加が 900 ms です。レイアウトの大きさも関係します。MaxCells(既定は 500 万セル)を超えるレイアウトはエラーになるため、日付をグループ化するか Top N を使ってください。

はい。TsgcPivotSource_DataSet は任意の TDataSet をエンジンにコピーし、LiveUpdates が True の間は、ポストのたびに再読み込みします。まとめて編集する場合はオフにして、最後に Load を呼びます。DataSetPivot デモでは、ライブ更新とドリルダウンを備えた TClientDataSet を確認できます。

いいえ。sgcPivotGrid は、アプリケーション内のインメモリエンジンです。データセット、テーブル、自分のコードから行を読み取り、自分で集計するため、データベースサーバーもキューブの設計も不要です。

8 つの上位機能は、計算フィールド、計算アイテム、値の表示方法、「その他」付きの Top N、レイアウトの永続化、XLSX エクスポート、非同期計算、ピボットチャートで、加えて sgcPivotGridWS ブリッジ、sgcWebSockets AI プロバイダー、AI レイアウトの元に戻す操作です。独自のプロバイダーを使う AI ピボットレイアウト、すべての集計、日付のグルーピング、フィルター、並べ替え、ドリルダウン、書式ルール、CSV、JSON、HTML のエクスポート、チャートリンク、フィールドリスト、ヘッドレスの PNG と SVG の出力は、Community 版に含まれます。

送信するのは質問とフィールドのカタログだけです。フィールド名、キャプション、型、フィールドごとに最大 5 つのサンプル値で、行は送りません。回答は実際のフィールドと照合され、不明なフィールドと値は破棄され、使えるレイアウトが残らなければ何も変わりません。すべてのエディションで、TsgcUIAIEventProvider に組み込んだ任意のプロバイダーと共に動作します。すぐに使える TsgcUIAIChatProvider には、登録版と登録済みの sgcWebSockets が必要です。

はい。グリッドとエンジンは、表示中の結果を ResultTable を通じて IsgcUITable として公開します。sgcCharts のテーブルデータソースの Table プロパティにピボットグリッドを設定すると、チャートにユーザーが配置した内容がプロットされます。GridToPivotToChart デモは、sgcGrid、sgcPivotGrid、sgcCharts を連携させます。登録版では、TsgcPivotChartTable とフィールドボタンにより、PivotChart デモのように、チャートから変更できるチャートデザイナー付きのピボットチャートになります。

はい。TsgcPivotGridRenderer は、ウィンドウなしで結果を PNG または SVG に描画し、エンジンは CSV、JSON、HTML をエクスポートします。Linux64 では、フレームワークに依存しないユニット(エンジン、ソース、エクスポート、レイアウト JSON、レンダラー)を Delphi 10.2 以降でコンパイルできます。

sgcPivotGrid のヘルプ

3,000+開発者
20+年
761+コンポーネント
30+API 連携
5プラットフォーム
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

sgcPivotGrid を今すぐお試しください

sgcUI 体験版には、sgcPivotGrid とそのほかのすべての sgcUI 製品が含まれます。