2017-07-19 95 views
0

我想在第二個電源查詢中創建自定義列時使用來自一個電源查詢的數據,但不知道如何去做(或者如果我要去關於這個錯誤的方式)。如何在一個PowerQuery參考中的自定義列另一個PowerQuery

我有一個查詢(QueryOne),最終返回一個整數列(DataValue)和日期時間列(DateOfCompletion)。然後我有第二個查詢(QueryTwo)具有PeriodName,StartDate和EndDate。我之後,在第二個查詢中有一個計算列,該計算列是QueryOne.DataValue的總和,其中QueryOne.DateOfCompletion位於QueryTwo.StartDate和QueryTwo.EndDate之間。 (所以我得到由PeriodName完成的項目的DataValue)

我似乎無法在QueryTwo上創建自定義列時引用QueryOne;這是可能的還是有一種標準的方法來結合這種形式的數據?

回答

0

這兩個表的行數是否相同?如果添加索引列,則可以引用QueryOne行,然後引用該列。例如,如果索引列被稱爲Index,則QueryOne{Index}[DataValue]將訪問該行的DataValue列中的值。

通常,您可以使用查詢的名稱來訪問自定義列公式中的值。 QueryOne會從QueryOne中爲您提供表格。如果您的查詢名稱中包含空格或其他特殊字符,如Query One,則#"Query One"將獲得其值。

1

這裏的一個方式...

如果我這個開始爲QueryOne:

enter image description here

並將此作爲QueryTwo:

enter image description here

我能得到此結果代碼如下:

enter image description here

這裏的M碼:

let 
Source = QueryTwoSource, 
#"Added Custom" = Table.AddColumn(Source, "QueryOne", each QueryOne), 
#"Expanded QueryOne" = Table.ExpandTableColumn(#"Added Custom", "QueryOne", {"DateValue", "DateOfCompletion"}, {"QueryOne.DateValue", "QueryOne.DateOfCompletion"}), 
#"Added Custom1" = Table.AddColumn(#"Expanded QueryOne", "Custom", each if ([QueryOne.DateOfCompletion] >= [StartDate]) and ([QueryOne.DateOfCompletion] <= [EndDate]) then "True" else "False"), 
#"Renamed Columns" = Table.RenameColumns(#"Added Custom1",{{"Custom", "WithinPeriod"}}), 
#"Grouped Rows" = Table.Group(#"Renamed Columns", {"PeriodName", "WithinPeriod"}, {{"CountWithinPeriod", each Table.RowCount(_), type number}, {"SumOfDateValuesWithinPeriod", each List.Sum([QueryOne.DateValue]), type number}, {"AllData", each _, type table}}), 
#"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([WithinPeriod] = "True")), 
#"Expanded AllData" = Table.ExpandTableColumn(#"Filtered Rows", "AllData", {"QueryOne.DateValue", "QueryOne.DateOfCompletion"}, {"QueryOne.DateValue", "QueryOne.DateOfCompletion"}), 
#"Removed Columns" = Table.RemoveColumns(#"Expanded AllData",{"WithinPeriod"}) 
in 
#"Removed Columns" 

附:上面的代碼中的Source只是電子表格的另一個查詢,它具有三列:PeriodName,StartDate和EndDate。 ...類似於QueryOne是如何使用DateValue和DateOfCompletion列查詢電子表格的表格。所以,基本上,Source = QueryTwoSource是我如何得到QueryTwo,如上圖。我可以直接使用電子表格作爲QueryTwo的源代碼,但這是我做到的。