Power Query .SelectRows基于列表过滤

时间:2018-02-09 22:56:00

标签: powerbi powerquery m

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

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"),则无法使用列表。

由于

2 个答案:

答案 0 :(得分:0)

每列中的ID是唯一的吗?如果是这样,您可以使用内部联接种类进行合并,如果将MyCustomObjectaccnt放入单独的查询中,则可以通过UI(在主页功能区选项卡中)进行合并。

如果ID不是唯一的,您仍然可以执行合并,但是您必须执行其中一个外部联接种类,展开新列,然后使用空ID过滤掉该列。

答案 1 :(得分:0)

似乎问题在于:

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"