PowerQuery(在PowerBI中)奇怪的缓存问题

时间:2019-05-27 02:17:21

标签: caching powerbi powerquery

在过去的几天中,我一直在努力解决Power BI Desktop中Power Query中一个奇怪的问题。


我有两个表,一个表称为“映射”表,该表的目的是在进行一系列转换后为我提供一个名为“ FMReference”的列。 Mappings Screenshot

我有一个名为“ Entry”的主表,该表没有FMReference,因此需要与Mappings表合并。为了简化合并,我在两个名为“ CombinedForMerge”的表上创建了一个简单列。 Entry Screenshot

完成各列的设置后,我将使用刚刚创建的各列继续创建带有Entry和Mappings表的Left Outer Merge。 Left Outer Merge Screenshot

正如您在屏幕截图中看到的那样,FMReference列显示为A4.28,这是我期望得到的结果。但是,一旦我扩展了合并以提供FMReference,我就会得到一个不同的值A3.2! Wrong Value Screenshot


Power BI显然在PowerQuery上缓存了错误的值,因为我已经将“映射”表过滤为“仅”一行,以使“仅”值为一个。 Filtered Mappings Screenshot

我曾尝试从Power BI选项中清除缓存,但这并没有改变任何内容。

我还尝试从干净的新PBIX重建Power BI报告,只是复制了到目前为止的转换,但是我仍然遇到同样的问题。

我尝试将Mappings表的结果复制到静态表中,并将其用于合并。这项工作有效,这显然意味着需要对Power BI上的数据转换进行缓存。

我刷新了Preview,并且刷新了几次,但仍然返回错误的结果。


在此,我将不胜感激,因为数据非常敏感,所以我不能分享太多信息,但是如果需要,我很乐意提供更多详细信息。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用模糊合并设置精确匹配时,我遇到了类似的莫名其妙的奇怪行为。我结束了交换表并改为使用Right Outer合并的方法。由于某种原因,这行得通。我不知道是什么引起了问题,或者为什么右外部合并方法起作用了。很奇怪。

所以我的意思是:与其从XXXXEntry开始合并,并通过Left Outer合并匹配XXXXMappings,不如尝试从XXXXMappings开始并通过Right Outer合并匹配XXXXEntry。

一种方法是,如果您仍然希望在同一查询中的同一位置进行合并,则只需在编辑栏中编辑现有查询的代码即可。为此,请单击与合并关联的“已应用步骤”,最有可能称为“合并查询”。然后在编辑栏中,交换对表的引用,并将JoinKind.LeftOuter更改为JoinKind.RightOuter。 (一个表引用可能是“合并查询”步骤之前的“已应用”步骤的名称,而不是XXXXEntry。对我而言,在以下示例之前和之后的示例中,其名称均为“更改类型”。)

之前:

= Table.NestedJoin(#"Changed Type", {"CombinedForMerge"}, XXXXMappings, {"CombinedForMerge"}, "Changed Type", JoinKind.LeftOuter)

之后:

= Table.NestedJoin(XXXXMappings, {"CombinedForMerge"}, #"Changed Type", {"CombinedForMerge"}, "XXXXMappings", JoinKind.RightOuter)

祝你好运。