SuperAPI AI 工具集

query-builder-dax

数据与分析

查看项目

更新于 10-16 00:31

技能介绍

用途:该技能文档化 DAX 性能测试组件中 Query Builder 生成的规范 DAX 查询结构,对应 src/sempy_labs/semantic_model/_test_dax.py 中的 _build_summarize_dax。当需要修改 Query Builder 状态(列、度量、筛选、排序)到 DAX 的转换时使用,以保证生成查询有效且一致。其模式基于 SUMMARIZECOLUMNS,参考 Michael Kovalsky 的“Using DAX as a Query Language”方法。

主要能力与结构:规范查询形如 EVALUATE SUMMARIZECOLUMNS(属性列, 列筛选, "显示名", [度量]) ORDER BY 列。SUMMARIZECOLUMNS 隐含聚合,模型关系处理连接。元素顺序严格:先属性列('Table'[Column],按窗格顺序),再列筛选 FILTER(KEEPFILTERS(VALUES('Table'[Column])), 谓词),最后度量 "Display Name", [Measure];ORDER BY 位于表表达式之后。表名中 ' 转义为 '',列名中 ] 转义为 ]]。

筛选与谓词:列筛选置于 SUMMARIZECOLUMNS 内;度量筛选不能放入其中,需包裹整个表 FILTER(SUMMARIZECOLUMNS(...), [Measure] > 100),多个度量谓词用 && 连接。_qb_build_predicate 将筛选项映射为布尔谓词:文本支持 eq、ne、contains、startswith;数值/日期/度量支持 eq、ne、gt、ge、lt、le、between;布尔支持 istrue、isfalse;任意支持 blank、notblank。值字面量按数值、日期(YYYY-MM-DD 转 DATE(y,m,d))、文本处理。

排序与边界:ORDER BY 由 Order By 窗格驱动,仅启用项输出,方向 A-Z 为 ASC、Z-A 为 DESC,顺序按窗格。度量可用于 ORDER BY。若 order_by 缺失则回退为所有属性列升序;存在但无启用项则不输出。仅度量时输出无属性、无 ORDER BY 的 SUMMARIZECOLUMNS;无可用内容返回空字符串。TOPN 可限制行数但当前未由 Query Builder 输出。

限制与同步:JS 前端 onBuildClick 以 snake_case 键序列化状态,Python 辅助函数读取;新增运算符或字段元数据时需同时更新 JS 的 QB_OPS/芯片序列化与 Python 的 _qb_build_predicate、_classify_filter_type、_build_summarize_dax。字段对象键为 kind、table、name、data_type、ref;筛选对象另有 op、value、value2;Order By 对象另有 enabled、dir。