大概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之后就好了。成功了,错误没有了。
具体操作如下:
根据错误信息,找到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做数据源。
每个人的问题都不一样,不过大多数情况下,错误信息基本上就提示了解决方案。慢慢来吧。懒~~
周末愉快。
谢谢关注。