LuckyTemplates 在 DAX 中按分隔符拆分列

LuckyTemplates 在 DAX 中按分隔符拆分列

在今天的博客中,您將學習如何使用 LuckyTemplates 使用 DAX 按分隔符拆分列。這是您可能知道如何使用 Power Query 輕鬆完成的事情,這通常是最好的方法。 

但由於問題的動態特性和數據模型中的特定考慮因素,在某些情況下使用 DAX 可以提供更好的解決方案。 您可以在本博客底部觀看本教程的完整視頻。

目錄

樣本問題

這是 LuckyTemplates 中的示例問題。

LuckyTemplates 在 DAX 中按分隔符拆分列

您有一個包含大約 600 部電影片名的列表,您想要識別其中最常見的單詞。為此,您將使用下面顯示的參數滑塊來計算每個標題中的單詞。

LuckyTemplates 在 DAX 中按分隔符拆分列

在滑塊中,您可以設置要返回多少個熱門詞。對於本教程,假設您將其設置為五個字。

您的下一個目標是返回至少包含您選擇的五個單詞之一的每個標題。這樣做聽起來很簡單,但比看起來要復雜一些。所以這裡是實現這些目標的步驟。

如何使用定界符拆分列的步驟

本節將教您如何在 DAX 中通過拆分列來解決給定的問題。第一步是通過單擊左側的第二個圖標打開電影數據,然後單擊字段窗格中的 電影。

LuckyTemplates 在 DAX 中按分隔符拆分列

在將出現的電影列表中,您需要想辦法將標題分解為單個單詞。

一種可能的解決方案是使用兩個虛擬表,如下所示。表 1 是滑塊定義的前 N ​​個詞的單列表。第二個表是每個電影標題中的單詞的虛擬列。 

LuckyTemplates 在 DAX 中按分隔符拆分列

然後,使用這兩個虛擬表,您可以使用函數來確定它們之間有哪些單詞是共同的。接下來,對該虛擬表執行以了解該數字是否大於或等於 1。 

如果答案是肯定的,那麼至少有一個目標詞在電影標題中。這些是我們希望在最終結果中保留的標題。 

在 SQLBI DAX 指南中查找有用的 LuckyTemplates 拆分列工具

要考慮如何實現它,您可以通過轉到外部工具然後轉到DAX 指南來參考 SQLBI DAX 指南。 

LuckyTemplates 在 DAX 中按分隔符拆分列

在此頁面上,您可以通過單擊組按類型搜索函數。

LuckyTemplates 在 DAX 中按分隔符拆分列

Functions下,您可以從Text開始,看看是否有類似按分隔符拆分列的文本函數。這將使事情變得非常簡單,但不幸的是,沒有任何東西與 DAX 中的對應。

LuckyTemplates 在 DAX 中按分隔符拆分列

相反,您將使用的是,它們執行與分隔符分隔相同的操作。

LuckyTemplates 在 DAX 中按分隔符拆分列

父子層次結構函數

父子層次結構函數或 PATH 函數通常用於層次結構情況。假設您需要一個人力資源分析,其中有一家公司的首席執行官、總監級別的經理、分公司首席級別的經理等等。

PATH 函數可以以特定方式表達這個層次結構並在其中來回遍歷。這是父子層次結構函數的傳統用法,但您會了解到它還有一些對文本操作和 DAX 非常有用的屬性。

使用它比 LuckyTemplates 複雜得多,但我們希望通過為您提供分步解決方案來簡化該過程。這是一項很有用的學習技術,它讓您接觸到一系列非常強大的 DAX 函數。

DAX 中的 LuckyTemplates 拆分列

父子層級函數涉及很多步驟,但是值得一看,因為這五個函數非常強大和靈活。 

首先,返回表格並單擊“字段”窗格中的 膠片

LuckyTemplates 在 DAX 中按分隔符拆分列

命令創建膠片路徑,如下所示。

LuckyTemplates 在 DAX 中按分隔符拆分列

此命令的作用是用豎線字符替換每個空格。 

LuckyTemplates 在 DAX 中按分隔符拆分列

這與必須在 LuckyTemplates 中格式化路徑的方式相同,因此通常,這是在 Power Query 中完成的。但是,您這樣做是為了查看命令,這與 Power Query 中的 M 命令不同。 

SUBSTITUTE函數創建您需要的路徑結構,而命令去除任何可能影響我們結果的前導或尾隨空格 

您的第二個計算列是路徑長度。這是應用於膠片路徑的函數中的直接命令。它會告訴您該路徑上有多少項目,因此在這種情況下,它是標題中的單詞數。 

LuckyTemplates 在 DAX 中按分隔符拆分列

例如,可以使用相同的命令來確定報告鏈中的人數。但是這個案例只是簡單的字數統計。 

LuckyTemplates 在 DAX 中按分隔符拆分列

接下來要做的是轉到“字段”窗格中的“最大路徑索引” 。然後,創建一個遍歷整個電影表的計算表,去除過濾器,併計算最大路徑長度,從而知道數據庫中最長的標題。

使用函數,您可以生成一系列索引,其中一個到最大路徑以一個為單位計數。 

LuckyTemplates 在 DAX 中按分隔符拆分列

這就是您的表格的外觀。您很快就會明白為什麼這是有價值的。

LuckyTemplates 在 DAX 中按分隔符拆分列

現在,返回 LuckyTemplates 並單擊字段窗格中 電影路徑中的熱門詞。

LuckyTemplates 在 DAX 中按分隔符拆分列

我們將關注這個虛擬表,它的一般解決方案是前面顯示的維恩圖。 

LuckyTemplates 在 DAX 中按分隔符拆分列

讓我們分解一下以便更好地理解。在下面的行中,我們使用虛擬表來計算前 N 個單詞,計算如下。 

LuckyTemplates 在 DAX 中按分隔符拆分列

然後在下面的行中計算按分隔符的拆分列。 

LuckyTemplates 在 DAX 中按分隔符拆分列

接下來,我們應用了這兩列的交集。如果該交集大於零,我們將給它一個 1 否則為零。最後,我們返回了結果。

LuckyTemplates 在 DAX 中按分隔符拆分列

使用複雜的虛擬表時,最簡單的方法是進入表格編輯器,您可以在其中在 DAX 查詢中具體化這些虛擬表。為此,您需要關注下面突出顯示的行。 

LuckyTemplates 在 DAX 中按分隔符拆分列

因此,複製此代碼並將其放在我們的剪貼板中以供後續步驟使用。 

使用表格編輯器處理 LuckyTemplates 拆分列 3

外部工具中,單擊表格編輯器 3。您也可以為此使用 DAX Studio,但建議使用表格編輯器,因為它具有額外的調試功能和其他不錯的功能。對於 DAX 查詢,DAX Studio 也能很好地工作,而且它是完全免費的。 

返回表格編輯器,通過單擊功能區中的紙張圖標創建一個新的 DAX 查詢。在第 1 行鍵入EVALUATE,粘貼複製的代碼,然後按 F5。

LuckyTemplates 在 DAX 中按分隔符拆分列

您將獲得一個表格,其中前兩列包含膠片路徑和最大路徑。對於第三列,您將使用命令和電影路徑來確定路徑索引的每個增量(從 1 到 9)的第一個單詞是什麼。 

LuckyTemplates 在 DAX 中按分隔符拆分列

此代碼返回第三列中出現的第一個單詞。 

LuckyTemplates 在 DAX 中按分隔符拆分列

通過單擊Movies[Film Path]列標題中的Filter圖標,嘗試查看特定的電影。例如,拿一個稍微長一點的,比如美國隊長:冬日戰士。 

LuckyTemplates 在 DAX 中按分隔符拆分列

在窗口的下方,您可以看到EVALUATE 返回了 1000 行。 

LuckyTemplates 在 DAX 中按分隔符拆分列

獲取所有行,然後返回並再次過濾美國隊長的Movies[Film Path] 。

LuckyTemplates 在 DAX 中按分隔符拆分列

搜索美國隊長:冬日戰士。選中相應的框並單擊關閉。

LuckyTemplates 在 DAX 中按分隔符拆分列

它對每個標題的確切作用是遍歷並應用一到九個索引,如第二列所示,然後將其應用到 PATHITEM。

你可以看到第一項是Captain,第二項是America,第三項是The,第四項是Winter,最後一項是Soldier。當你從六到九時,它只是一片空白,因為它已經超過了那個特定標題中的單詞數。 

LuckyTemplates 在 DAX 中按分隔符拆分列

您創建的是按分隔符拆分列,這與 Power Query 中按分隔符拆分完全相同。 

在 LuckyTemplates 中,您可以看到通過交集和 IF 語句運行的因此,如果您返回到您的數據集並打開“過濾器”窗格,您可以看到“電影中的熱門詞”已被過濾,因此它等於 1。 

LuckyTemplates 在 DAX 中按分隔符拆分列

這基本上是說,右表(電影)中具有左表目標列表中的單詞的所有內容都將列在上面的行中。另一方面,那些為零的將被放下。

LuckyTemplates 在 DAX 中按分隔符拆分列


Power Automate 拆分函數和數組
LuckyTemplates 列拆分 Power Query 教程:如何在 LuckyTemplates 中拆分多行 Excel 單元格
在 Power Query 中創建分隔列表 – 查詢編輯器教程

結論

在此博客中,您了解瞭如何在 DAX 中按分隔符拆分列。當您的情況非常動態或您的數據模型不支持在 Power Query 中執行此操作時,您會發現此工具非常有用。

此外,您處理的示例問題很好地說明了 PATH 命令的不尋常功能以及如何使用它們以非傳統方式解決問題。


什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

什麼是 Python 中的自我:真實世界的例子

如何在 R 中保存和加載 RDS 文件

如何在 R 中保存和加載 RDS 文件

您將學習如何在 R 中保存和加載 .rds 文件中的對象。本博客還將介紹如何將對像從 R 導入 LuckyTemplates。

回顧前 N 個工作日——DAX 編碼語言解決方案

回顧前 N 個工作日——DAX 編碼語言解決方案

在此 DAX 編碼語言教程中,了解如何使用 GENERATE 函數以及如何動態更改度量標題。

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

在 LuckyTemplates 中使用多線程動態視覺技術展示見解

本教程將介紹如何使用多線程動態可視化技術從報告中的動態數據可視化中創建見解。

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

在本文中,我將貫穿過濾器上下文。篩選上下文是任何 LuckyTemplates 用戶最初應該了解的主要主題之一。

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

使用 LuckyTemplates 在線服務中的應用程序的最佳技巧

我想展示 LuckyTemplates Apps 在線服務如何幫助管理從各種來源生成的不同報告和見解。

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

隨著時間的推移分析利潤率變化——使用 LuckyTemplates 和 DAX 進行分析

了解如何在 LuckyTemplates 中使用度量分支和組合 DAX 公式等技術計算利潤率變化。

DAX Studio 中數據緩存的物化想法

DAX Studio 中數據緩存的物化想法

本教程將討論數據緩存物化的想法,以及它們如何影響 DAX 在提供結果時的性能。

使用 LuckyTemplates 進行業務報告

使用 LuckyTemplates 進行業務報告

如果直到現在你還在使用 Excel,那麼現在是開始使用 LuckyTemplates 來滿足你的業務報告需求的最佳時機。

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的

什麼是 LuckyTemplates 網關?所有你必須知道的