什麼是 Python 中的自我:真實世界的例子
什麼是 Python 中的自我:真實世界的例子
上提出的一個有趣問題,該問題涉及如何動態合併 Power Query 表中不斷變化的列數。您可以在本博客底部觀看本教程的完整視頻。
此場景處理導致數據溢出到未知數量的相鄰列中的原始數據導出。當您查看示例時,您可以看到描述已溢出到第 4 列,而描述 2 已拆分為兩個相鄰的列。但情況並非總是如此。在下一個週期中,這個列數可能會改變。
在我們進入解決方案之前,讓我們檢查一下合併列時 Power Query 生成的 M 代碼。
目錄
電源查詢表 M 代碼
有幾種方法可以合併列。一種是同時選擇描述列並按下 Shift 鍵或控制鍵,然後同時選擇第 4 列。然後,右鍵單擊並選擇Merge Columns。
或者,在轉換選項卡上,選擇合併列。並且將出現此對話框,允許您選擇分隔符。
在彈出的框中選擇Tab,可以輸入新的列名。在這種情況下,我將其命名為 Description。
在公式欄中,我們看到此轉換步驟創建的 M 代碼。
如果您的屏幕上看不到編輯欄,請轉到“查看”選項卡並將其打開。
所以 Power Query 用來合併列的函數是Table.CombinedColumns。它採用的第一個參數是一個表。該表由我們代碼中的上一步返回,因此在應用步驟中,您會看到它稱為Source。
然後,它將列名硬編碼在列表中。在這裡您可以看到列表初始值設定項,以及文本值之間的列名稱描述和列名稱第 4 列。然後,它調用另一個 M 函數來組合這些列中的文本值。
最後,它將新列名作為文本傳遞,以便我們進行調整。
因此,如果我們希望此函數動態合併不斷變化的列數,我們將不得不更改現在包含硬編碼列名列表的第二個參數值。
合併 Power Query 表中不斷變化的列數
我將回到我的原始數據查詢,如果我們仔細查看列名,我們會發現每個溢出列都是匿名的。它們沒有專有名稱,但它們都以文本列開頭,後跟一個數字。讓我們看看我們是否可以使用它。首先,我將通過右鍵單擊此處並選擇Reference創建一個引用。
要在公式欄中獲取列名稱,我可以添加Table.ColumnNames。此函數返回一個列表,其中包含該表中的所有列名。讓我們通過單擊To Table將其變回表格。
在此彈出框中,單擊“確定”。
然後,在“添加列”選項卡上,我將選擇“格式”,然後選擇“修剪”。
現在,這不是我想要執行的轉換,但它確實為我生成了大部分 M 代碼。我所要做的就是用我自己的邏輯替換那個 trim 函數。
因此,在公式欄內,我們可以說if Text.StartsWith而不是Text.Trim,然後將其指向我們的Column 1,我會立即復制它。它需要我們正在尋找的文本,所以這將是 Column。因此,如果它以文本列開頭,那麼我們需要“null”——對於其他所有內容,我們需要第 1 列中的任何內容。我們還可以重命名該列,因此在公式欄內,我們將其稱為GroupColumn,而不是 Trim 。
現在,我們需要做的就是用這些值填充它們。所以我將右鍵單擊我的標題,選擇Fill和Down。
所以下次數據進來時,列數發生了變化,這個組會自動選擇它。
讓我們重命名此查詢,我將其稱為列組。
讓我們確保它的加載已被禁用,因為這只是一個支持查詢。
我可以參考這個支持查詢,稍後我會重命名它。讓我們暫時離開。因此,如果您還記得的話,我們首先合併兩列,然後創建一個包含列名的硬編碼列表,但現在我們可以在 GroupColumn 中過濾 Description 。
因此,如果我們對第 1 列內的描述進行過濾,我們將獲得滿足該條件的列。
但是,這是一個表而不是列表。我們需要提取第一列中剩餘的任何內容,因為我們需要將這些列包含在我們的合併操作中。為此,我們可以右鍵單擊 Column 1 標題並選擇Drill Down。
現在我們得到一個列表。所以讓我們給這個查詢一個合適的名稱(ListDescr),讓我們檢查它是否被禁止加載。
現在我們可以回到我們的 Result 查詢並用我們的動態列表替換這裡的第二個參數。所以在這裡,我們可以引用我們的ListDescr。
我們也對描述 2 重複此操作。我將轉到我的 ColumnGroups 查詢。我將創建另一個參考並選擇我需要的列。然後我將過濾 Description 2,它將返回這三列。我將右鍵單擊我的標題並選擇向下鑽取並重命名此查詢 ( ListDescr2 )。
然後我將返回到我的結果查詢,選擇 Description2 列,然後按下 shift 或 control 以選擇下一列(column2)。我將右鍵單擊標題並選擇Merge Columns。
在彈出框中,我將選擇 Tab 作為分隔符,並將其命名為 Description2。
我將在公式欄上更改此處的列名稱。我將從我們剛剛創建的列表中更改該硬編碼列表。現在,如您所見,這也選取了我們之前排除的第 8 列。
如何在 LuckyTemplates 中合併查詢
LuckyTemplates 查詢參數:優化表
在 LuckyTemplates 中對日期表列進行排序
結論
在此博客中,我向您展示瞭如何在 Power Query 中使用 M 代碼來動態合併列。只要您熟悉 Power Query 的工作原理以及使用的 M 代碼,這並不困難。
我希望你喜歡這個。請查看以下鏈接以獲取更多相關內容。
一切順利!
梅麗莎
什麼是 Python 中的自我:真實世界的例子
您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。
在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。
本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。
在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。
我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。
了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。
本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。
如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。
什麼是 LuckyTemplates 網關?所有你必須知道的