Python 中的 DAX 日期查询

问题描述 投票:0回答:2

我正在 Python 脚本中运行 DAX 查询(使用 adodbapi),并希望从两个日期(字段“date_created”)之间的表(称为数据)中提取数据,但是我收到语法错误。

tablestring = 'EVALUATE(CALCULATETABLE(Data,DATESBETWEEN(Data[date_created], 01/02/2021,04/02/2021)))'

df = pd.read_sql(tablestring, conn)
python date dax adodbapi
2个回答
1
投票

这是一种可能有效的模式;

  • 使用函数解压 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)

`


0
投票

避免使用 @Steve_datasci 解决方案,这可能会导致 DAX 注入恶意代码。

© www.soinside.com 2019 - 2024. All rights reserved.