共用方式為


EARLIER 函數

在提及之資料行的外部評估行程中,傳回所指定資料行的目前值。

當您想要將特定值做為輸入使用並根據該輸入產生計算時,EARLIER 對巢狀計算很有用。 在 Microsoft Excel 中,您僅能在目前資料列的內容中執行此類計算,然而在 DAX 中,您可以儲存輸入的值,然後使用整個資料表中的資料進行計算。

EARLIER 大部分用於導出資料行的內容中。

語法

EARLIER(<column>, <number>)

參數

詞彙

定義

column

資料行或是解析成資料行的運算式。

num

(選擇性) 外部評估行程的正數。

下一個評估層級輸出以 1 表示;兩個層級輸出以 2 表示等等。

省略時,預設值為 1。

屬性值/傳回值

資料列的目前值,從外部評估行程的 column (位於 number)。

例外狀況

錯誤的描述

備註

如果在開始資料表掃描前有一個資料列內容,EARLIER 會成功。 否則,它會傳回錯誤。

EARLIER 的效能可能會變慢,因為理論上,它必須執行接近資料列 (在資料行中) 總數乘以相同數字 (根據運算式的語法) 的數個運算。 例如,如果您在資料行中有 10 個資料列,可能需要大約 100 個運算;如果您有 100 個資料列,則可能會執行接近 10,000 個運算。

[!附註]

實際上,xVelocity 記憶體中分析引擎 (VertiPaq) 會執行最佳化來減少計算的實際次數,但是在建立與遞迴相關聯的公式時,您應該謹慎行事。

範例

若要說明 EARLIER 的用法,需要建立計算等級值,然後在其他計算中使用該等級值的狀況。

下列範例是以 ProductSubcategory 這個簡單的資料表為基礎,以顯示每個 ProductSubcategory 的總銷售量。

最後一個資料表 (包括排名資料行) 會顯示在這裡。

ProductSubcategoryKey

EnglishProductSubcategoryName

TotalSubcategorySales

SubcategoryRanking

18

Bib-Shorts

$156,167.88

18

26

Bike Racks

$220,720.70

14

27

Bike Stands

$35,628.69

30

28

Bottles and Cages

$59,342.43

24

5

Bottom Brackets

$48,643.47

27

6

Brakes

$62,113.16

23

19

Caps

$47,934.54

28

7

Chains

$8,847.08

35

29

Cleaners

$16,882.62

32

8

Cranksets

$191,522.09

15

9

Derailleurs

$64,965.33

22

30

Fenders

$41,974.10

29

10

Forks

$74,727.66

21

20

Gloves

$228,353.58

12

4

Handlebars

$163,257.06

17

11

Headsets

$57,659.99

25

31

Helmets

$451,192.31

9

32

Hydration Packs

$96,893.78

20

21

Jerseys

$699,429.78

7

33

Lights

 

36

34

鎖定

$15,059.47

33

1

Mountain Bikes

$34,305,864.29

2

12

Mountain Frames

$4,511,170.68

4

35

Panniers

 

36

13

Pedals

$140,422.20

19

36

Pumps

$12,695.18

34

2

Road Bikes

$40,551,696.34

1

14

Road Frames

$3,636,398.71

5

15

Saddles

$52,526.47

26

22

Shorts

$385,707.80

10

23

Socks

$28,337.85

31

24

Tights

$189,179.37

16

37

Tires and Tubes

$224,832.81

13

3

Touring Bikes

$13,334,864.18

3

16

Touring Frames

$1,545,344.02

6

25

Vests

$240,990.04

11

17

Wheels

$648,240.04

8

建立等級值

在資料列中取得給定值之等級值的其中一個方法是,計算相同資料表中,擁有大於 (或小於) 要比較之值的資料列數目。 此技術會針對資料表中的最大值傳回空白或零值,而相等的值將會擁有相同的等級值,而下一個值 (在相等的值之後) 則會擁有非連續的等級值。 請參閱以下的範例。

新的計算結果欄 SubCategorySalesRanking 是使用下列公式建立的。

= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1

下列步驟詳細描述計算的方法。

  1. EARLIER 函數會針對資料表中的目前資料列,取得 TotalSubcategorySales 的值。 在此情況下,由於程序即將開始,因此它是資料表中的第一個資料列。

  2. EARLIER([TotalSubcategorySales]) 會將外部迴圈中的目前資料列評估為 $156,167.88。

  3. FILTER 函數現在會傳回一個資料表,其中所有資料列的 TotalSubcategorySales 值都大於 $156,167.88 (EARLIER 的目前值)。

  4. COUNTROWS 函數會計算篩選資料表的資料列,然後將該值指派給目前資料列加 1 的新計算結果欄。 為防止最上方的等級值變成空白,需要加上 1。

  5. 計算結果欄公式會移到下一個資料列,然後重複步驟 1 到 4。 在到達資料表結尾之前,會重複這些步驟。

The EARLIER 函數永遠會在目前資料表運算之前,取得資料行的值。 如果您需要在這之前取得迴圈中的值,請將第二個引數設為 2。

請參閱

參考

EARLIEST 函數

其他資源

篩選函數 (DAX)