EARLIER
指定した列の外部評価パスで、指定した列の現在の 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
次の手順では、計算方法について詳しく説明します。
EARLIER
関数は、テーブル内の現在の行 value の を取得します。 この場合、プロセスが開始されているため、テーブル内の first 行ですEARLIER([TotalSubcategorySales])
は、外側のループの現在の行である $156,167.88 と評価されます。FILTER
関数 now は、all 行 value $156,167.88 (の現在の value) より大きいEARLIER
を持つテーブルを返します。COUNTROWS
関数は、フィルター処理されたテーブルの行をカウント and、その value を現在の行の新しい計算列に 1 を加算して割り当てます。 上位ランクの value が Blankにならないように、1 を追加する必要があります。計算列の数式は、手順 1 から 4 を繰り返 nextand 行に移動します。 これらの手順は、テーブルの末尾に達するまで繰り返されます。
EARLIER
関数は、現在のテーブル操作の前に常に列の value を取得します。 その前にループから If を取得する必要がある value は、second 引数を 2 に設定します。