长期监听,第一次呼叫…:-)
所以我对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 editor将其“转换”为:
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,但也不喜欢这样。这能做到吗?也许它只识别表列而不识别表度量?我是否需要创建一个只保存度量值的列?一定有办法的。
非常感谢任何人能提供的帮助!谢谢。
达尔文
1条答案
按热度按时间4xy9mtcn1#
不能在查询编辑器中使用dax度量或使用dax创建的任何表/列。
你有几个选择。
将报表所需的所有日期/数据加载到模型中,并在powerbi中进行过滤。
使用directquery而不是将所有数据加载到模型中,powerbi将在后台执行sql过滤。