gpt4 book ai didi

powerbi - 在power query language(M语言)中,我们如何手动将自定义 "value"和 "table"列添加到表中?

转载 作者:行者123 更新时间:2023-12-04 17:59:48 32 4
gpt4 key购买 nike

如果我们从 sql 数据库获取数据,在 power 查询中,如果数据库中存在关系,则会自动创建“值”和“表”列。 enter image description here

AFAIK“表”和“值”分别表示一对多和多对一关系。

我的问题是我们的数据库中没有关系。所以 PowerQuery 不能自动生成这些列。 如果我知道主题表之间的关系,如何手动添加这些列?

我找到了返回 Table 对象的 Table.NestedJoin 函数(但性能很低,即使数据库中存在关系。)

但我找不到任何返回值对象(另一个表的记录)的函数。

其他可能存在缺陷的解决方案是;

  1. 您可能会建议我像在数据库中一样获取表格,并在 Power BI 的“关系”部分(或 Excel 中的“power pivot”部分)创建关系。但是我在 power query 中需要这个 Value 对象,因为我想在加载表的所有行之前根据相关表过滤行。
  2. 创建一个连接表的 native 查询,这不是我的偏好。
  3. 正在创建 Table 对象而不是 Value 对象(我们确信只会有一条记录。)我仍然遇到 Table.NestedJoin 方法的性能问题。还有其他选择吗?

提前致谢...

最佳答案

就在今天,我在性能方面遇到了同样的问题,但终于解决了。在我的解决方案中,我使用 View ,但需要过滤即将到来的记录。
当我使用这样的代码时:

let
filter1 = 2016,
filter2 = "SomeText",
tbl = Sql.Database("MyServer","MyDB"){Schema="dbo",Item="MyTableOrView"}[Data],
filteredTable = Table.SelectRows(tbl, each ([field1] = filter1) and ([field2] = filter2))
in
filteredTable

它运行缓慢。但如果我尝试 NestedJoin - 它的性能会好得多。

let
Source = Table.FromColumns({{2016}, {"SomeText"}}, "filter1", "filter2"),
tbl = Sql.Database("MyServer","MyDB"){Schema="dbo",Item="MyTableOrView"}[Data],
filteredTable = Table.NestedJoin(tbl, {"field1", "field2"}, Source, {"filter1", "filter2"}, "NewColumn", JoinKind.Inner)
in
filteredTable

但是,我注意到即使是我得到的最快的设计也比从 View 返回所有 ~~1300 行的查询慢。

我没有 SQL Profiler 来追踪发送到服务器的确切内容,但在我看来,当您使用内部联接时,查询折叠工作正常。

尝试以下操作:对 2 个表进行 2 个查询(没有其他操作!)并在内部加入它们,然后看看它是否运行得更快。

关于powerbi - 在power query language(M语言)中,我们如何手动将自定义 "value"和 "table"列添加到表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911502/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com