如何用M語言,來解決Power BI引擎不區分字母大小寫的問題


 

​Power BI對於區分大小寫是比較混亂的:盡管Power Query引擎區分大小寫,但主要的Power BI引擎(即數據集,關系,DAX等)不區分大小寫。在這篇文章中,我們將集中討論不區分大小寫在數據集和DAX中的含義,並展示該問題的解決方法。

從一個簡單的示例開始,假設你有一個數據源,其中包含如下所示的數據:

這就是Power Query 中數據的樣子,正如我上方所說,Power Query引擎是區分大小寫的–這意味着它將“ A”和“ a”視為不同的字符,因此在表的每一行中看到六個不同的字符。這可以是來自任何數據源的數據。在本次案例中我是通過M查詢來生成此表的,具體語句如下:

但是,當此數據加載到Power BI數據集中時,你將在Power BI主窗口的“數據”窗格中看到以下內容:

由於主要的Power BI引擎不區分大小寫(例如,“ a”和“ A”被視為相同的字符),因此,當加載該數據時,它只會看到三個不同的字符,因此您無法確定是否將小寫或大寫字符存儲兩次。這就是它的工作方式。

此外,您還會發現DAX計算也不區分大小寫。如果嘗試使用以下DAX表達式來創建表:

 

上方的DAX會幫你得到:

使用與上方類似的DAX。得出下表:

然后在上方的表下使用以下度量值:

 

 

你會看到如下結果:

 

解決這種情況下不區分大小寫的唯一方法是,是讓Power BI引擎知道看起來相同的文本值有所不同。一種方法是在文本中添加一些額外的字符。再次看到我們的M查詢中,你可以為表中的每個小寫字符添加一個空格,如下所示:

 

但這是行不通的,因為Power BI引擎的另一個鮮為人知的行為是在加載文本時會修剪所有前面和后面空格。更好的做法是使用Unicode零寬度空格字符和M 函數Character.FromNumber,如下所示:

關於這個做法的妙處在於,盡管使用了它,但它是不可見的並且不占用空間。將M查詢加載到Power BI中時,會看到下表:

 

讓我們再做一個更高級的示例來結束,假設您有一個稱為”查詢2”的M查詢返回的以下源數據:

當然,當將此表加載到Power BI中時,您將看到以下內容:

接下來,使用如下M查詢將獲取此表,並且每一行都會遍歷OriginalText列中的文本,並在每個小寫字符后添加一個” 零寬度空格”:

 

當您將此查詢的輸出加載到Power BI中時,由於每個小寫字符后的零寬度空格使Power BI認為每段文本都是不同的,因此大小寫也看起來像保留了一樣:

最后我們來看下對比

處理前:

處理后:

 

 往期推薦

【2019】10月份(廣州站)Power BI 線下活動報名

【2019】Power BI 10月產品功能更新文檔

●  Power BI 演示新玩法:幻燈片播放

● DAX中按列排序的另一種結果

 

技術交流

1.Power BI免費下載:http://www.yeacer.com/

    Microsoft Power BI Desktop中文最新版:下載地址

2.歡迎加入的Power BI技術群,目前正在學習階段,有興趣的朋友可以一起學習討論。 

   Power Data技術交流群:702966126 (驗證注明:博客園Power BI) 

   更多精彩內容請關注微信公眾號:悅策PowerBI          


如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載,作者博客:https://www.cnblogs.com/yeacer/ 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM