PowerBI開發 第九篇:修改查詢


在PowerBI的查詢編輯器(Query Editor)中,用戶可以使用M語言修改Query,或修改Query字段的類型,或向Query中添加數據列(Column),對Query進行修改會導致PowerBI相應地更新數據模型(Data Model),這跟使用DAX表達式修改Data Model有本質的區別:前者是修改數據表,后者是修改數據視圖。PowerBI通過查詢編輯器來修改數據模型,對Query的每一次修改都是一個step,用戶可以根據需要增加或刪除step,調整step的順序,並可以迭代引用先前創建的step,應用這些操作對數據進行再次加工和處理,以滿足數據分析的需求。

 

我的PowerBI開發系列的文章目錄:PowerBI開發

一,修改數據類型

每一個Query都是由一系列的列和行構成的數據表,每一列都有特定的數據類型,PowerBI為每個數據類型顯示特定的圖標,最常用的數據類型是number和text,例如:

123表示當前列是數字類型,ABC表示當前列是字符類型。有時,從外部數據源導入數據之后,PowerBI不能確定數據的類型,此時,它會在列前方同時標記為123和ABC,用戶可以通過”Change Type“把該列轉換為合適的數據類型。

二,添加數據列

用戶可以添加計算列,從主菜單中切換到”Add Column“面板,點擊”Custom Column“,基於M公式創建新的數據列。

從左側可用的列中,添加列和公式,PowerBI基於用戶輸入的表達式創建新的計算列,並添加到數據模型(Data Model)中:

 

三,添加排序列

在對數據進行排序時,有時不能使用DAX表達式,此時必須使用M公式,例如,對班級(Class)進行排序,使用DAX的IF函數,按照班級(Class)名稱新建一個字段(Class Ordinal),

Class Ordinal = IF(Schools[Class]="一年級",1,IF(Schools[Class]="二年級",2,3))

設置Class按照Class Ordinal排序,PowerBI會拋出錯誤:

在這種情況下,必須使用M公式,在Schools Query中新增字段:

= Table.AddColumn(KustoQuery, "Class Ordinal", 
each if [Class]="一年級" then 1
    else if [Class]="二年級" then 2
    else if [Class]="三年級" then 3
    else 4) 

四,查詢組合

查詢的組合(Combine),用於在Query級別對數據進行修改,PowerBI支持Merge和Append,你使用Merge操作連接數據,或使用Append操作追加數據。

1,數據的連接

把查詢連接到一起,可以使用Home菜單中”Merge Queries as New“,通過連接操作(Join)把兩個Query合並,生成新的Query。

PowerBI在進行Merge時,只支持等值條件的連接操作,等相應字段的值相等時,匹配成功。

例如,選擇 EventSoldService 作為其中一個Query,點擊EventId,作為連接的條件,第一個表稱作左表,第二標稱作右表:

也可以選擇多個數據列作為連接條件,摁住Ctrl,連續點擊EventId,SoldServiceId,就可以把這個字段作為連接:

在進行Merge操作時,PowerBI提供多種連接的類型,如下:

在創建Merge查詢之后,默認情況下,PowerBI會把連接的右表顯示在左表字段的末尾,字段名為右表名,而字段值為"Table",如下圖:

用戶可以點擊該列上方的圖標, 對右表進行擴展(Expand)或聚合(Aggregate)操作,擴展操作是指在最終的查詢中顯示右表的字段,聚合操作是對右表的相應字段進行聚合操作,返回聚合值。

 

2,數據的追加

對於一個Query,使用PowerBI可以追加數據,把另一個Query的數據追加到當前Query之中,這相當於集合的Union操作。

選中當前Query,點擊“Append Queries”,可以追加一個Query,或多個Query。

而用於追加的Query,可以不顯示在Report視圖中,使這些Query僅僅用於提供數據。 

五,轉換操作

在查詢編輯器中,可以對數據做變換操作(Transform),例如,分組、字符的拆分、透視、逆透視、去重和替換值等。

1,分組

Group By用於按照特定的列對現有的查詢進行分組聚合,產生新的Query。

2,拆分字符

把一個字符類型Column按照分隔符,或者特定數量的字符,分割成多個數據列。

3,透視和逆透視

Pivot Column 用於對數據進行透視操作,Unpivot Column 用於對數據進行逆透視操作,完成數據的行列轉換。

六,Query的其他操作

對Query分組,分組的目的是組織Query,便於查找。當Query的數量非常多時,可以按照功能或Page對不同的Query分組。

Query是否啟用加載,是否包含在報表刷新中?

如果啟用了“Enable load”,那么Query的數據會顯示在Report View中;如果啟用了”Include in report refresh“中,Query可以隨着報表的刷新而自動刷新數據。

 

參考文檔:

Power Query M Reference

Add a custom column in Power BI Desktop


免責聲明!

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



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