DAX分享14: 举例如何解决一个Power BI Direct Query问题

浏览: 1280

​大概7月初发现下面这个问题的。

项目是通过Power BI Desktop连接Direct Query做数据源,然后Power BI Embeded发布到网页上的。之前发布都没有问题,但是2020年7月初的时候,发布报表就有问题了。因为之前的版本和之后的版本相比,基本只是报表样式的修改,所以可以排除数据影响。但是这个明显是数据层面的错误,所以猜测大概率是微软月度更新产生的问题。

换个角度,也许这是是在说,如果用Direct Query就不应该在Power Query Editor部分加入复杂操作?我也不是很确定。不过这个错误今天还是解决了,通过简化M Query部分的操作,基本上全在SQL Query里面实现了M Query的操作。

之前publish到网页的错误如下:

今天在处理了v_kpi_target之后就好了。成功了,错误没有了。

具体操作如下:

  1. 根据错误信息,找到v_kpi_target表

    先通过transform data,到Power Query Editor部分。点中表名,得到这个表的操作步骤。如下图所示。

Advanced Editor ,得到如下代码:

let    Source = Sql.Database("asql-XXX-XXX-XX-XXX.database.windows.net""XXX-manager"),    insights_reporting_bi_v_kpi_threshold_target = Source{[Schema="insights_reporting_bi",Item="v_kpi_threshold_target"]}[Data],    #"Removed Columns" = Table.RemoveColumns(insights_reporting_bi_v_kpi_threshold_target,{"kpi_overview", "url", "threshold"}),    #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[kpi_name]), "kpi_name", "target", List.Sum)in    #"Pivoted Column"

2,尽量用query来表达这个结果。

根据Advanced Editor的内容:

a. 选出v_kpi_threshold_target表的内容;

b.去掉其中三个字段;

c.Pivot剩下的两个内容

3. 读懂了M query的操作,下面写SQL Query,内容如下:

 select [OPEX],[Officer Matrix Compliance],[Revenue],[No business lost],[KPI 1],[KPI 3],[NCF],[KPI 4],[KPI 5],[KPI 2],[Projects] from ( select [kpi_name],   [target]    from [insights_config].[t_kpi_threshold_and_target] ) as f    pivot    (    sum([target])for    [kpi_name] in    (    [OPEX],[Officer Matrix Compliance],[Revenue],[No business lost],[KPI 1],[KPI 3],[NCF],[KPI 4],[KPI 5],[KPI 2],[Projects]    )     ) as pivot_tb

哇哈哈哈,截取了部分内容,不过也能跑的。

在实现Power Query Editor里面的内容如下图后

报表再嵌入到网页就没有报错了。

所以是不是说,如果使用Direct Query,其实更倾向于不要在使用M Query表达式会更好呢?文档懒得找啊~~不过实践来看,好像是有这样的倾向的。

所以我在做AAS+Power BI的solution的时候,虽然使用import table,但是也会把一些逻辑写在View里面,然后用View做数据源。

每个人的问题都不一样,不过大多数情况下,错误信息基本上就提示了解决方案。慢慢来吧。懒~~

周末愉快。


谢谢关注。


推荐 0
本文由 懒胖子 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册