DAX

DAX 一般用于在PP中建模,以時(shí)間為應(yīng)用單元,對月日年季度不斷操作,達(dá)到數(shù)據(jù)分析的目的。可以百度其真正的應(yīng)用場景。在實(shí)際應(yīng)用之前最好是先創(chuàng)建一張日期格式表,并于要分析的數(shù)據(jù)源表進(jìn)行關(guān)聯(lián),即創(chuàng)建對應(yīng)的關(guān)系


先將excel中的數(shù)據(jù)添加到數(shù)據(jù)模型,如果數(shù)據(jù)已經(jīng)導(dǎo)入,則省略。然后就可以點(diǎn)開度量值的控件按鈕進(jìn)行編寫了,哦度量值不同于字段,字段可以理解為數(shù)據(jù)的列,而度量值是在列的基礎(chǔ)上進(jìn)行的某些操作,比如說聚合函數(shù)。其一般也不直接顯示在表里面,而是作為一個(gè)篩選條件存在于數(shù)據(jù)透視表里面,也就是說,要先懂?dāng)?shù)據(jù)透視表,然后才能懂度量值,其更像sql語句一樣靈活,解決數(shù)據(jù)透視表無法表達(dá)的卻又有的內(nèi)涵。

CLOSINGBALANCEMONTH():計(jì)算當(dāng)前上下文中該月最后一個(gè)日期的expression語法CLOSINGBALANCEMONTH(表達(dá)式,日期格式[,篩選條件])

下面的公式示例創(chuàng)建一個(gè)度量值,該度量值計(jì)算產(chǎn)品庫存的“月末庫存值”。為了闡釋此示例的工作方式,創(chuàng)建一個(gè)數(shù)據(jù)透視表,并且向該數(shù)據(jù)透視表的“行標(biāo)簽”區(qū)域添加三個(gè)字段:CalendarYear、MonthNumberOfYear?和?DayNumberOfMonth。?然后使用在代碼部分中定義的公式,將名為?Month?End?Inventory?Value?的度量值添加到該數(shù)據(jù)透視表的“值”區(qū)域。代碼

=CLOSINGBALANCEMONTH(SUMX(ProductInventory,ProductInventory[UnitCost]*ProductInventory[UnitsBalance]),DateTime[DateKey])

這個(gè)是文檔里面復(fù)制的,我不知道是不是我理解有問題,這里的月末庫存值是指這個(gè)月月末那天庫存物的價(jià)值,我把它和會(huì)計(jì)里面那個(gè)聯(lián)系起來,好像期末庫存余額(其實(shí)不是),對公式進(jìn)行一下解讀,漢語翻譯一下意思吧。表達(dá)式的名稱(所應(yīng)用的表的名字,表名[字段名]運(yùn)算操作符? 表名[表字段名]),表名[字段名])。。。其實(shí)可以看出如果是設(shè)計(jì)多張表要在函數(shù)后面加X,如SUMX,AVERAGEX等,在寫字段的時(shí)候一般寫出第一個(gè)字母就會(huì)有智能感知的提示,鼠標(biāo)雙擊就可以選取,如果是對同一張表操作,可以省略字段前的表名,字段名被括在中括號(hào)里面,這是固定的表達(dá)式的書寫規(guī)范。寫好這個(gè)度量值之后,在數(shù)據(jù)透視表里面勾選并拖到值,就完成了其的使命,其實(shí)對于簡單的聚合函數(shù),完全可以用透視表的鼠標(biāo)來完成,沒必要搞得這么復(fù)雜,還專門寫個(gè)度量值。我也是最近才初學(xué),好多東西都是自己直觀的理解,完全達(dá)不到授業(yè)解惑的水平,在簡書上記錄完全是為了以一種簡單永久方便的方式來保存自己的筆記。以此類推,于此相似的函數(shù)還有CLOSINGBALANCEQUARTER(),''''''YEAR(),該值表示在當(dāng)前上下文中該季度/ 年最后一個(gè)日期計(jì)算的。(我做的時(shí)候,好像返回表,不知道哪里多了兩個(gè)表的數(shù)據(jù)出來,元數(shù)據(jù)的子數(shù)據(jù)表)

DATAADD()返回一個(gè)表,該表包含由日期構(gòu)成的一列,這些日期是在時(shí)間上從當(dāng)前上下文中的日期前移或后移指定間隔數(shù)目的日

=DATEADD(DateTime[DateKey],-1,year)

沒弄成

DATESBETWEEN(數(shù)據(jù),開始,結(jié)束日期)

計(jì)算夏季銷售額例子

=CALCULATE(SUM(InternetSales_USD[SalesAmount_USD]), DATESBETWEEN(DateTime[DateKey],? ? DATE(2007,6,1),? ? DATE(2007,8,31)

在數(shù)據(jù)透視表里面單獨(dú)列顯示,要是能計(jì)算每年某個(gè)時(shí)間段的銷售額就好了,往下學(xué)吧,或許接下來會(huì)遇到,或許可以用嵌套呢,反正我現(xiàn)在不懂。

類似的year、quarter、month一樣

下面的公式為 2007 年 8 月 24 日之前的 21 天返回 Internet 銷售額。=

CALCULATE(SUM(InternetSales_USD[SalesAmount_USD]),DATESINPERIOD(DateTime[DateKey],DATE(2007,08,24),-21,day))

DATESMTD 函數(shù)返回一個(gè)表,該表包含當(dāng)前上下文中本月截止到現(xiàn)在的日期列

計(jì)算本月截止到現(xiàn)在的總計(jì)的表達(dá)式范例=CALCULATE(SUM(InternetSales_USD[SalesAmount_USD]), DATESMTD(DateTime[DateKey]))。這個(gè)的意思就不用解釋了吧,第一個(gè)已經(jīng)詳細(xì)的說了,這些都是類似的,CALCULATE是指上下文,他們這么說的,我也不懂具體的啥意思,但我猜可能是為了為后面的函數(shù)增加一個(gè)外在的篩選條件吧。就像這一樣,增加日期篩選條件

類似DATESQTD()當(dāng)前截至到本季度總計(jì) ? DATESYTD()

ENDOFMONTH函數(shù)

=ENDOFMONTH(DateTime[DateKey])

不懂和CLOSINGBALANCEMONTH()有什么區(qū)別

另ENDOF季度,年

FIRSTDATE()

=FIRSTDATE('InternetSales_USD'[SaleDateKey])

和ENDOF()相對應(yīng),返回第一個(gè)日期

更有LASTDATE()

我越來越懷疑前面所說的CLOSINGBALANCEMONTH()的理解是錯(cuò)的,畢竟上面這兩函數(shù)才是我理解的那意思,返回第一個(gè)或最后一個(gè)日期

NEXTDAY 函數(shù)

返回一個(gè)表,該表包含的一列具有當(dāng)前上下文中基于?dates?列中指定的第一個(gè)日期的下一天中的所有日期,今天6/9,即返回所有6/10的數(shù)據(jù),季度年,月,亦如此。只是自己的電腦好卡,實(shí)驗(yàn)的數(shù)據(jù)沒出來

OPENINGBALANCEMONTH()

這才是與CLOSINGBANLANCEMONTH()相對應(yīng)的,只是自己還不知道其具體的用法和意義是什么(月初庫存值,不懂啊,咋計(jì)算的)

PARALLELPERIOD 函數(shù) (并行期間,好不容易看懂英文意思,這兩單詞有印象)

返回一個(gè)表,該表包含由日期構(gòu)成的一列,這些日期表示與當(dāng)前上下文中指定的?dates?列中的日期并行的期間,該列中具有在時(shí)間中前移或后移某個(gè)數(shù)目的間隔的日期

上面我說過的DATESBETWEEN()的解決辦法就是這個(gè)東東了。

實(shí)例上一年的銷售額=CALCULATE(SUM(InternetSales_USD[SalesAmount_USD]), PARALLELPERIOD(DateTime[DateKey],-1,year))

PREVIOUSDAY 函數(shù),返回當(dāng)前日期的前一個(gè)日期 類似上一個(gè)月,季度,年一樣

TOTALMTD(,[,])計(jì)算當(dāng)前上下文中當(dāng)月至今的 expression 的值

感覺和那datesMTD無異。類似Q YTD

實(shí)例=TOTALMTD(SUM(InternetSales_USD[SalesAmount_USD]),DateTime[DateKey])

今天的時(shí)間智能函數(shù)就到這把,學(xué)知識(shí)有點(diǎn)小累啊。而且越學(xué)越知道自己的開始的理解有問題,下一篇的時(shí)候我寫一下,自己在這篇文章里面的好多錯(cuò)誤吧,一些最基本的理論都錯(cuò)了,原來,知識(shí)是要去尊重權(quán)威的,不能憑自己的想當(dāng)然,所有的想當(dāng)然都是帶著對自己知識(shí)局限條件下的無謂猜想罷了。真的好多錯(cuò)誤,但還是感謝自己今天做相應(yīng)的筆記,學(xué)習(xí)相關(guān)的知識(shí)?;蛟S,以后會(huì)有用處的,我 等待著。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容