Baca dalam bahasa Inggris

Bagikan melalui


OFFSET

Berlaku untuk: kolom terhitungTabel terhitungMeasurePerhitungan visual

Mengembalikan satu baris yang diposisikan baik sebelum or setelah baris saat ini dalam tabel yang sama, dengan offsettertentu. If baris saat ini tidak dapat disimpulkan ke satu baris, beberapa baris dapat dikembalikan.

Sintaksis

DAX
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parameter

Istilah Definisi
delta Jumlah baris sebelum (valuenegatif ) or setelah (valuepositif) baris saat ini untuk mendapatkan data. Ini bisa berupa ekspresi DAX apa pun yang mengembalikan skalar value.
relation (Opsional) Ekspresi tabel tempat baris output dikembalikan.
If kolom all yang ditentukan di partitionBy harus berasal dari kolom or tabel related.
If dihilangkan:
- orderBy harus ditentukan secara eksplisit.
- ekspresi AllorderByandpartitionBy harus nama kolom yang sepenuhnya memenuhi syarat and berasal dari satu tabel.
- Default ke ALLSELECTED() kolom all di orderByandpartitionBy.
axis (Opsional) Sumbu dalam bentuk visual. Hanya tersedia dalam perhitungan visual, and menggantikan relation.
orderBy (Opsional) Klausa ORDERBY() yang berisi ekspresi yang define cara setiap partisi diurutkan.
If dihilangkan:
- relation harus ditentukan secara eksplisit.
- Default untuk mengurutkan menurut setiap kolom di relation yang sudah ditentukan not dalam partitionBy.
blanks (Opsional) Enumerasi yang menentukan cara menangani blankvalues saat mengurutkan.
Parameter ini dicadangkan untuk digunakan di masa mendatang.
Saat ini, satu-satunya value yang didukung adalah DEFAULT, di mana perilaku untuk values numerik blankvalues diurutkan antara nol and negatif values. Perilaku untuk string blankvalues diurutkan sebelum string all, termasuk string kosong.
partitionBy (Opsional) Klausa PARTITIONBY() yang berisi kolom yang define bagaimana relation dipartisi.
If dihilangkan, relation diperlakukan sebagai partisi tunggal.
matchBy (Opsional) Klausa MATCHBY() yang berisi kolom yang define cara mencocokkan data and mengidentifikasi baris saat ini.
reset (Opsional) Hanya tersedia dalam perhitungan visual. Menunjukkan if reset perhitungan, and tingkat hierarki kolom bentuk visual. values yang diterima adalah: NONE, LOWESTPARENT, HIGHESTPARENT, or bilangan bulat. Perilaku tergantung pada signbilangan bulat :
- If nol or dihilangkan, perhitungan not mengatur ulang. Setara dengan NONE.
- If positif, bilangan bulat mengidentifikasi kolom mulai dari biji-bijian tertinggi dan independen. HIGHESTPARENT setara dengan 1.
- If negatif, bilangan bulat mengidentifikasi kolom mulai dari terendah, relatif terhadap butir saat ini. LOWESTPARENT setara dengan -1.

Mengembalikan value

Satu or lebih banyak baris dari relation.

Komentar

Except untuk kolom yang ditambahkan oleh fungsi tabel DAX, setiap kolom di relation, saat matchBynot ada, or setiap kolom di matchByandpartitionBy, saat matchBy ada, harus memiliki value luar yang sesuai untuk membantu define baris saat ini untuk beroperasi, dengan perilaku berikut:

  • If ada tepat satu kolom luar yang sesuai, value digunakan.
  • If tidak ada kolom luar yang sesuai, lalu:
    • OFFSET akan first menentukan kolom all yang tidak memiliki kolom luar yang sesuai.
    • Untuk setiap kombinasi values yang ada untuk kolom ini dalam konteks induk OFFSET, OFFSET dievaluasi and baris dikembalikan.
    • output akhir OFFSETadalah union baris ini.
  • If ada lebih dari satu kolom luar yang sesuai, error dikembalikan.

If all kolom relationditambahkan oleh fungsi tabel DAX, error dikembalikan.

If matchBy ada, OFFSET akan mencoba menggunakan kolom matchByandpartitionBy untuk mengidentifikasi baris.
If matchBy not ada and kolom yang ditentukan dalam orderByandpartitionBy tidak dapat mengidentifikasi setiap baris secara unik di relation, lalu:

  • OFFSET akan mencoba find jumlah kolom tambahan paling sedikit yang diperlukan untuk mengidentifikasi setiap baris secara unik.
  • If kolom tersebut dapat ditemukan, OFFSET akan secara otomatis menambahkan kolom baru ini ke orderBy, and setiap partisi diurutkan menggunakan kumpulan kolom OrderBy baru ini.
  • If kolom tersebut tidak dapat ditemukan, error dikembalikan.

Tabel kosong dikembalikan if:

  • value luar kolom OrderByorPartitionBy yang sesuai not ada dalam relation.
  • delta value menyebabkan pergeseran ke baris yang not ada dalam partisi.

If OFFSET digunakan dalam kolom terhitung yang ditentukan pada tabel yang sama dengan relation, andorderBy dihilangkan, error dikembalikan.

reset hanya dapat digunakan dalam perhitungan visual, and tidak dapat digunakan dalam kombinasi dengan orderByorpartitionBy. If reset ada, axis dapat ditentukan tetapi relation tidak dapat.

Contoh 1 - kolom terhitung

Kueri DAX berikut ini:

DAX
DEFINE
VAR vRelation = SUMMARIZECOLUMNS ( 
                    DimProductCategory[EnglishProductCategoryName], 
                    DimDate[CalendarYear], 
                    "CurrentYearSales", SUM(FactInternetSales[SalesAmount]) 
                  )
EVALUATE
ADDCOLUMNS (
    vRelation, 
    "PreviousYearSales", 
    SELECTCOLUMNS(
        OFFSET ( 
                -1, 
                vRelation, 
                ORDERBY([CalendarYear]), 
                PARTITIONBY([EnglishProductCategoryName])
        ),
        [CurrentYearSales]
    )
)

Mengembalikan tabel yang meringkas total penjualan untuk setiap kategori productandcalendaryear, serta total penjualan untuk kategori tersebut dalam previousyear.

Contoh 2 - measure

Kueri DAX berikut ini:

DAX
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
    DimDate[CalendarYear],
    "CurrentYearSales", DimProduct[CurrentYearSales],
    "PreviousYearSales", DimProduct[PreviousYearSales]
)

Menggunakan OFFSET() dalam measure untuk mengembalikan tabel yang meringkas total penjualan untuk setiap calendaryearand total penjualan untuk previousyear.

Contoh 3 - kolom terhitung

Kueri DAX berikut ini:

DAX
EVALUATE
ADDCOLUMNS (
    FactInternetSales,
    "Previous Sales Amount",
        SELECTCOLUMNS (
            OFFSET (
                -1,
                FactInternetSales,
                ORDERBY ( FactInternetSales[SalesAmount], DESC ),
                PARTITIONBY ( FactInternetSales[ProductKey] ),
                MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
            ),
            FactInternetSales[SalesAmount]
        )
)

Mengembalikan tabel FactInternetSales dengan menambahkan kolom, yang menunjukkan, untuk setiap penjualan, jumlah penjualan previous, dari productyang sama , dalam urutan menurun dari jumlah penjualan, dengan penjualan saat ini diidentifikasi oleh SalesOrderNumber and SalesOrderLineNumber. Tanpa MATCHBY, kueri akan mengembalikan error karena tidak ada kolom kunci dalam tabel FactInternetSales.

Contoh 4 - perhitungan visual

Kueri DAX penghitungan visual berikut:

DAX
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

Mengembalikan perbedaan total penjualan antara setiap monthandprevious penjualan dalam yearyang sama.

Cuplikan layar di bawah ini memperlihatkan matriks visual and ekspresi perhitungan visual:

DAX perhitungan visual

INDEX
ORDERBY
PARTITIONBY
MATCHBY
WINDOW
RANK
ROWNUMBER