Excel Power Query - Dynamics 365 Online - 从另一个 table 获取名称而不合并

Excel Power Query - Dynamics 365 Online - get names from another table without Merge

我正在使用“从 Dynamics 365(在线)获取数据”功能将一些机会从我们的 Dyn365 实例提取到 Excel。某些列(即帐户、卖家等)显示 GUID 而不是名称,为了查看名称,我需要使用合并查询并将相关的 table 拉入 Excel.

问题是,Accounts table 有大约 800k 条记录,Sellers table 也不小,所以即使我减少要加载的列数,它仍然需要大约 7 分钟刷新此查询。我的问题:

  1. 不需要合并 table 就可以实现吗?
  2. 或者,我可以使用合并,但不必将帐户和卖家加载到工作表中吗?
  3. 有没有更好的方法来完成我想做的事情? (动态工作表导出除外)?

//2022 年 5 月 31 日编辑

M代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Opportunities"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"OpportunityID", type text}, {"OpportunityNumber", type text}, {"Account", type text}, {"Seller", type text}}),
    #"Merged Queries" = Table.Buffer(Table.NestedJoin(#"Changed Type", {"Account"}, Accounts, {"AccountID"}, "Accounts", JoinKind.LeftOuter)),
    #"Expanded Accounts" = Table.ExpandTableColumn(#"Merged Queries", "Accounts", {"CustomerName", "Country"}, {"Accounts.CustomerName", "Accounts.Country"}),
    #"Merged Queries1" = Table.Buffer(Table.NestedJoin(#"Expanded Accounts", {"Seller"}, Sellers, {"SellerID"}, "Sellers", JoinKind.LeftOuter)),
    #"Expanded Sellers" = Table.ExpandTableColumn(#"Merged Queries1", "Sellers", {"SellerName"}, {"Sellers.SellerName"})
in
    #"Expanded Sellers"

//Edit2 - 下面甚至不想加载到预览中(即永远行进的蚂蚁)。如果没有“Table.Buffer()”,预览会在几秒钟内加载。

let
    Source = OData.Feed("https://mydomain.crm.dynamics.com/api/data/v8.2/", null, [Implementation="2.0"]),
    #"BufferedOpportunities" = Table.Buffer(Source{[Name="opportunities",Signature="table"]}[Data])
in
    #"BufferedOpportunities"

关于第 2 点:

  1. 您无需将 Accounts 和 Sellers 表加载到工作表中即可进行合并。您可以在 Excel 的查询和连接窗格中右键单击查询,并确保为这两个查询中的每一个都勾选仅创建连接。然后将从工作簿中卸载表格,这将节省大量时间。

编辑:

试试这个。我是徒手输入的,所以不能保证没有错误,但它应该能让你知道你需要做什么。

let
    Source = Excel.CurrentWorkbook(){[Name="Opportunities"]}[Content],
    #"Changed Type" = Table.Buffer( Table.TransformColumnTypes(Source,{{"OpportunityID", type text}, {"OpportunityNumber", type text}, {"Account", type text}, {"Seller", type text}})),
    BufferedAccounts = Table.Buffer(Accounts),
    BufferedSellers = Table.Buffer(Sellers),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Account"}, BufferedAccounts, {"AccountID"}, "Accounts", JoinKind.LeftOuter),
    #"Expanded Accounts" = Table.ExpandTableColumn(#"Merged Queries", "Accounts", {"CustomerName", "Country"}, {"Accounts.CustomerName", "Accounts.Country"}),
    #"Merged Queries1" = Table.NestedJoin(#"Expanded Accounts", {"Seller"}, BufferedSellers, {"SellerID"}, "Sellers", JoinKind.LeftOuter),
    #"Expanded Sellers" = Table.ExpandTableColumn(#"Merged Queries1", "Sellers", {"SellerName"}, {"Sellers.SellerName"})
in
    #"Expanded Sellers"