Python 中的 DAX 日期查询
DAX dates query in Python
我是 运行 Python 脚本中的 DAX 查询(使用 adodbapi),我想从两个日期(字段)之间的 table(称为数据)中提取数据'date_created'),但是我收到语法错误。
tablestring = 'EVALUATE(CALCULATETABLE(Data,DATESBETWEEN(Data[date_created], 01/02/2021,04/02/2021)))'
df = pd.read_sql(tablestring, conn)
这是一个可能有效的模式;
- 使用函数将 adoadapi 结果解压到 pandas 框架中
- 如果您有一些上游进程使用 read_sql 可以使用的 conn 对象处理此部分,那么您可能只需要在 DATESBETWEEN 输入上使用 date() 函数;没有其余的实现代码很难看到
- 示例代码:
`
import adodbapi
import pandas as pd
import numpy as np
workspace = 'your published workspace'
report = 'report_name'
sec = 'Integrated Security=SSPI'
conn = adodbapi.connect(f"Provider=MSOLAP.8;Data Source='powerbi://api.powerbi.com/v1.0/myorg/{workspace}';Initial Catalog={report};{sec};")
cur = conn.cursor()
def get_df(data):
ar = np.array(data.ado_results) # turn ado results into a numpy array
df = pd.DataFrame(ar).transpose() # create a dataframe from the array
df.columns = data.columnNames.keys() # set column names
return df
your_table_name = "Data"
your_column_name = "date_created"
DAX_Query = f'''
DEFINE
VAR FilteredTable =
FILTER(
'{your_table_name}',
AND(
'{your_table_name}'[{your_column_name}] >= DATE(2021, 1, 2),
'{your_table_name}'[{your_column_name}] < DATE(2022, 4, 2)
)
)
EVALUATE
FilteredTable
'''
cur.execute(DAX_Query)
data=cur.fetchall()
demo_df = get_df(data)
`
我是 运行 Python 脚本中的 DAX 查询(使用 adodbapi),我想从两个日期(字段)之间的 table(称为数据)中提取数据'date_created'),但是我收到语法错误。
tablestring = 'EVALUATE(CALCULATETABLE(Data,DATESBETWEEN(Data[date_created], 01/02/2021,04/02/2021)))'
df = pd.read_sql(tablestring, conn)
这是一个可能有效的模式;
- 使用函数将 adoadapi 结果解压到 pandas 框架中
- 如果您有一些上游进程使用 read_sql 可以使用的 conn 对象处理此部分,那么您可能只需要在 DATESBETWEEN 输入上使用 date() 函数;没有其余的实现代码很难看到
- 示例代码:
`
import adodbapi
import pandas as pd
import numpy as np
workspace = 'your published workspace'
report = 'report_name'
sec = 'Integrated Security=SSPI'
conn = adodbapi.connect(f"Provider=MSOLAP.8;Data Source='powerbi://api.powerbi.com/v1.0/myorg/{workspace}';Initial Catalog={report};{sec};")
cur = conn.cursor()
def get_df(data):
ar = np.array(data.ado_results) # turn ado results into a numpy array
df = pd.DataFrame(ar).transpose() # create a dataframe from the array
df.columns = data.columnNames.keys() # set column names
return df
your_table_name = "Data"
your_column_name = "date_created"
DAX_Query = f'''
DEFINE
VAR FilteredTable =
FILTER(
'{your_table_name}',
AND(
'{your_table_name}'[{your_column_name}] >= DATE(2021, 1, 2),
'{your_table_name}'[{your_column_name}] < DATE(2022, 4, 2)
)
)
EVALUATE
FilteredTable
'''
cur.execute(DAX_Query)
data=cur.fetchall()
demo_df = get_df(data)
`