官术网_书友最值得收藏!

第1章 與時(shí)間相關(guān)的計(jì)算

本章介紹4種與時(shí)間相關(guān)的計(jì)算模式。其目的是幫助你根據(jù)自己的特定需求選擇正確的模式。確實(shí),在進(jìn)行時(shí)間相關(guān)的計(jì)算時(shí),模式的選擇是個(gè)難題。

首先,什么是與時(shí)間相關(guān)的計(jì)算呢?與時(shí)間相關(guān)的計(jì)算是指任何涉及時(shí)間的計(jì)算。比如期初至今(年初至今、季初至今或月初至今)相關(guān)的一組計(jì)算。這些計(jì)算從一個(gè)時(shí)間段(年、季度、月)開(kāi)始并返回自該時(shí)間段開(kāi)始到報(bào)告中所示日期的度量值的聚合。時(shí)間段的定義會(huì)根據(jù)你使用的是公歷日歷還是會(huì)計(jì)日歷而存在差異。在圖1-1中,你可以看到一個(gè)期初至今計(jì)算的示例,其中,YTD代表年初至今、QTD代表季初至今。

圖1-1 期初至今計(jì)算的示例

這些模式還包括將特定時(shí)間段內(nèi)的參數(shù)和另一時(shí)間段內(nèi)的參數(shù)進(jìn)行比較。例如,你可以將當(dāng)月的銷售額與去年同月的銷售額進(jìn)行比較。與時(shí)間相關(guān)的計(jì)算的另一個(gè)示例是一段時(shí)期內(nèi)的移動(dòng)平均,例如,12個(gè)月的移動(dòng)平均可以讓折線圖平滑并消除對(duì)計(jì)算結(jié)果的季節(jié)性影響。4個(gè)與時(shí)間相關(guān)的模式會(huì)執(zhí)行相同的一組計(jì)算。

對(duì)日歷的不同定義會(huì)使模式產(chǎn)生不同的結(jié)果。通過(guò)查看圖1-1,你已經(jīng)可以理解年初至今計(jì)算的不同定義。

根據(jù)使用的是公歷日歷還是會(huì)計(jì)日歷,日期的數(shù)值會(huì)有差異。由于對(duì)日歷的定義不同,事情處理起來(lái)很容易變得非常復(fù)雜。

例如,你可能有遵循ISO標(biāo)準(zhǔn)或你自己定義的基于周的日歷。在基于周的日歷中,每個(gè)月從一周的同一天開(kāi)始,這一年也是如此。因此,基于周的日歷中的一年可能在上一個(gè)公歷年開(kāi)始,也可能在下一個(gè)公歷年結(jié)束。此外,出于會(huì)計(jì)目的,某些日歷會(huì)將一年分為13個(gè)時(shí)間段,而不是12個(gè)月。不同的日歷需求是導(dǎo)致對(duì)與時(shí)間相關(guān)的模式進(jìn)行選擇的主要原因。

4個(gè)與時(shí)間相關(guān)的模式(依復(fù)雜程度遞增的排序)如下所示:

● 標(biāo)準(zhǔn)時(shí)間相關(guān)的計(jì)算;

● 與月相關(guān)的計(jì)算;

● 與周相關(guān)的計(jì)算;

● 自定義時(shí)間相關(guān)的計(jì)算;

標(biāo)準(zhǔn)時(shí)間相關(guān)的計(jì)算模式利用常規(guī)的DAX時(shí)間智能函數(shù)來(lái)實(shí)現(xiàn)。該模式的實(shí)現(xiàn)基于你的日歷是常規(guī)公歷日歷,并且你的會(huì)計(jì)日歷起始于公歷季度。例如,如果你的會(huì)計(jì)日歷從7月1日(公歷日歷第三季度的開(kāi)始日期)開(kāi)始,則DAX時(shí)間智能函數(shù)可以正常工作。但是,如果你的會(huì)計(jì)日歷從3月1日開(kāi)始,則可能會(huì)出現(xiàn)出乎意料的計(jì)算結(jié)果。這既因?yàn)?月不是一個(gè)公歷季度的開(kāi)始,又因?yàn)闀?huì)計(jì)日歷在處理閏年方面的歷史缺陷。盡管有這些限制,該模式還是易于使用和執(zhí)行的,因?yàn)樗蕾囉跇?biāo)準(zhǔn)DAX函數(shù),并且可以與常規(guī)日期表配合使用,幾乎沒(méi)有要求。

其他的3個(gè)模式不使用DAX時(shí)間智能函數(shù)計(jì)算。它們使用基本的DAX函數(shù)編寫(xiě),這就給以季度、月份和周定義的日歷提供了更大的靈活性。這些模式需要你創(chuàng)建一個(gè)Date表,DAX度量值需要通過(guò)該表中的列來(lái)識(shí)別該年度的時(shí)間段。例如,你需要一個(gè)包含年份的列、一個(gè)包含季度的列、一個(gè)包含月份的列,以及其他用于簡(jiǎn)化計(jì)算的列。

此外,在檢測(cè)和篩選時(shí)間段時(shí)需要考慮許多細(xì)節(jié)。事實(shí)證明,許多看起來(lái)對(duì)于人類而言很容易的計(jì)算,而對(duì)于計(jì)算機(jī)就非常復(fù)雜。當(dāng)你將一個(gè)季度與上一個(gè)季度進(jìn)行比較時(shí),你需要為兩個(gè)季度選擇不同的天數(shù):1月至3月的季度比4月至6月的季度短。月份也是如此:1月比2月長(zhǎng),但是如果要逐月進(jìn)行比較,則你所需要的兩個(gè)日期選擇會(huì)具有不同的長(zhǎng)度。

如果標(biāo)準(zhǔn)時(shí)間智能函數(shù)不能滿足你的需求,則你需要執(zhí)行其他3種模式中的一種。這3種模式都需要?jiǎng)?chuàng)建你自己的Date表。

與月相關(guān)的計(jì)算模式是最簡(jiǎn)單的。該模式所執(zhí)行的所有計(jì)算均假設(shè)你并不在意日常細(xì)節(jié)。例如,如果你需要生成兩個(gè)月份之間進(jìn)行比較后的計(jì)算和報(bào)告,該模式非常適用。該模式不支持選擇子月份。如果你要比較一個(gè)季度中的3天與上一季度中相同的3天,則超出了這個(gè)模式的能力:它不起作用。盡管其分析能力存在很大局限性(僅限于月粒度),但與月相關(guān)的模式的分析速度仍非常快速且易于執(zhí)行。此外,對(duì)于數(shù)據(jù)超過(guò)12個(gè)月的情況,它也可以無(wú)縫處理。它具有定制模式的靈活性,并且比標(biāo)準(zhǔn)時(shí)間相關(guān)模式簡(jiǎn)單。如果月粒度這個(gè)局限不會(huì)影響你的計(jì)算,那么非常建議你選擇使用這個(gè)模式。

在與周相關(guān)的計(jì)算模式中,星期是日歷的基礎(chǔ)。盡管很多國(guó)家采用不同的國(guó)家標(biāo)準(zhǔn)來(lái)標(biāo)識(shí)年份、季度和星期,但I(xiàn)SO 8601是提供星期日期系統(tǒng)定義的標(biāo)準(zhǔn)之一。一年有52或53個(gè)星期,每個(gè)季度有13個(gè)星期,每個(gè)季度又分為5+4+4個(gè)星期、4+5+4個(gè)星期或4+4+5個(gè)星期。如果一年中有53個(gè)星期,則其中一個(gè)季度有14個(gè)星期。因?yàn)橐粋€(gè)星期不一定完整地包含在一個(gè)月份中,所以應(yīng)將一個(gè)季度中的一組星期稱為“時(shí)間段”,雖然我們通常稱之為“月份”。因此,在以下描述中,我們會(huì)將月份名稱稱為“時(shí)間段”。

由于星期是主要單位,因此公歷日歷中的一年與基于周的日歷中的一年之間沒(méi)有對(duì)應(yīng)關(guān)系。基于周的日歷始終在相同的星期幾開(kāi)始,例如星期一或星期日。因此,偶爾才會(huì)在1月1日發(fā)生這種情況。對(duì)于基于周的年,一年起始于上一年的12月29日,還是當(dāng)前年份的1月3日,都沒(méi)有關(guān)系。盡管有些不同,但是基于周的日歷具有顯著的特點(diǎn):一個(gè)季度中的每個(gè)“月”都包含相同數(shù)量的星期幾。將一個(gè)季度與另一個(gè)季度進(jìn)行比較,意味著比較相同的天數(shù)和相同的星期幾。

基于周的日歷需要一個(gè)專用的Date表。該表包含進(jìn)行DAX計(jì)算的若干列。此外,由于沒(méi)有現(xiàn)成的可用于對(duì)基于周的日歷進(jìn)行計(jì)算的DAX函數(shù),所以使用自定義DAX代碼來(lái)執(zhí)行此類計(jì)算。與周相關(guān)的模式的復(fù)雜程度要高于與月相關(guān)的模式,因?yàn)榕c周相關(guān)的模式可讓你實(shí)現(xiàn)篩選任何時(shí)間段,直到“天”的級(jí)別。如果你使用基于周的日歷,則必須采用基于周的計(jì)算模式。

自定義時(shí)間相關(guān)的計(jì)算模式是最靈活(且最復(fù)雜)的。作為最后一個(gè)模式,它提供與標(biāo)準(zhǔn)時(shí)間相關(guān)模式相同的計(jì)算。它的特點(diǎn)在于整個(gè)模式是使用基本的DAX函數(shù)編寫(xiě)的,而不使用任何DAX時(shí)間智能函數(shù)。該模式極為靈活,因?yàn)槟憧梢噪S意變動(dòng)計(jì)算的執(zhí)行方式。當(dāng)然,更高的靈活性也會(huì)帶來(lái)更高的復(fù)雜性。

那么,你應(yīng)該選擇哪種模式呢?

● 如果常規(guī)的公歷日歷能滿足你的需求,那么顯而易見(jiàn),選擇標(biāo)準(zhǔn)時(shí)間相關(guān)的計(jì)算模式。

● 如果月粒度足以滿足你的報(bào)告需求(通常是這種情況,而且比預(yù)期的要多得多),那么與月相關(guān)的計(jì)算模式就是最佳選擇,因?yàn)樗焖俣?jiǎn)便。

● 如果你使用基于周的日歷,則需要與周相關(guān)的計(jì)算模式。

● 如果以上情況均不足以滿足需求,并且你確實(shí)需要完全的靈活性,請(qǐng)準(zhǔn)備加入一場(chǎng)漫長(zhǎng)而有趣的旅程,深入了解復(fù)雜的篩選上下文,然后直接進(jìn)入自定義時(shí)間相關(guān)的計(jì)算模式。

切記:對(duì)于商業(yè)智能項(xiàng)目,越簡(jiǎn)單越好。選擇最能直接滿足你需求的模式。不用多說(shuō),如果你對(duì)各種模式之間的差異感到好奇,那么在做出選擇之前快速通讀所有章節(jié)可能會(huì)對(duì)你很有幫助。

主站蜘蛛池模板: 化隆| 大冶市| 金寨县| 称多县| 来安县| 临湘市| 长子县| 大冶市| 镇平县| 郓城县| 平南县| 磴口县| 浑源县| 富蕴县| 南华县| 格尔木市| 岳西县| 宜兴市| 龙门县| 获嘉县| 北票市| 平阴县| 农安县| 宜都市| 华池县| 公安县| 滨州市| 渝北区| 治县。| 开原市| 银川市| 沙河市| 逊克县| 汾阳市| 广灵县| 临海市| 凌源市| 乌拉特前旗| 罗城| 焉耆| 林西县|