dax-sql

中文文档
0.1.5发布于 2026/11/03MITES Module零依赖构建来源已验证

一个DAX到SQL的编译器,用于表格(TMSL)语义模型,具有DAX语义;在DuckDB上测试

中文使用文档

dax-sql

用于Power BI / Tabular语义模型的DAX到SQL编译器:一个SQL中的DAX查询 SELECT 用DAX的语义。在DuckDB上测试了Power BI自己的答案。没有依赖关系。

最初是由 含硝酸钠Devaraj。

npm install dax-sql
import { createCompiler } from 'dax-sql';
import { tmslToModel } from 'dax-sql/formats/tmsl.js';   // or formats/ossie.js for Apache Ossie

const model = tmslToModel(JSON.parse(bimText));           // a model.bim
const dax = createCompiler(model, { tableSource: t => `read_parquet('data/${t.name}.parquet')` });

const { sql, columns } = dax.compile(`
  EVALUATE
  SUMMARIZECOLUMNS('Date'[Year], "Sales", [Sales Amount])
  ORDER BY 'Date'[Year]`);
// sql: one SELECT for the engine; columns: [{ name: 'Year', type: 'int', ... }, { name: 'Sales', ... }]
  • : 语义模型作为dax-sql的模型对象(DESIGN.md; formats/ 从TMSL中读取一个 model.bim 或者一个 Apache澳大利亚 模型(其度量是DAX或SQL)、DAX查询或SQL SELECT 在模型上,选项 (DESIGN.md); 或任何SQL SELECTS除以模型中的关系。
  • : 一个SQL SELECT 和它的列;对于一条语句,它是SQL,每个语句都已编译到位。
  • 错误: SYNTAX, SEMANTIC, UNSUPPORTED。
  • 测试: 反对Power BI自己的答案 一致性/。

没有实现

  • 对象级安全性,动态格式字符串,窗口函数的reset参数,以及 没有列出的东西 DESIGN.md。
  • FORMAT 仅为en-US,具有恒定模式;没有应用模型格式字符串。
  • DATEDIFF 与 WEEK 计算周日周边界。

从DAX出发,经过设计

  • 文本在分组中区分大小写, DISTINCT排序(按代码点,而不是区域性)和 关系;比较, IN 而表过滤器则不像DAX那样。
  • 文本保留尾随空格(Power BI在加载时删除它们): "a " 和 "a" 是两个 值,在分组中,过滤器,关系和 LEN. 如果它们很重要,就在数据中删除它们。
  • 混合数字和文本的列返回为文本。
  • IFERROR 返回第一个参数:SQL没有错误值。
  • 只读取一个表的查询(VALUES(Customer[City])(切片器的列表)没有空白 行,尽管事实上行有表缺少的键:它是一个plain SELECT DISTINCT。

版本与发布记录

dax-sql 共发布 7 个版本,首次发布于 2026/10/29;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.5latest2026/11/03今天
0.1.42026/11/03今天
0.1.32026/10/313 天前
0.1.22026/10/295 天前
0.1.12026/10/295 天前
0.1.02026/10/295 天前

关于 dax-sql 的常见问题

dax-sql 是什么?

一个DAX到SQL的编译器,用于表格(TMSL)语义模型,具有DAX语义;在DuckDB上测试

如何安装 dax-sql?

在项目目录运行 npm install dax-sql,或使用 pnpm add / yarn add / bun add。

dax-sql 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/dax-sql 是否存在。

dax-sql 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

dax-sql 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

dax-sql 可以商用吗?

dax-sql 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

dax-sql 还在维护吗?

最新版本 0.1.5 发布于 2026/11/03(今天);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/10/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。