繁体   English   中英

如何在 SQL 查询中引用 Power BI 度量?

[英]How can I reference a Power BI measure in a SQL query?

长期倾听者,第一次来电者...... :-)

所以我是 Power BI 的新手,我希望我可以让它工作。 我在下面导入了 SQL 查询:

DECLARE 
    @RangeStart as varchar(19),
    @RangeEnd as varchar(19),
    @ReportStart as date,
    @ReportEnd as date

SET @RangeStart = '2020-01-01 00:00:00'
SET @RangeEnd = '2020-05-31 00:00:00'
SET @ReportStart = CAST(@RangeStart as datetime)
SET @ReportEnd = CAST(@RangeEnd as datetime)

SELECT COUNT(screen_client_id) AS SarpyYtdScreenings
FROM dbo.screen
WHERE (screen_date BETWEEN @ReportStart AND @ReportEnd)

因此,从 Power Query 编辑器,它将其“转换”为:

let
    Source = Sql.Database("freedom1a", "pretrial", [Query="declare #(lf)@RangeStart as varchar(19),#(lf)@RangeEnd as varchar(19),#(lf)@ReportStart as date,#(lf)@ReportEnd as date#(lf)SET @RangeStart = '2020-01-01 00:00:00'#(lf)SET @RangeEnd = '2020-05-31 00:00:00'#(lf)SET @ReportStart = CAST(@RangeStart as datetime)#(lf)SET @ReportEnd = CAST(@RangeEnd as datetime)#(lf)SELECT        COUNT(screen_client_id) AS SarpyYtdScreenings#(lf)FROM            dbo.screen#(lf)WHERE        (screen_date BETWEEN @ReportStart AND @ReportEnd)"])
in
    Source

到目前为止,一切都很好。 但是我创建了一个名为 DateParameters 的“表”,其中包含一些类似于供用户使用的参数的度量,例如“EndDate”和“FirstDayOfYear”。 但我想以某种方式将这些措施传递到我的 SQL 查询中。 我发现一个网站说我可以用度量替换文字 2020-01-01 00:00:00,但我无法让它工作。 我试过了:

let
    Source = Sql.Database("freedom1a", "pretrial", [Query="declare #(lf)@RangeStart as varchar(19),#(lf)@RangeEnd as varchar(19),#(lf)@ReportStart as date,#(lf)@ReportEnd as date#(lf)SET @RangeStart = '"&DateParameters[FirstDayOfYear]&"'#(lf)SET @RangeEnd = '2020-05-31 00:00:00'#(lf)SET @ReportStart = CAST(@RangeStart as datetime)#(lf)SET @ReportEnd = CAST(@RangeEnd as datetime)#(lf)SELECT        COUNT(screen_client_id) AS SarpyYtdScreenings#(lf)FROM            dbo.screen#(lf)WHERE        (screen_date BETWEEN @ReportStart AND @ReportEnd)"])
in
    Source

...几乎可以工作。 当我开始输入 DateParameters 时,它知道我想要什么表,但无论我引用该表中的什么度量,它都无法识别它。 除非我的语法错误。 我也尝试过 DateParameters.FirstDayOfYear,但它也不喜欢那样。 这甚至可以做到吗? 也许它只识别表格列而不识别表格度量? 我是否需要创建一个仅保存度量值的列? 必须有一种方法可以使它起作用。

非常感谢任何人可以提供的任何帮助。 谢谢。

达尔文

您不能在查询编辑器中使用 DAX 度量或使用 DAX 创建的任何表/列。


你在这里有几个选择。

  1. 将报告所需的所有日期/数据加载到 model 中,并在 Power BI 中进行过滤。

  2. 使用 DirectQuery 而不是将所有数据加载到 model 中,Power BI 将在后台执行 SQL 过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM