Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 如何合并表并将不匹配的记录包含为0而不是null?_Powerbi_Powerquery - Fatal编程技术网

Powerbi 如何合并表并将不匹配的记录包含为0而不是null?

Powerbi 如何合并表并将不匹配的记录包含为0而不是null?,powerbi,powerquery,Powerbi,Powerquery,我在Power Query中有两个表:分析和库存。我需要将它们合并在一起,以便将现有的分析记录添加到库存表中,如果不匹配,“访问”列将变为0。我使用Page/URL作为链接列 库存表 URL | Created By Page1 | John Page2 | Mike Page3 | Scot Page | Visits Page1 | 12 Page2 | 10 Page5 | 5 URL | Created By | Visits Page1 | John | 12

我在Power Query中有两个表:分析和库存。我需要将它们合并在一起,以便将现有的分析记录添加到库存表中,如果不匹配,“访问”列将变为0。我使用Page/URL作为链接列

库存表

URL   | Created By
Page1 | John
Page2 | Mike
Page3 | Scot
Page  | Visits
Page1 | 12
Page2 | 10
Page5 | 5
URL   | Created By | Visits
Page1 | John       | 12
Page2 | Mike       | 10
Page3 | Scot       | 0
分析表

URL   | Created By
Page1 | John
Page2 | Mike
Page3 | Scot
Page  | Visits
Page1 | 12
Page2 | 10
Page5 | 5
URL   | Created By | Visits
Page1 | John       | 12
Page2 | Mike       | 10
Page3 | Scot       | 0
期望结果表

URL   | Created By
Page1 | John
Page2 | Mike
Page3 | Scot
Page  | Visits
Page1 | 12
Page2 | 10
Page5 | 5
URL   | Created By | Visits
Page1 | John       | 12
Page2 | Mike       | 10
Page3 | Scot       | 0
在Power查询中执行合并之前,我使用Text.Trim、Text.Lower、Remove Rows(删除重复项和删除空白行)和Table.SelectRows清除了页面/URL中的数据,以删除任何页面/URL为空的记录

我使用Inventory::Analytics进行了左外连接,但当我按页面查找访问时,访问显示为“空白”而不是0。我试图通过在Power Query
Table.ReplaceValue(referenceToAboveLine,null,0,Text.Replace,{Analytics})中的合并后添加以下代码来解决此问题,但这导致查询耗时过长,我不得不超时


我错在哪里?我是否使用了错误的联接方法?有没有更好的方法在合并后替换空值?

根据我的经验,DAX可以很好地处理空值,因此我不确定您是否需要转换以进行计算,但假设您需要转换

与其使用
Table.ReplaceValue
,不如试试
Table.Transform

Table.TransformColumns(
    referenceToAboveLine,
    {{"Visits", each if _ = null then 0 else _, Int64.Type}}
)

是否有理由需要0而不是null?如果是这样,是否也有将整数存储为文本的原因(
“0”
)。@AlexisOlson将引号编辑掉,因为它是整数而不是文本。并且需要记录为0,这样我就可以安全地在字段上运行计算,还因为任何不匹配的记录在访问计数中都是0,最终用户将理解0,但不一定理解null的含义。我在尝试转换时遇到的问题是找不到表的“访问”列。我只能通过从访问到分析更改为列引用来运行代码(这似乎非常错误,因为我只想将其应用于访问列,而不是合并的整个分析表)。虽然后者会产生一种“可接受”的查询语言,但在实际运行查询时会返回一个错误。在将列合并并展开后,使用您命名的列,而不是“访问”。这里的关键字是“展开”。我没有扩展表,因此无法访问列,即使它已合并到中。一旦我扩展了,上面的代码就可以工作了。展开之前,您使用的是一列表,而不是数字