Power Bi:DAX函数总结
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Power Bi:DAX函数总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                文章目錄
- 日期與時間函數
- 篩選器函數
- 邏輯判斷函數
- 邏輯函數
- 統計函數
- 文本函數
日期與時間函數
1.計算年初至今累計--TOTALYTD函數例如計算年初至今累計的銷售金額: [年累計金額]:= TOTALYTD([銷售金額],'日歷年'[日期]) # 如果要加上一個時間截止點,則寫為: [年累計截止金額]:= TOTALYTD([銷售金額],'日歷年'[日期],'日歷年'[日期]<DATE(2016,6,1)) # 同理計算季度初至今累計--TOTALQTD, 計算月初至今累計--TOTALMTD2.計算上一年/季度/月的銷售額--DATEADD函數 [上一年銷售額]:= CALCULATE([銷售金額],DATEADD('日歷年'[日期],-1,YEAR)) --YEAR可改為QUARTER,MONTH,DAY--將-1改為+1則時間后移3.計算同比/環比 # 月同比--今年每月的銷售金額相比去年同月份增長的比率 [上一年銷售額]:= CALCULATE([銷售金額],DATEADD('日歷年'[日期],-1,YEAR)) [同比]:= DIVIDE([銷售金額]-[上一年銷售額],[上一年銷售額])# 月環比--這月與上月相比銷售額增長的比率 [上一月銷售額]:= CALCULATE([銷售金額],DATEADD('日歷年'[日期],-1,MONTH)) [環比]:= DIVIDE([銷售金額]-[上一月銷售額],[上一月銷售額])4. 計算兩個日期之間間隔--DATEDIFF [時間間隔]:= DATEDIFF([開始日期],[結束日期],'Y') --參數"Y"換成"M"或"D",則分別對應月和日--也可以改成HOUR,MINUTE,SECOND計算小時,分,秒5.其他日期時間函數: DATE(2009,7,8) --結果返回'2009/7/8 0:00:00' DATEVALUE("8/1/2009") --將文本形式的日期轉換為日期時間格式的日期,結果返回'2009/8/1 0:00:00' DATEADD([日期],3,DAY) --日期加減函數 EOMONTH([日期],3) --返回指定月份數之前或之后的月份的最后一天的日期 EDATE([日期],3) --返回在開始日期之前或之后指示的月數的日期 YEAR(),MONTH(),DAY(),HOUR(),MINUTE(),SECOND() NOW() --返回當前的日期時間 TODAY()--返回當前的日期 WEEKDAY([日期],1) --一周中的第幾天,參數1代表從星期日開始計數,參數2代表從星期一開始計數參數3代表從星期一開始計數,但到星期六結束 WEEKNUM([日期],1) --一年中的第幾周,1代表從周日開始計數,2代表從周一開始計數篩選器函數
1.ALL, ALLEXCEPT, ALLSELECTED ALL(table/column) --ALL用來清除整個表或某個字段的篩選條件,通常配合CALCULATE使用 ALLEXCEPT(table/column) --刪除表中除已應用于指定列的篩選器之外的所有上下文篩選器 ALLSELECTED(table/column) --從當前查詢的列和行中刪除上下文篩選器,同時保留所有其他上下文篩選器或顯式篩選器2.CALCULATE(<expression>,<filter1>,<filter2>...) --Calculate可以應用在多個表Calculate使用AND關系時可直接在條件間加',',但表達“或”時,必須用'||',而且連接的兩個條件必須引用同一列。Calculate中當“[列] = 固定值”這種篩選搞不定時,可用filter/all/values篩選器搭配使用3.FILTER(table,<filter>) --返回值:只包含篩選行數據的表 --篩選時對表進行逐行掃描,計算量很大,所以選擇篩選的表盡量為lookup表4.HASONEVALUE(<columnName>) --將 columnName 的上下文篩選為只剩下一個非重復值時,將返回 TRUE。 否則為 FALSE。5.RELATED(<column>) --將“一”端的列值添加到“多”端的表中RELATEDTABLE(<tableName>) --將“多”端關聯的表數據添加到“一”端的列上,返回的是一張表6.VALUES(<TableNameOrColumnName>) --返回由一列構成的一個表,該表包含來自指定表或列的非重復值。 換言之,重復值將被刪除,僅返回唯一值。7.EARLIER函數:例如我們有“產品名稱”和“銷售金額”兩列數據。基于此,我們希望計算出每個產品的銷售金額排名。COUNTROWS(FILTER('產品銷售表',EARLIER('產品銷售表'[銷售金額])<'產品銷售表'[銷售金額]))+1--EARLIER=當前行,按照當前行進行逐行掃描,SUMX+FILTER+EARLIER 是Power Pivot中比較常用的函數組合,由于Earlier針對每一行數據都進行計算,所以理論上計算量相當于數據行數的平方。如果有10行數據,則需要計算100次,所以數據量大的時候大家使用要小心,有可能會造成模型計算緩慢。邏輯判斷函數
1.CONTAINS(InternetSales, [ProductKey], 214, [CustomerKey], 11185)--是否同時存在銷售給客戶 11185 的產品 214 的任何 Internet 銷售額。 2.ISBLANK(column) --判斷該列中某個值是否為空 3.ISNONTEXT(column) --檢查某個值是否不是文本 4.ISNUMBER(column) --檢查某個值是否為數字 5.ISTEXT(column) --檢查某個值是否為文本 6.ISLOGICAL(column) --檢查某個值是否是邏輯值邏輯函數
1.IF(logical_test>,<value_if_true>, value_if_false)--檢查是否滿足作為第一個參數提供的條件。 如果該條件為 TRUE,則返回一個值;如果該條件為 FALSE,則返回另一個值,用法與excel類似2.SWITCH(<expression>,條件1,值1,條件2,值2) --根據值列表計算表達式,并返回多個可能的結果表達式之一。統計函數
1. SUMX(table,<expression>) --SUMX與CALCULATE功能類似,但SUMX屬于迭代函數,計算量大--同理AVERAGEX,MINX.MAXX用法相同 2. SUM(),MAX(),MIN(),SQRT()DISTINCTCOUNT()--計算去重后列所包含的元素個數COUNTROWS() --計算表的行數COUNT() --計算列中包含數字的單元的數目COUNTA() --計算列中不為空的單元的數目COUNTBLANK() --計算列中空白單元的數目3.DIVIDE(分子,分母) --在DAX中涉及到除法必須用DIVIDE4.CROSSJOIN(<table1>, <table2>) --生成笛卡爾積表SUMMARIZE(<table>, <groupBy_columnName>,<name>,<expression>)--table,任何返回數據表的 DAX 表達式。groupBy_columnName將使用該列中找到的值創建摘要組,此參數不能是表達式。name,給予總計或匯總列的名稱,包含在雙引號內。expression,任何返回單個標量值的 DAX 表達式,其中,表達式將計算多次(針對每行/上下文)。GENERATE(<table1>, <table2>)--生成笛卡爾積表文本函數
1. LEFT(),RIGHT(),MID(),FIND(),SEARCH(),LEN() ---字符串提取函數2. REPLACE(),SUBSTITUTE() --字符串替換函數3. TRIM(),LOWER(),UPPER()4. FORMAT函數,對于日期格式的自定義設置如下圖:總結
以上是生活随笔為你收集整理的Power Bi:DAX函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java跳转html页面_springb
- 下一篇: 客户端与服务器之间的文件传输,客户端与服
