【问题标题】:Power BI - comparing row value with column from another table results in excessive computational loadPower BI - 将行值与另一个表中的列进行比较会导致计算负载过大
【发布时间】:2021-02-25 17:17:56
【问题描述】:

我正在分析来自防火墙的日志,我想在 Power Query M 中添加两列以确定源 IP 地址或目标 IP 地址是 LAN 地址还是来自 Internet。

我创建了一个名为 Private_IPs.txt 的文件,其中逐行包含所有内部子网(10. 、172.16.、172.17. 等)并将其加载为表格。

计算代码如下:

#"Add dst isPrivate" = Table.AddColumn(#"Add src isPrivate", "dst_isPrivate", each List.Count(let tmp_dst = [dest_ip] in List.Select(Table.Column(Private_IPs, "Subnet"), each Text.StartsWith(tmp_dst, _))))
  1. 它通过选择表Private_IPs 的列"Subnet" 创建一个列表
  2. 从此列表中,它只保留[dest_ip] 开头的元素(如果有)。
  3. 然后它计算过滤列表中的项目数,因此我的结果列值为 0 或 1

它可以工作,但问题是当我刷新数据时,它会为表格的每一行加载文件“PrivateIPs.csv”两次,导致加载时间几分钟和几分钟,计数器报告类似

“来自 Private_IPs.csv 的 10MB”

“来自 Private_IPs.csv 的 20MB”

[...]

“来自 Private_IPs.csv 的 400MB”

为什么会这样?它不应该将表保存在内存中而不是每次都从文件中读取吗?我该如何做到这一点?它只是一个包含 17 行的文本文件,也许我的解决方案太复杂了?

【问题讨论】:

    标签: powerbi powerquery powerbi-desktop m


    【解决方案1】:

    由于带有私有子网的表非常小并且不会更改,因此我在查询编辑器中手动创建了它,现在它只加载一次。

    【讨论】:

    • 另一种解决方案云是 Table.Buffer
    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多