事件
3月31日 下午11時 - 4月2日 下午11時
最終Microsoft Fabric、Power BI、SQL 和 AI 社群主導的活動。 2025 年 3 月 31 日至 4 月 2 日。
立即註冊傳回所提及數據行外部評估階段中指定數據行的目前值。
EARLIER 適用於您想要使用特定值做為輸入的巢狀計算,並根據該輸入產生計算。 在 Microsoft Excel 中,您只能在目前數據列的內容中執行這類計算;不過,在 DAX 中,您可以儲存輸入的值,然後使用來自整個數據表的數據進行計算。
EARLIER 主要用於計算結果列的內容。
EARLIER(<column>, <number>)
術語 | 定義 |
---|---|
column |
解析為數據行的數據行或表達式。 |
num |
(選擇性)外部評估階段的正數。 下一個評估等級以 1 表示;兩個層級的呈現方式為 2,依此表示。 當省略預設值為 1 時。 |
在外部評估階段 number
,從 column
的數據列目前值。
錯誤的描述
如果數據表掃描開始之前有數據列內容,EARLIER
就會成功。 否則會傳回錯誤。
EARLIER
的效能可能很慢,因為理論上,它可能需要執行一些接近相同數目的數據列總數(在數據行中)的作業(視表達式的語法而定)。 例如,如果您在數據行中有10個資料列,可能需要大約100個作業;如果您有 100 個數據列,則可能會執行接近 10,000 個作業。
在匯出數據行或數據列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
注意
實際上,VertiPaq 記憶體內部分析引擎會執行優化以減少實際計算數目,但在建立涉及遞歸的公式時,您應該謹慎。
為了說明使用 EARLIER,必須建置計算排名值的案例,然後在其他計算中使用該排名值。
下列範例是以這個簡單數據表為基礎,ProductSubcategory
,其中顯示每個 ProductSubcategory 的總銷售額。
最後一個數據表,包括排名數據行,如下所示。
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Bib-Shorts | $156,167.88 | 18 |
26 | 自行車機架 | $220,720.70 | 14 |
27 | 自行車看臺 | $35,628.69 | 30 |
28 | 瓶子和籠子 | $59,342.43 | 24 |
5 | 底括弧 | $48,643.47 | 27 |
6 | 剎車 | $62,113.16 | 23 |
19 | 帽 | $47,934.54 | 28 |
7 | 鏈 | $8,847.08 | 35 |
29 | 清潔工 | $16,882.62 | 32 |
8 | Cranksets | $191,522.09 | 15 |
9 | 脫軌器 | $64,965.33 | 22 |
30 | 擋泥板 | $41,974.10 | 29 |
10 | 叉 | $74,727.66 | 21 |
20 | 手套 | $228,353.58 | 12 |
4 | 車把 | $163,257.06 | 17 |
11 | 耳機 | $57,659.99 | 25 |
31 | 頭盔 | $451,192.31 | 9 |
32 | 水化套件 | $96,893.78 | 20 |
21 | 球衣 | $699,429.78 | 7 |
33 | 燈 | 36 | |
34 | 鎖 | $15,059.47 | 33 |
1 | 山地自行車 | $34,305,864.29 | 2 |
12 | 山框 | $4,511,170.68 | 4 |
35 | Panniers | 36 | |
13 | 踏板 | $140,422.20 | 19 |
36 | 泵 | $12,695.18 | 34 |
2 | 公路自行車 | $40,551,696.34 | 1 |
14 | 道路框架 | $3,636,398.71 | 5 |
15 | 馬鞍 | $52,526.47 | 26 |
22 | 短褲 | $385,707.80 | 10 |
23 | 襪子 | $28,337.85 | 31 |
24 | 緊身 衣 | $189,179.37 | 16 |
37 | 輪胎和管子 | $224,832.81 | 13 |
3 | 旅遊自行車 | $13,334,864.18 | 3 |
16 | 導覽框架 | $1,545,344.02 | 6 |
25 | 背心 | $240,990.04 | 11 |
17 | 車輪 | $648,240.04 | 8 |
取得數據列中指定值的排名值的方法之一,就是計算相同數據表中大於或小於所比較之值的數據列數目。 這項技術會傳回數據表中最大值的空白或零值,而相等值會具有相同的順位值,而下一個值(在相等值之後)會有非連續的順位值。 請參閱下列範例。
使用下列公式建立新的導出數據行 SubCategorySalesRanking。
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
下列步驟將更詳細地描述計算方法。
EARLIER
函式會取得數據表中目前數據列 TotalSubcategorySales 的值。 在此情況下,因為進程正在啟動,所以它是數據表中的第一個數據列
EARLIER([TotalSubcategorySales])
評估為 $156,167.88,外部迴圈中的目前數據列。
FILTER
函式現在會傳回數據表,其中所有數據列的值 TotalSubcategorySales 大於 $156,167.88(這是 EARLIER
目前的值)。
COUNTROWS
函式會計算篩選數據表的數據列,並將該值指派給目前數據列加上 1 的新計算結果列。 需要新增 1,以防止排名最高的值變成空白。
計算結果列公式會移至下一個數據列,並重複步驟 1 到 4。 這些步驟會重複執行,直到達到數據表結尾為止。
EARLIER
函式一律會在目前數據表作業之前取得數據行的值。 如果您需要先從迴圈取得值,請將第二個自變數設定為 2。
事件
3月31日 下午11時 - 4月2日 下午11時
最終Microsoft Fabric、Power BI、SQL 和 AI 社群主導的活動。 2025 年 3 月 31 日至 4 月 2 日。
立即註冊