次の方法で共有


EARLIER

適用対象:計算列計算テーブルMeasureビジュアル計算

指定した列の外部評価パスで、指定した列の現在の value を返します。

EARLIER は、入力として特定の value を使用して、その入力に基づいて計算を生成 and 入れ子になった計算に役立ちます。 Microsoft Excel では、現在の行のコンテキスト内でのみこのような計算を実行できます。ただし、DAX では、入力 value の and を格納し、テーブル全体のデータを使用して計算を行うことができます。

EARLIER は、主に計算列のコンテキストで使用されます。

構文

EARLIER(<column>, <number>)

パラメーター

用語 定義
column 列 or 列に解決される式です。
num (省略可能)外側の評価パスに対する正の数値。

next 評価レベルアウトは 1 で表されます。2 つのレベルが 2 and で表されます。

省略すると、既定の value は 1 になります。

value を返す

外側の評価パスの value における、columnからの行の現在の number

例外

エラーの説明

備考

  • EARLIER は、テーブル スキャンの開始前に行コンテキストがある if 成功します。 それ以外の場合は、errorを返します。

  • EARLIER のパフォーマンスが低下する可能性があります。理論的には、(列内の) 行の合計数に近い数の操作を (式の構文に応じて) 同じ数に近い数の操作を実行する必要があります。 たとえば、列に 10 行ある if、約 100 の操作が必要になる可能性があります。100 行ある if、10,000 に近い操作が実行される可能性があります。

  • この関数は、行レベル セキュリティ (RLS) 規則 not 計算列で使用する場合に、DirectQuery モードで使用するためにサポート or。

手記

実際には、VertiPaq インメモリ分析エンジンは、計算の実際の数を減らすために最適化を実行しますが、再帰を伴う数式を作成するときは注意が必要です。

EARLIERの使用方法を説明するには、rankvalueand を計算し、その rankvalue を他の計算で使用するシナリオを構築する必要があります。

次の例は、各 ProductSubcategory の売上合計を示す、この単純なテーブル (ProductSubcategory) に基づいています。

ランク付け列を含む最後のテーブルを次に示します。

ProductSubcategoryKey EnglishProductSubcategoryName TotalSubcategorySales SubcategoryRanking
18 Bib-Shorts $156,167.88 18
26 自転車ラック $220,720.70 14
27 自転車スタンド $35,628.69 30
28 ボトル and ケージ $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 クランクセット $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 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 タイヤ and チューブ $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

Rank Value の作成

行内の特定の rank の valuevalue を取得する方法の 1 つは、比較対象の行よりも大きい (count 小さい) value 行数を同じテーブルに or することです。 この手法では、テーブル内の最も高い blank に対して orvalue 0 value が返されますが、等しい values は同じ rankvalueandnextvalue (等しい valuesの後) に連続しない rankvalueを持ちます。 以下の sample を参照してください。

SubCategorySalesRanking新しい計算列は、次の式を使用して作成されます。

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

次の手順では、計算方法について詳しく説明します。

  1. EARLIER 関数は、テーブル内の現在の行 value の を取得します。 この場合、プロセスが開始されているため、テーブル内の first 行です

  2. EARLIER([TotalSubcategorySales]) は、外側のループの現在の行である $156,167.88 と評価されます。

  3. FILTER 関数 now は、all 行 value $156,167.88 (の現在の value) より大きい EARLIER を持つテーブルを返します。

  4. COUNTROWS 関数は、フィルター処理されたテーブルの行をカウント and、その value を現在の行の新しい計算列に 1 を加算して割り当てます。 上位ランクの value が Blankにならないように、1 を追加する必要があります。

  5. 計算列の数式は、手順 1 から 4 を繰り返 nextand 行に移動します。 これらの手順は、テーブルの末尾に達するまで繰り返されます。

EARLIER 関数は、現在のテーブル操作の前に常に列の value を取得します。 その前にループから If を取得する必要がある value は、second 引数を 2 に設定します。

EARLIEST 関数Filter 関数