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

標準時間智能函數是表函數,該函數返回在CALCULATE中用作篩選器的日期列表。通過編寫更復雜的篩選器表達式可以獲得時間智能函數的結果。例如,DATESYTD函數可以返回篩選上下文中從顯示的日期所在年份的第一天到顯示的最后一天之間的所有日期。下方的表達式:

DATESYTD ( 'Date'[Date] )

對應下方的FILTER表達式:

VAR LastDateAvailable = MAX ( 'Date'[Date] )
VAR FirstJanuaryOfLastDate = DATE ( YEAR ( LastDateAvailable ), 1, 1 )
RETURN
    FILTER (
        ALL ( 'Date'[Date] ),
        AND (
            'Date'[Date] >= FirstJanuaryOfLastDate,
            'Date'[Date] <= LastDateAvailable
        )
    )

時間智能函數有很多,大多數時間智能函數是以這種方式呈現的。請注意:時間智能函數應用作CALCULATE的篩選器參數,有時你會通過使用變量來實現這一點。在迭代器中使用時間智能函數是很危險的,因為會觸發隱式上下文轉換,從而導致從篩選上下文中檢索有效日期。DAX指南文檔中提供了更多詳細信息。

以下是使用時間智能函數時最佳做法的快速指南。

● 僅在CALCULATE / CALCULATETABLE的篩選器參數中使用諸如DATESYTD之類的時間智能函數,或給變量分配篩選器。

● 在返回值的DAX公式中使用EDATE和EOMONTH之類的標量函數(也稱為標量表達式)。這些函數不是時間智能函數,可以用于以行上下文執行的表達式中。

● 使用CONVERT將日期轉換為數字,反之亦然。

● 有關時間智能函數的完整最新列表,請訪問DAX GUIDE網站。

DAX初學者經常將時間智能函數與常規(標量)時間函數混淆。這種混淆導致出現常見錯誤,可以通過遵循以下建議來避免。

不要使用DATEADD來返回前一天或后一天。可以使用簡單的數學運算符來做到這一點。

不要使用PREVIOUSDAY來計算標量表達式中的前一天。從日期中減1,即可獲得標量表達式中的前一天。

不要將EOMONTH用作篩選器,而應使用ENDOFMONTH。EOMONTH是標量表達式。ENDOFMONTH是時間智能函數。請始終注意函數的返回類型:只有表函數是時間智能函數,因此不應當用于標量表達式中。

主站蜘蛛池模板: 白玉县| 阿瓦提县| 镇巴县| 四会市| 开封县| 全椒县| 宾阳县| 大名县| 长海县| 蓝山县| 衡东县| 隆林| 内乡县| 榆社县| 沽源县| 海城市| 正安县| 普陀区| 广元市| 阿拉善盟| 南漳县| 龙海市| 子洲县| 当涂县| 富顺县| 新巴尔虎左旗| 沈阳市| 新疆| 通河县| 德州市| 新干县| 唐河县| 海安县| 武威市| 潍坊市| 江阴市| 罗平县| 吉林省| 澄江县| 霍林郭勒市| 南通市|