【问题标题】:Power Query .SelectRows filter based on a listPower Query .SelectRows 基于列表的过滤器
【发布时间】:2018-02-09 22:55:59
【问题描述】:

我创建了一个查询,我希望能够根据另一个表中的列进行过滤,我该如何实现这一点,因为它似乎不起作用?

let
    Source = Salesforce.Data("https://login.salesforce.com/", [CreateNavigationProperties=true]),
    MyCustomObject = Source{[Name="MyCustomObject "]}[Data],
    accnt = Source{[Name="Account"]}[Data],
    accntId = Table.SelectColumns(accnt, {"Id"}),
    accntList = Table.ToList(accntId, Combiner.CombineTextByDelimiter(",")),
    #"Filtered" =  Table.SelectRows(MyCustomObject, each List.Contains(accntList, [AccountId__c]))

 in 
    #"Filtered"

我也尝试过使用List.Contains(accnt[Id]),但没有任何乐趣

如果我将其更改为 each (AccountId__c = "Some Value Here"),它可以工作,但不适用于列表。

谢谢

【问题讨论】:

    标签: powerbi powerquery m


    【解决方案1】:

    每列中的 ID 是否唯一?如果是这样,您可以使用 Inner Join Kind 进行合并,如果您将 MyCustomObject 和 accnt 放入单独的查询中,您可以通过 UI(在“主页”功能区选项卡中)执行此操作。

    如果 ID 不是唯一的,您仍然可以执行 Merge,但您必须执行其中一种 Outer Join Kinds,展开新列,然后过滤掉具有空 ID 的列。

    【讨论】:

      【解决方案2】:

      看来问题出在这条线上:

      accntList = Table.ToList(accntId, Combiner.CombineTextByDelimiter(",")),
      

      我用这一行来转换列表中的字段:

      accntList = List.Distinct(accnt[Id]),
      

      代码将类似于:

      let
          Source = Salesforce.Data("https://login.salesforce.com/", [CreateNavigationProperties=true]),
          MyCustomObject = Source{[Name="MyCustomObject "]}[Data],
          accnt = Source{[Name="Account"]}[Data],
          accntList = List.Distinct(accnt[Id]),
          #"Filtered" =  Table.SelectRows(MyCustomObject, each List.Contains(accntList, [AccountId__c]))
      
       in 
          #"Filtered"
      

      【讨论】:

        猜你喜欢
        • 2022-07-06
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 2020-01-15
        • 1970-01-01
        • 2013-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多