Share via


取消資料行樞紐

在 Power Query 中,您可以將資料行轉換成屬性值組,其中數據行會變成數據列。

取消樞紐數據行圖表。

此圖顯示左邊有空白數據行和數據列的數據表,以及屬性值 A1、A2 和 A3 作為數據行標頭。 A1 資料行包含 V1、V4 和 V7 值、A2 資料行包含 V2、V5 和 V8 值,而 A3 資料行包含 V3、V6 和 V9 值。 取消樞紐數據行時,圖表右側的數據表包含空白數據行和數據列、具有 A1、A2 和 A3 九個數據列的 Attributes 數據行重複三次,以及值為 V1 到 V9 的 Values 數據行。

例如,假設有如下的數據表,其中國家/地區數據列和日期數據行會建立值的矩陣,因此很難以可調整的方式分析數據。

取消樞紐數據行範例初始數據表。

數據表,其中包含 Text 數據類型中的 Country 數據行集,以及 6/1/2020、7/1/2020 和 8/1/2020 數據行設定為 神秘 le number 資料類型。 Country 數據行包含美國數據列 1、加拿大第 2 列,第 3 列包含巴拿馬。

相反地,您可以將數據表轉換成具有未樞紐數據行的數據表,如下圖所示。 在已轉換的數據表中,比較容易使用日期做為屬性來篩選。

取消樞紐數據行範例目標數據表。

包含 Country 資料行集做為 Text 資料類型的數據表、設定為 Text 資料類型的屬性數據行,以及設定為 神秘 le number 數據類型的 Value 數據行。 Country 數據行包含美國的前三個數據列、接下來三個數據列中的加拿大,最後三個數據列包含巴拿馬。 [屬性] 數據行在第一個、第四個和第七個數據列中包含 6/1/2020、第二個、第五個和第八個數據列的 7/1/2020,第三、第六和第九個數據列則包含 8/1/2020。

此轉換中的索引鍵是您在數據表中擁有一組日期,而該日期應該全部是單一數據行的一部分。 每個日期和國家/地區的個別值都應該在不同的數據行中,有效地建立屬性值組。

Power Query 一律會使用兩個數據行來建立屬性值組:

  • 屬性:已取消樞紐的數據行標題名稱。
  • :每個未樞紐數據行標題底下的值。

使用者介面中有多個位置,您可以在其中找到 [取消樞紐] 數據行。 您可以在您想要取消樞紐的數據行上按下滑鼠右鍵,也可以從 功能區中的 [轉換 ] 索引標籤選取命令。

以滑鼠右鍵按下作業以取消樞紐數據行。

在 [轉換] 索引標籤上取消樞紐數據列命令。

有三種方式可從數據表取消樞紐數據行:

  • 取消樞紐數據行
  • 取消樞紐其他數據行
  • 僅取消樞紐選取的數據行

取消資料行樞紐

針對上述案例,您必須先選取要取消樞紐的數據行。 您可以視需要選取多個資料行時選取 Ctrl 。 在此案例中,您想要選取除一個名為 Country 以外的所有數據行。 選取數據行之後,以滑鼠右鍵按下任何選取的數據行,然後選取 [取消樞紐數據行]。

2020 年 6 月 1 日、7/1/2020 和選取 8/1/2020 數據行的數據表,以及快捷方式功能表中選取的 [取消樞紐數據行] 命令。

該作業的結果會產生下圖所示的結果。

取消樞紐數據行最終數據表。

包含 Country 資料行集為 Text 資料類型的數據表、設定為 Text 資料類型的屬性數據行,以及設定為 神秘 le number 數據類型的 Value 數據行。 Country 數據行包含美國的前三個數據列、接下來三個數據列中的加拿大,最後三個數據列包含巴拿馬。 [屬性] 數據行在第一個、第四個和第七個數據列中包含 6/1/2020、第二個、第五個和第八個數據列的 7/1/2020,第三、第六和第九個數據列則包含 8/1/2020。 此外,[查詢設定] 窗格中會強調 [取消樞紐數據行] 專案,且 M 語言代碼會顯示在公式列中。

特殊考量

從上述步驟建立查詢之後,假設您的初始數據表會更新為類似下列螢幕快照。

取消樞紐數據行更新的源數據表。

具有相同原始 Country、6/1/2020、7/1/2020 和 8/1/2020 數據行的數據表,並新增 9/1/2020 數據行。 Country 數據行仍然包含美國、加拿大和巴拿馬的值,但也已將英國新增至第四列,墨西哥則新增至第五列。

請注意,您已針對 2020 年 9 月 1 日(2020 年 9 月 1 日)新增數據行,以及英國和墨西哥國家/地區兩個新數據列。

如果您重新整理查詢,您會發現作業將會在更新的數據行上完成,但不會影響原本未選取的數據行(在此範例中為國家/地區)。 這表示也會取消加入源數據表的任何新數據行。

下圖顯示使用新的更新源數據表重新整理之後,查詢的外觀。

取消樞紐數據行最後更新的數據表。

具有 Country、Attribute 和 Value 數據行的數據表。 Country 數據行的前四個數據列包含 USA、第二個四個數據列包含加拿大、第三個四個數據列包含巴拿馬、第四個四個數據列包含英國,而第五個四個數據列則包含墨西哥。 [屬性] 數據行包含 6/1/2020、7/1/2020、8/1/2020 和前四個數據列中的 9/1/2020,針對每個國家/地區重複。

取消樞紐其他數據行

您也可以選取您不想取消樞紐的數據行,並取消樞紐數據表中其餘的數據行。 此作業是將其他數據行取消樞紐作用的地方

已選取 [國家/地區] 數據行快捷方式功能表的數據表,並強調功能表中的 [取消樞紐其他數據行] 命令。

該作業的結果會產生與您從 Unpivot 資料行取得的結果完全相同。

取消樞紐其他數據行範例目標數據表。

包含 Country 資料行集做為 Text 資料類型的數據表、設定為 Text 資料類型的屬性數據行,以及設定為 神秘 le number 數據類型的 Value 數據行。 Country 數據行包含美國的前三個數據列、接下來三個數據列中的加拿大,最後三個數據列包含巴拿馬。 [屬性] 數據行在第一個、第四個和第七個數據列中包含 6/1/2020、第二個、第五個和第八個數據列的 7/1/2020,第三、第六和第九個數據列則包含 8/1/2020。

注意

此轉換對於具有未知數據行數目的查詢而言非常重要。 此作業會將數據表中的所有數據行取消樞紐,但您所選取的數據行除外。 如果案例的數據源在重新整理中取得新的日期數據行,這是理想的解決方案,因為這些數據行將會被挑選並取消擷取。

特殊考量

取消樞紐數據行 作業類似,如果您的查詢重新整理,而且從數據源中挑選更多數據,除了先前選取的數據行以外,所有數據行都會取消樞紐處理。

為了說明這一點,假設您有一個新的數據表,如下圖中的數據表。

範例取消樞紐源數據表。

具有 Country、6/1/2020、7/1/2020、8/1/2020 和 9/1/2020 數據行的數據表,所有數據行都設定為 Text 數據類型。 Country 數據行包含從上到下、美國、加拿大、巴拿馬、英國和墨西哥。

您可以選取 [ 國家/地區 ] 數據行,然後選取 [取消樞紐其他數據行],這會產生下列結果。

範例取消樞紐其他數據行已更新最終數據表。

具有 Country、Attribute 和 Value 數據行的數據表。 Country 和 Attribute 資料行會設定為 Text 數據類型。 Value 資料行會設定為 神秘 le 值數據類型。 Country 數據行的前四個數據列包含 USA、第二個四個數據列包含加拿大、第三個四個數據列包含巴拿馬、第四個四個數據列包含英國,而第五個四個數據列包含墨西哥。 [屬性] 數據行包含 6/1/2020、7/1/2020、8/1/2020 和前四個數據列中的 9/1/2020,針對每個國家/地區重複。

僅取消樞紐選取的數據行

最後一個選項的目的是只取消數據表中的特定數據行。 對於您處理數據源中未知數目的數據行,且只想要取消選取的數據行,這很重要。

若要執行這項作業,請選取要取消樞紐的數據行,在此範例中為 Country 數據行以外的所有數據行。 然後以滑鼠右鍵按下您選取的任何數據行,然後選取 [僅取消樞紐選取的數據行]。

已選取 6/1/2020、7/1/2020 和 8/1/2020 數據行的數據表,以及強調 [僅取消樞紐] 選取數據行的快捷方式功能表。

請注意此作業如何產生與先前範例相同的輸出。

只取消選取的數據行最終數據表。

包含 Country 資料行集做為 Text 資料類型的數據表、設定為 Text 資料類型的屬性數據行,以及設定為 神秘 le number 數據類型的 Value 數據行。 Country 數據行包含美國的前三個數據列、接下來三個數據列中的加拿大,最後三個數據列包含巴拿馬。 [屬性] 數據行在第一個、第四個和第七個數據列中包含 6/1/2020、第二個、第五個和第八個數據列的 7/1/2020,第三、第六和第九個數據列則包含 8/1/2020。

特殊考量

重新整理之後,如果我們的源數據表變更為有新的 9/1/2020 數據行,以及英國和墨西哥的新數據列,查詢的輸出會與先前的範例不同。 假設在重新整理之後,我們的源數據表會變更為下圖中的數據表。

取消樞紐更新的源數據表。

查詢的輸出看起來會像下圖。

僅取消樞紐選取的數據行已更新最終數據表。

這看起來像這樣,因為未樞紐作業只會套用在 2020 年 6 月 1 日、 7/1/20208/1/2020 數據行上,因此標頭 為 9/1/2020 的數據行會保持不變。