You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用adodbapi执行DAX日期区间查询出现语法错误如何解决

错误原因

你代码中的DAX查询语法错误源于日期值的写法不符合DAX语法规范:直接书写的01/02/2021不会被DAX识别为日期类型,会被解析为除法运算表达式,因此触发语法报错。

修复方案

方案1:使用DATE()函数构造日期(最稳妥,无格式歧义)

DAX内置DATE(年,月,日)函数可以明确构造日期值,不会受系统区域设置影响出现月日颠倒的问题,修改后的代码如下:

tablestring = 'EVALUATE(CALCULATETABLE(Data,DATESBETWEEN(Data[date_created], DATE(2021,2,1), DATE(2021,2,4))))'
df = pd.read_sql(tablestring, conn)

方案2:用#包裹日期字面量

如果要直接书写日期字符串,需要用#将日期内容包裹,DAX才会将其识别为日期类型:

tablestring = 'EVALUATE(CALCULATETABLE(Data,DATESBETWEEN(Data[date_created], #01/02/2021#, #04/02/2021#)))'
df = pd.read_sql(tablestring, conn)

注意:该写法需要保证日期格式和你的Power BI/SSAS模型的区域设置一致,避免出现月日识别错误的问题。

动态日期传参推荐写法

如果查询的日期间隔是Python动态生成的变量,推荐使用参数化查询,避免字符串拼接导致的格式错误或注入风险:

import datetime
import pandas as pd

start_dt = datetime.date(2021,2,1)
end_dt = datetime.date(2021,2,4)
tablestring = 'EVALUATE(CALCULATETABLE(Data,DATESBETWEEN(Data[date_created], ?, ?)))'
df = pd.read_sql(tablestring, conn, params=(start_dt, end_dt))

内容的提问来源于stack exchange,提问作者Sanch。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:54:02