ERP 和业务线开发人员
ERP 内部的销售与财务分析
让会计和销售人员无需导出到电子表格,即可对订单表进行透视。数据集数据源将透视表绑定到您窗体所用的同一个 TDataSet,并跟随每次提交的编辑。日期按年、季度和月分组,色阶标出表现较弱的地区,双击即可列出可疑总计背后的发票,因此问题在您的应用程序内部就能得到解答。
- 带实时更新的数据集数据源
- 日期分组
- 色阶
- 下钻
把原始数据行变成答案。把字段拖到行、列和值中,按年、季度或月对日期分组,并让用户通过拖放字段列表构建自己的布局。类型化列存储可在不到一秒的时间内重新计算一百万行,双击即可显示任意单元格背后的源数据行。
五个分组,十三项功能。标有“注册版”的功能不包含在免费的 .NET 社区版中。
加载一次,计算一次,有无窗口皆可。
速度与数据
订单历史和传感器日志很快就会超出电子表格的承受能力。sgcPivotGrid 将每一列保存在类型化列存储中,对源数据行遍历一遍即可聚合出所有单元格,并且只绘制结果的可见部分。重新计算 1,000,000 行的 QA 预算在 Win64 上为 100 毫秒,MillionRows 演示会加载并透视一百万行,并打印自己的计时。
TsgcPivotEngine 是引擎,在表格上以 Pivot 发布,也可单独使用BeginLoad、DefineColumn、AppendRow 和 EndLoad 加载数据行,最后只重新计算一次BeginUpdate 和 EndUpdate 把布局更改合并为一遍计算
速度与数据
让透视表指向您已有的数据。数据集数据源可将任意 TDataSet 复制到引擎中,开启实时更新后会在每次提交后重新加载,因此透视表会跟随用户在表单中所做的编辑。表数据源读取任意 IsgcUITable,例如 sgcGrid,仅在表发生变化时重新加载。已在内存中持有数据行的代码只需直接追加。透视表绝不会写回您的数据。
TsgcPivotSource_DataSet,带 DataSet、Active、Columns 和 LiveUpdatesTsgcPivotSource_Table 读取 sgcGrid 或任意其他 IsgcUITable,并在 TableVersion 变化时重新加载DataTable销售经理会问的问题,用属性来回答。
分析
没有人会逐日阅读销售报告。把同一个日期字段多次添加到列中,并采用不同的分组,sgcPivotGrid 就会据此构建年、季度和月层级,每个层级都有自己的小计。用户可通过加号和减号按钮展开和折叠层级,您的代码也可以一次展开整个层级。展开或折叠只会构建新的快照,无需再次聚合数据。周和日分组则供需要它们的运营报表使用。
TsgcPivotDateGrouping:pvdYear、pvdQuarter、pvdMonth、pvdWeek 和 pvdDayAddField('Date', pvaColumn, pvdQuarter) 每次调用添加一个层级ExpandAll、CollapseAll 和 ExpandLevel
分析
收入是求和,订单数是计数,但三月份有多少不同的客户购买则是去重计数,这正是财务团队所需的数字。每个数据字段选择自己的聚合方式,因此一个布局可以并排显示销售额之和、不同客户的数量和平均利润率。在字段列表中,值标签上的按钮可一键切换聚合方式。总计始终根据源值计算。
TsgcPivotAggregation:pvfSum、pvfCount、pvfAverage、pvfMin 和 pvfMaxpvfCountDistinct、pvfStdDev 和 pvfVarAddDataField('Sales', pvfSum) 添加一个度量值,每个列成员下可以有多个度量值
分析 仅限注册版
只有当用户能够缩小范围时,大型布局才有用。成员、标签和值筛选可缩减结果,提供从等于到介于、包含等 13 种运算符。前 N 项在每个父级内保留总计最大的成员,并可将其余成员合并为单个“其他”行,因此总计仍然相加一致。对“其他”进行下钻会返回它所包含的每个成员的源数据行。
TsgcPivotFilterOperator:pvcEqual、pvcGreater、pvcBetween、pvcContains、pvcBeginsWith 等FilterValues 和 FilterExclude,也可通过字段列表使用TopN、TopNOthers 和 OthersCaptionSortBy pvsValue 配合 pvoDescending 把最大的排在最前成员、标签和值筛选以及排序包含在社区版中。带“其他”的前 N 项属于注册版。
阅读帮助主题
分析 仅限注册版
利润率、利润和占比是管理者讨论的数字,但它们很少作为数据库中的列存在。计算字段通过表达式为每个源数据行计算一个值,支持 IF、ROUND、MIN、MAX、ISNULL 和日期函数,然后像其他列一样进行聚合。“值显示方式”可将度量值转换为占行、列或总计的百分比、累计、与基准项的差值或排名。
CalculatedFields.Add 返回带 Name 和 Expression 的 TsgcPivotCalculatedFieldShowAs:pvwPercentOfRow、pvwPercentOfColumn、pvwPercentOfGrandTotal、pvwRunningTotal、pvwDifferenceFrom、pvwRankShowAsBaseItem 选择计算差值所依据的成员社区版不含:这些成员在 SGC_PIVOTGRID_ADVANCED 下编译。
阅读帮助主题让用户自己找到答案。
交互
新问题不应该需要新版本。在表格旁边放一个字段列表,设置一个属性,用户即可把源列拖入筛选器、列、行和值。拖到值中的文本列执行计数,数值列执行求和,标签上的按钮可切换聚合方式。每个标签都会打开带搜索框的成员复选清单,延迟模式会让更改保持待定,直到用户应用,这对超大数据很有帮助。同样的字段列表也适用于 FireMonkey。
PivotGrid 绑定的 TsgcVCLPivotFieldList 和 TsgcFMXPivotFieldListpvaFilter、pvaColumn、pvaRow 和 pvaDataDeferUpdate 和 ApplyChanges 在用户操作完成后只重新计算一次
交互
在有人为数字着色之前,数字表格会隐藏背后的故事。格式规则按数值为数据单元格着色:色阶按单元格在度量值最小值与最大值之间的位置,在两种颜色之间渐变,值规则则为符合条件的单元格着色或加粗。同样的规则适用于屏幕以及 PNG 和 SVG 图像,因为两者由同一个渲染器绘制。无需自定义绘制代码。
FormatRules 集合中的 TsgcPivotFormatRule,可在对象检查器中编辑MinColor 和 MaxColor 的 pvrColorScaleBackColor、ForeColor 和 Bold 的 pvrValue 规则Measure 选择数据字段,Theme 在浅色和深色之间切换
交互
当总计看起来不对时,首先要问的是由哪些订单构成。双击单元格或在键盘上按 Enter 即可下钻,引擎会返回聚合到该值中的源数据行,形式为行号,或包含存储中每一列(包括不在布局中的列)的表。DataSetPivot 演示在侧边面板中列出某个单元格背后的订单。
OnDrillDown,以及用于通过代码触发的 DrillDownCellDrillDown 以 IsgcUITable 的形式返回源数据行GetSourceRows 给出行号,SourceValue 读取某个值交互
用户在 AI 查询栏中或通过你的代码输入“按季度列出销售额前三的国家”这样的问题,TsgcPivotGridAI 会向 AI 提供程序请求布局。任意 LLM 均可使用:TsgcUIAIEventProvider 把每个请求交给你自己的代码,TsgcUIAIChatProvider 则使用 sgcWebSockets 的 TsgcAIChat 组件。只有问题和字段目录会离开应用程序:名称、标题、类型以及每个字段最多 5 个示例值,绝不包含数据行。答案会先对照真实字段进行检查,再通过一次重新计算应用,撤销可恢复之前的布局。
Provider 和 PivotGrid 的 TsgcPivotGridAI,适用于 VCL、FireMonkey、WinForms、WPF 和 AvaloniaAsk 等待答案,AskAsync 在工作线程上运行,Cancel 可将其停止OnBeforeAsk 可编辑或取消请求,OnLayout 可拒绝答案MaxSampleValues 限制示例值;未知字段会被丢弃,答案上限为 64 KBTsgcPivotGridAIQuery 仍可通过 Chat 使用,已指定的 Provider 优先于 Chat每个版本和每个平台均可使用,包括社区版;AI 布局的撤销不在社区版中。sgcWebSockets 提供程序需要注册版和已注册的 sgcWebSockets:Delphi 和 C++ Builder 中为 sgcUICoreWS,.NET 中为 esegece.sgcUICore.sgcWebSockets 包。
阅读帮助主题文件、浏览器、图表或服务器任务。
输出
数据透视表往往是报表的开始,而不是终点。每种导出都按用户安排的方式写出视图,包括其展开的层级和筛选:CSV 用于电子表格,JSON 用于其他系统,HTML 用于浏览器或邮件,PNG 和 SVG 用于文档。结果同时也是 sgcCharts 可直接读取的表,因此 GridToPivotToChart 演示无需复制任何数据,即可从表格行到透视表再到图表。流与文件同样适用。
SaveToCSV、SaveToJSON 和 SaveToHTML 保存到文件或流SaveToPNG 和 SaveToSVG,可选指定尺寸TsgcPivotGridRenderer 无需窗口即可绘制,适用于服务器或 Linux64ResultTable 以 IsgcUITable 的形式向 sgcCharts 提供可见结果
输出 仅限注册版
高级用户会反复构建相同的视图:周一按地区看销售额,月末按产品看利润率。布局持久化会将整个布局写成 JSON,包括字段、区域、分组、聚合、排序、筛选和总计,并通过一次重新计算加载回来。可以把它保存在文件、数据库字段或用户配置文件中,提供命名视图列表,或把一个表格的布局复制到另一个表格。
SaveLayoutToFile 和 LoadLayoutFromFileSaveLayoutToString 和 LoadLayoutFromStringLoadLayoutFromString(SaveLayoutToString) 在表格之间复制布局社区版不含。
阅读帮助主题预览显示的内容与打印机和 PDF 得到的完全一致。
打印、预览和 PDF
整个数据透视表都会打印,包括每一行和每一列,而不只是视图中的部分,并保持当前布局:每个区域的字段、展开和折叠的成员、合计、排序顺序、筛选、条件格式和列宽。列标题在每一页的顶部重复,行标题在左侧重复。
Print 显示打印对话框或直接打印到默认打印机,ShowPrintPreview 打开带有翻页、缩放、页面设置、打印和 PDF 导出的预览PrintSettings 保存纸张、方向、页边距、缩放以及页眉和页脚文字,打印机、预览和 PDF 都使用它ExportToPDF 写出带真正文本的矢量页面,默认是带标签的 PDF/UA:每一页都是带列标题和行标题单元格的真正表格,为适应单元格而缩短的标签(例如“Madr...”)也为屏幕阅读器保留完整文本TsgcUIPDFOptions 的 PDFALevel 可为归档加上 PDF/A-2a 或 PDF/A-3a,可单独使用,也可与 PDF/UA 同时使用打印和预览包含在每个版本中,包括免费的社区版,可用于 VCL、FireMonkey、WinForms、WPF 和 Avalonia。在 FireMonkey 中,打印在 Windows 和 macOS 上可用,预览和 PDF 导出则适用于所有平台。PDF 导出需要 sgcUIPDF 桥接和已获许可的 sgcPDF(在 .NET 中为 NuGet 包 esegece.sgcUICore.sgcPDF),因此不包含在社区版中。
面向屏幕阅读器的 UI Automation、键盘和高对比度,无需任何设置。
无障碍
sgcPivotGrid 将其内容作为带有可展开和折叠的行标题和列标题、数据单元格和总计的表格向 Microsoft UI Automation 公开。字段列表按区域公开为字段列表,因此屏幕阅读器用户也可以构建数据透视表。
无障碍功能在每个版本中默认开启,包括免费的社区版,可用于 VCL(Delphi 和 C++Builder 从 Delphi 7 到 Delphi 13 的每个版本)、Windows 上的 FireMonkey,以及 WinForms、WPF 和 Avalonia。在 Delphi 和 C++Builder 中,AccessibleName 和 AccessibleDescription 设置向 UI Automation 公开的名称和说明,在 .NET 中,各框架标准的无障碍名称和帮助文本起同样的作用。请参见无障碍符合性报告。
sgcUI 套件演示中的 sgcPivotGrid:使用内置模拟数据、可离线运行的完整应用程序。
按交易员和时段划分的损益,带色阶和联动图表。
Altamira Markets →
按区域、设备、日期和班次划分的停机数据透视表。
Altamira Plant →
覆盖每条发票行的数据透视表,带热力图和透视图表。
Altamira ERP →QA 性能组在发布版本上运行这些场景,取固定数据上五次运行的中位数。这些数字是每个场景必须满足的预算,已发布在帮助中。
| 测量项 | 结果 | 条件 |
|---|---|---|
| 重新计算 1,000,000 行(2 个行字段、1 个列字段、1 个求和) | 100 ms | Win64 发布版本,QA 预算 |
| 重新计算 1,000,000 行(2 个行字段、1 个列字段、1 个求和) | 160 ms | Win32 发布版本,QA 预算 |
| AppendRow 追加 1,000,000 行(3 个文本值、1 个浮点值和 1 个日期值) | 900 ms | Win64 发布版本,QA 预算 |
| AppendRow 追加 1,000,000 行(3 个文本值、1 个浮点值和 1 个日期值) | 1,400 ms | Win32 发布版本,QA 预算 |
来源:记录这些数据的帮助主题。
ERP 和业务线开发人员
让会计和销售人员无需导出到电子表格,即可对订单表进行透视。数据集数据源将透视表绑定到您窗体所用的同一个 TDataSet,并跟随每次提交的编辑。日期按年、季度和月分组,色阶标出表现较弱的地区,双击即可列出可疑总计背后的发票,因此问题在您的应用程序内部就能得到解答。
分析师与财务主管
高级用户想要探索,而不是提交变更请求。字段列表让他们可以在行、列、筛选器和值之间拖动字段,成员复选清单缩小数据范围,已保存的布局则找回他们最喜欢的视图。借助 AI 桥接,他们还可以输入一个问题并获得自动构建的布局,答案不符合预期时,一键即可撤销。
后台与报表服务
夜间汇总不需要屏幕。引擎和无界面渲染器可在服务或控制台应用程序中运行,在 Windows 上,或自 Delphi 10.2 起在 Linux64 上。加载当天的数据行,应用已保存的布局,并将透视表写成 PNG、SVG、HTML 或 CSV,随时可作为邮件附件,或发布到内部网页面。
Delphi、C++ Builder 和 C# 中使用相同的 API:一次加载 100,000 行,然后按季度布局地区,最大的地区排在最前。
带数据透视表和字段列表的 VCL 窗体:一次重新计算加载 100,000 行,按季度显示地区,最大的地区排在最前。
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.C++ Builder 中的同一个透视表,使用软件包生成的头文件。
#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");
}适用于 WinForms 的 C# 版本。它仅使用免费社区版的功能。
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.WinFormsDelphi 和 C++ Builder 示例将值显示为占总计的百分比(ShowAs),这是注册版功能。C# 示例仅使用免费社区版的功能。
预编译的演示可执行文件位于 sgcUI_bin.zip,无需安装。每个演示的源代码随软件包提供,适用于 Delphi、C++ Builder 和 .NET。
100,000 行销售数据,带日期分组、色阶、字段列表和导出。SalesPivotFMX 是其 FireMonkey 对应版本。
一个订单的 TClientDataSet:编辑一行,透视表随之更新;双击单元格可列出其订单。
加载并透视 1,000,000 行生成的数据,并打印所用时间。
计算字段、值显示方式、带“其他”的前 N 项,以及保存和加载布局。
sgcGrid 中的行为透视表提供数据,透视结果再为 sgcCharts 图表提供数据,无需复制数据。
无需窗口即可构建透视表,并将其渲染为 PNG 文件。
在 AI 查询栏中输入一个问题即可获得布局,通过带预设答案提供程序的 TsgcPivotGridAI 或 sgcWebSockets 的 TsgcAIChat 实现,并支持撤销。
sgcPivotGrid 是 sgcUI Enterprise 的一部分,也可单独购买。sgcPivotGrid 还包含在 All-Access 套餐中。
免费的社区版是 NuGet 上的 esegece.sgcPivotGrid.Community。下表列出了它包含的内容。
| 功能 | 社区版(免费) | 注册版 |
|---|---|---|
| 数据透视表和字段列表(VCL、FireMonkey、WinForms、WPF、Avalonia) | ✓ | ✓ |
| 八种聚合,包括 CountDistinct、StdDev 和 Var | ✓ | ✓ |
| 日期分组、小计和总计 | ✓ | ✓ |
| 筛选、排序和下钻 | ✓ | ✓ |
| 条件格式和色阶 | ✓ | ✓ |
| 导出为 CSV、JSON 和 HTML,无界面 PNG 和 SVG | ✓ | ✓ |
| 使用任意 LLM 和 AI 查询栏的 AI 透视布局 | ✓ | ✓ |
| 计算字段 | − | ✓ |
| 值显示方式 | − | ✓ |
| 带“其他”的前 N 项 | − | ✓ |
| 布局持久化 | − | ✓ |
| AI 布局的撤销、sgcPivotGridWS 桥接和 sgcWebSockets AI 提供程序 | − | ✓ |
| 组件 | 功能 |
|---|---|
| TsgcVCLPivotGrid、TsgcFMXPivotGrid | 适用于 VCL 和 FireMonkey 的数据透视表控件(FMX 自 XE6 起)。 |
| TsgcVCLPivotFieldList、TsgcFMXPivotFieldList | 让用户更改布局的拖放字段列表。 |
| TsgcPivotEngine | 计算引擎,可通过 Grid.Pivot 访问,也可在没有窗口的情况下使用。 |
| TsgcPivotSource_DataSet、TsgcPivotSource_Table | 透视 TDataSet,或任何实现了 sgcUI 表接口的表。 |
| TsgcPivotGridRenderer | 适用于服务器和报表的无界面 PNG 和 SVG 输出。 |
| TsgcPivotFormatRule | 色阶等条件格式规则。 |
| TsgcPivotGridAI | 由任意 AI 提供程序把自然语言问题转换为透视布局,每个版本和每个平台均可使用。 |
| TsgcVCLAIQueryBar, TsgcFMXAIQueryBar | sgcUICore 的 AI 查询栏:输入问题,查看已应用的内容,取消和撤销。 |
| TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS) | AI 提供程序:通过一个事件接入任意 LLM,或使用 sgcWebSockets 的 TsgcAIChat(仅限注册版)。 |
| TsgcPivotGridAIQuery (sgcPivotGridWS) | 带 Chat 属性的 TsgcPivotGridAI,用于 sgcWebSockets 的 TsgcAIChat。仅限注册版。 |
| 目标 | 组件 | 平台 |
|---|---|---|
| Delphi 7 到 13,VCL | TsgcVCLPivotGrid | Win32 与 Win64 |
| Delphi XE6 到 13,FireMonkey | TsgcFMXPivotGrid | Windows、macOS、iOS 和 Android |
| C++ Builder 2007 到 13 | VCL 和 FMX 数据透视表 | 生成的 .hpp 头文件和静态库 |
| Delphi 10.2 到 13,框架无关 | 引擎、数据源、导出、布局 JSON、无界面渲染器 | Linux64,例如在服务器上构建透视报表 |
| .NET Framework 4.7.2、.NET 8、9 和 10 | TsgcWinFormsPivotGrid、TsgcWpfPivotGrid、TsgcAvaloniaPivotGrid | WinForms、WPF、Avalonia,无界面 PNG 和 SVG |
引擎专为大数据而构建:类型化列存储、每次重新计算只需一遍,以及虚拟绘制。Win64 上的 QA 预算是重新计算 1,000,000 行 100 ms,追加这些行 900 ms。布局的大小也很重要:超过 MaxCells(默认 5,000,000 个单元格)的布局会引发错误,因此请对日期分组或使用前 N 项。
可以。TsgcPivotSource_DataSet 将任意 TDataSet 复制到引擎中,在 LiveUpdates 为 True 期间,每次提交后都会重新加载。对于批量编辑,请先关闭它,并在结束时调用 Load。DataSetPivot 演示展示了带实时更新和下钻的 TClientDataSet。
不需要。sgcPivotGrid 是您应用程序内部的内存引擎。它从数据集、表或您自己的代码中读取行,自行完成聚合,既不需要数据库服务器,也不需要设计多维数据集。
四项高级功能:计算字段、值显示方式、带“其他”的前 N 项和布局持久化,以及 sgcPivotGridWS 桥接、sgcWebSockets AI 提供程序和 AI 布局的撤销。使用你自己提供程序的 AI 透视布局、所有聚合、日期分组、筛选、排序、下钻、格式规则、导出、字段列表以及无界面 PNG 和 SVG 输出都包含在社区版中。
只发送问题和字段目录:字段名称、标题、类型以及每个字段最多 5 个示例值,绝不包含数据行。答案会对照真实字段进行验证,未知字段和值会被丢弃,没有可用布局时不会有任何改动。它在每个版本中都可使用,只需把任意提供程序接入 TsgcUIAIEventProvider;现成的 TsgcUIAIChatProvider 需要注册版和已注册的 sgcWebSockets。
可以。表格和引擎通过 ResultTable 以 IsgcUITable 的形式公开可见结果。把 sgcCharts 表数据源的 Table 属性设置为该数据透视表,图表就会绘制用户所排布的内容。GridToPivotToChart 演示串联了 sgcGrid、sgcPivotGrid 和 sgcCharts。
可以。TsgcPivotGridRenderer 无需窗口即可将结果绘制为 PNG 或 SVG,引擎还可导出 CSV、JSON 和 HTML。在 Linux64 上,框架无关的单元自 Delphi 10.2 起即可编译:引擎、数据源、导出、布局 JSON 和渲染器。