该技能是一套针对 Domo 查询的性能优化规则,主要围绕查询形态、聚合策略和载荷最小化展开。
用途 用于指导在 Domo 中编写高效的数据查询,避免因拉取过多数据导致性能问题,尤其适用于包含大型数据集(十万行以上)的数据应用和可视化场景。
主要能力与规则
- 绝不拉取完整数据集:资料强调关键规则是永远不要获取整个数据集,尤其是大型数据集。应始终使用只包含每个可视化所需列的定向查询。示例显示,拉取 30 万行 × 30 列会产生 900 万个数据点,而只选两列可减少约 93% 的数据量;使用服务端聚合后仅返回约 10 至 20 行。
- 查询优化优先级:最优是使用 .groupBy() 配合聚合(服务端聚合);其次是 .select() 只选所需列后在客户端聚合;再次是在无法聚合时选择多列;绝不允许拉取所有列或整个数据集。
- 每个可视化一个查询:每个可视化应有自己独立的优化查询,而不是用一个查询拉取全部数据后再分别计算。
- 列选择策略:始终显式指定列,只选择特定计算所需的列;不要使用不带参数的 .select()(会拉取所有列);聚合时只选择分组列和聚合列。
常见模式
- 无分组的汇总:只选所需列后在客户端求和,或使用常量分组列(若数据集存在)。
- 带过滤的计数:只拉取用于计数的列后在客户端过滤计数,若可行则优先使用服务端计数聚合。
- 唯一值统计:只拉取所需列后在客户端用 Set 统计唯一值数量。
查询 API 限制
- .aggregate() 不可用:资料明确指出某些文档中展示的 .aggregate() 方法在实践中不工作,会报错 DA0057: An alias list was provided but it could not be parsed。替代方案是使用 .groupBy() 配合分组列,或选择列后在客户端聚合。
- .groupBy() 需要分组列:不能只传聚合而不提供分组列;必须提供分组列,可以多次调用 .groupBy()。
性能监控 建议检查网络面板中传输的数据量、控制台是否有大查询警告、响应时间是否过长。若查询慢或返回数据过多,应减少所选列、增加过滤条件减少行数、改用服务端聚合替代客户端聚合,并考虑对大型结果集分页。
适用场景 适用于 Domo 平台上的数据查询编写与性能调优,特别是涉及大型数据集、多可视化仪表盘以及需要减少数据传输量的场景。
限制 资料未提供该技能的具体安装方式、依赖环境、版本信息或收费情况。