2017-01-30 48 views
2

我用含有以下一列5個字段的表在specfic順序排序:使用PowerQuery

中 高 低

如果我按升序排列的數據按字母順序排序:

高 低 中

在高級編輯器如何更改在PowerQuery的代碼,以便它像排序下面:

高 中 低

我現在在編輯器中的語法是這樣的:

Table.Sort(# 「過濾後的行」,{{ 「評級」,Order.Ascending}} )

回答

3

或者,你可以利用Table.Sort的comparisonCriteria參數的全部實力:

= Table.Sort(# 「過濾後的行」,(X,Y)=> Value.Compare (List.PositionOf({ 「低」, 「中」, 「高」},X [評價]),List.PositionOf({ 「低」, 「中」, 「高」},Y [評價])))

編輯:這就像Order.Ascending(低,中,高),但 - 重讀你的問題 - 我看到你正在尋找的高,中,低:這樣你就可以切換「低」和代碼中的「高」(2x)。

EDIT2:另一個很酷的技巧是要離開原來的順序和-1從Value.Compare繁衍的結果扭轉排序順序:

= Table.Sort(#"Filtered Rows", (x,y) => -1 * Value.Compare(List.PositionOf({"Low","Medium","High"},x[Rating]),List.PositionOf({"Low","Medium","High"},y[Rating]))) 
+0

大,這個作品真的很好。謝謝。 – Dinks123

4

您可以使用下面的表達式添加新Order列表:

= Table.AddColumn(#"Changed Type", "Order", each if [Rating] = "High" then "1" else if [Rating] = "Medium" then "2" else "3") 

然後喲你只需要升序排列Order列。

讓我知道這是否有幫助。