LuckyTemplates 虛擬表 | 5 個調試技巧

LuckyTemplates 虛擬表是我個人最喜歡的 DAX 主題。它們是釋放 DAX 全部功能的關鍵。虛擬表是 LuckyTemplates 中唯一完全動態的表類型,有些問題只能通過在度量中應用虛擬表技術來解決。您可以在本博客底部觀看本教程的完整視頻。

在本教程中,我將分享我多年來積累的 5 大提示和技巧,它們確實幫助我理解和調試 Power Bi 虛擬表中發生的事情。

我今天要介紹的示例來自,它來自一位名叫 Dave C 的成員,他從事工業安全工作。Dave 有一系列安全分數,他想對這些分數進行標準化,使最高分數為 10,然後動態地得出該列表中的第 N 個。

LuckyTemplates 虛擬表 |  5 個調試技巧

最初,我們想通過一個簡單的度量來做到這一點,但後來我們意識到他的很多標準化值都有關係。例如,如果您想要列表中的第七項,則 RANKX 中不會有數字七。沒有簡單的方法可以將其從過濾條件中提取出來。所以我們決定採用基於的度量,以便它始終倒數第 n 個數字。

這類似於當你從一副牌中抽出第七張牌時,你數出七張牌,然後你將這七張牌翻過來,最下面的牌就是你想要的那張。我們將在 TOPN 度量中執行與此等效的操作。

目錄

提示 #1:使用外部工具可視化您的 LuckyTemplates 虛擬表

您可以使用 DAX Studio 或表格編輯器。在此示例中,我使用的是表格編輯器 3 (TE3)。使用建模 - 新表選項卡在技術上可以做到這一點,但這將在您的數據模型中創建物理表。你將不得不在它和編輯器之間手動切換,這是一種緩慢而困難的方法。

當您看到可以通過外部工具完成的動態方式時,您就會看到好處。

因此,在 TE3 中,我們創建了一個新的 DAX 查詢。我們可以採取初始措施並將其複製到我們的 DAX 查詢中。

LuckyTemplates 虛擬表 |  5 個調試技巧

如果您還記得,DAX 查詢始終以 EVALUATE 開頭。我們最初會收到一個錯誤,因為DAX 查詢返回表。這是最後兩個標量變量的度量。我們在這裡可以做的是改變返回值,這是我的下一個技巧。

LuckyTemplates 虛擬表 |  5 個調試技巧

技巧 #2:使用變量分部分調試 LuckyTemplates 虛擬表

您可以使用與處理度量幾乎相同的方式調試虛擬表——通過更改返回值一點一點地調試。讓我們從第一個虛擬表vEvalTable開始。我們只需用我們的第一個變量 (VAR) 替換返回值 (Final)。您可以看到錯誤消失了,因為 DAX 查詢現在正在獲取一個表。

LuckyTemplates 虛擬表 |  5 個調試技巧

在 vEvalTable 中,我們獲取原始數據,即安全分數,我們正在對這些數據進行標準化,並將該標準化值列添加到虛擬表中。我們有索引、區域的值和規範化值。我們可以對這些值進行上下排序,也可以過濾這些值。

LuckyTemplates 虛擬表 |  5 個調試技巧

這正是我們所期望的。它返回 50 行,這是完整的數據集。一切順利,所以讓我們繼續探索下一個表,即vTableTopN。在此表中,我們使用第 n 個項目滑塊值獲取 TOPN。在此示例中,我們有上面虛擬表 (vEvalTable) 的第七個值,我們將根據降序的標準化值獲取 TOPN。

因此,當我們將 RETURN 函數更改為該函數時,它會下降,我們什麼也得不到。讓我們來看看為什麼,因為這是調試和理解虛擬表的一個非常重要的概念。

LuckyTemplates 虛擬表 |  5 個調試技巧

如果我們查看公式,我們將第 N 個項目滑塊值作為這裡的主要嫌疑人。回到 LuckyTemplates,我們可以看到這基本上只是在收穫數字 7。請注意,滑塊存在於頁面上下文中

因此,在這種情況下,當我們考慮在上下文之外調試該表時,所選值周圍沒有上下文。就能夠提取該數字而言,它沒有任何意義。我們得到了 TOPN,但我們不知道 TOPN 中的 N 是什麼,因為所選值返回空白。

我們如何處理?讓我們看一下選定的價值衡量標準。大多數時候,我們總是關注中的第一個參數,但還有第二個參數,它是備用參數。這將我們帶到我的第三個技巧。

技巧 #3:在 SELECTEDVALUE 中使用備用參數

這裡發生的事情是它一直在拉空白作為備用。但是我們想要做的(為了調試目的)是我們想在這裡放一個真正的值。所以,我們輸入數字 7 並保存它。

LuckyTemplates 虛擬表 |  5 個調試技巧

現在我們有了一些值。它返回七行,這正是它應該返回的,因為 TOPN 值為七。

LuckyTemplates 虛擬表 |  5 個調試技巧

讓我們繼續下行到下一個虛擬表,即vTableNthItem。我們有一疊七張牌,這張桌子基本上是把它翻過來了。我們在上一張表中按降序排列,現在我們按升序排列。

如果我們將其複製到 RETURN 部分,我們就會得到結果。有趣的是它沒有返回一行。它返回三行,因為這三行是並列的。這正是我們在這種情況下使用 TOPN 而不是 RANKX 的原因。

LuckyTemplates 虛擬表 |  5 個調試技巧

現在讓我們轉到Result。如果我們將 VAR 結果復製到 RETURN 部分,這就是我的第四個提示。

技巧 #4:使用 { } 將標量轉換為表

在公式中,我們取該 vTableNthItem 的最大值 ( ) 並返回標準化值。這可能是,可能是,也可能是。它只是一些聚合器返回該表中的那個值。所以,如果我們把它複製下來,它會給我們一個錯誤,因為它現在是一個標量。

LuckyTemplates 虛擬表 |  5 個調試技巧

但這是我的第四個技巧,它是在調試的上下文中。您可以做的只是添加大括號。通過這樣做,它將那個標量變成一個表。

LuckyTemplates 虛擬表 |  5 個調試技巧

然後,我們這裡得到的只是最後的錯誤檢查,如果結果是評估表小於行數,它將返回不足的數據。但我們知道在這種情況下我們的數據集足夠大。但是,我們可以通過鍵入Final來測試它。同樣,因為這是一個縮放器,我們還需要大括號,我們在這裡得到相同的值。

LuckyTemplates 虛擬表 |  5 個調試技巧

我們深入研究並調試了這個虛擬表,我們使用了 SELECTEDVALUE 中的備用值來防止它脫離上下文。現在我只想向您展示一個我發現非常有用的額外提示。

技巧 #5:使用 CONCATENATEX/UNICHAR 將表轉換為標量

在進行調試的上下文中,您將希望在 LuckyTemplates 中查看該表的外觀。一般規則是度量只能返回標量,不能返回表。但是,我將向您展示一個允許它準返回表的作弊方法。

讓我們看一下這個度量,它是可視化虛擬表,我們在這裡得到了我們最初擁有的所有虛擬表。例如,我們要顯示,比方說在前台報表頁面上,vTableTopN。

LuckyTemplates 虛擬表 |  5 個調試技巧

您可以使用此函數。您實際上可以採用該虛擬表名稱 (vTableTopN) 並採用該表中的值並將它們連接起來。您可以創建一些基本上看起來像虛擬表的東西。

LuckyTemplates 虛擬表 |  5 個調試技巧

如果我們採取這種措施,我們需要返回到 LuckyTemplates 並將其放入卡片措施中。通常,該表會給出一個錯誤,但通過 CONCATENATEX,它將該表變成了一個縮放器。您可以看到它相當原始,但它返回的正是我們所期望的,並且是以動態方式返回的。

LuckyTemplates 虛擬表 |  5 個調試技巧

這是一種將表格推入度量並在報告中顯示的方法。這是一個非常有用的調試技巧。它將提供一個很好的卡值格式,您可以在報告中使用它。


在 LuckyTemplates 中使用 DAX 虛擬表掌握
LuckyTemplates 中的虛擬表 LuckyTemplates 中的迭代函數 - DAX 概念
LuckyTemplates 中的表:類型和區別

結論

希望本教程在使用 LuckyTemplates 虛擬表方面能為您提供一些思考的素材。這些是一些額外的提示和技巧,可幫助您了解虛擬表中發生的情況。我希望你覺得這有幫助。

訪問我們的網站以獲取更多 LuckyTemplates 教程,並查看以下鏈接以獲取更多相關內容。

一切順利!

Leave a Comment

在 Power Automate 中執行直到循環控制

在 Power Automate 中執行直到循環控制

了解有關 Do Until 循環控制如何在 Power Automate 流中工作的基礎過程,並熟悉所需的變量。

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

使用 Deneb 為 LuckyTemplates 製作自定義視覺對象

受限於 LuckyTemplates 中提供的標準視覺效果?學習使用 Deneb 和 Vega-Lite 為 LuckyTemplates 創建自定義視覺對象,提升您的數據可視化能力。

在 Power Automate Desktop 中將日期添加到文件名

在 Power Automate Desktop 中將日期添加到文件名

在此博客中,您將了解如何使用 Power Automate Desktop 自動將日期添加到文件名的開頭或結尾。

Power Query:如何快速添加註釋

Power Query:如何快速添加註釋

找出幾種不同的方法在 Power Query 中添加註釋,這對於不喜歡記筆記的人非常有幫助。

Power Apps – SharePoint 集成指南

Power Apps – SharePoint 集成指南

在此博客中,您將了解 MS Power Apps 界面的基礎知識並了解 Power Apps-SharePoint 集成的過程。

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

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

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

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

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

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

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

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

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

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

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

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

LuckyTemplates 篩選上下文簡介

LuckyTemplates 篩選上下文簡介

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