İngilizce dilinde oku

Aracılığıyla paylaş


OFSET

Şunlar için geçerlidir:Hesaplanan sütunHesaplanan tabloÖlçüGörsel hesaplama

Geçerli satırdan önce veya sonra aynı tablo içinde belirli bir uzaklıkta konumlandırılan tek bir satır döndürür. Geçerli satır tek bir satıra çıkarılamıyorsa, birden çok satır döndürülebilir.

Sözdizimi

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

Parametre

Terim Tanım
delta Verilerin alındığı geçerli satırdan önceki (negatif değer) veya sonraki satır sayısı (pozitif değer). Skaler değer döndüren herhangi bir DAX ifadesi olabilir.
relation (İsteğe bağlı) Çıkış satırının döndürüldiği tablo ifadesi.
Belirtilirse, partitionBy içindeki tüm sütunlar bu sütundan veya ilişkili bir tablodan gelmelidir.
Atlanırsa:
- orderBy açıkça belirtilmelidir.
- Tüm orderBy ve partitionBy ifadeleri tam sütun adları olmalı ve tek bir tablodan gelmelidir.
- orderBy ve partitionByiçindeki tüm sütunların ALLSELECTED() varsayılan değeridir.
axis (İsteğe bağlı) Görsel şeklindeki bir eksen. Yalnızca görsel hesaplamalarda kullanılabilir ve relationdeğiştirir.
orderBy (İsteğe bağlı) Her bölümün nasıl sıralanacağını tanımlayan ifadeleri içeren ORDERBY() yan tümcesi.
Atlanırsa:
- relation açıkça belirtilmelidir.
- partitionBy'de önceden belirtilmemiş relation her sütuna göre sıralama varsayılanlarıdır.
blanks (İsteğe bağlı) Sıralama sırasında boş değerlerin nasıl işleneceğini tanımlayan bir numaralandırma.
Bu parametre gelecekte kullanılmak üzere ayrılmıştır.
Şu anda desteklenen tek değer DEFAULT değeridir; burada sayısal değerlerin davranışı boş değerlerdir ve sıfır ile negatif değerler arasında sıralanır. Dizelerin davranışı, boş dizeler de dahil olmak üzere tüm dizelerden önce sıralanmış boş değerlerdir.
partitionBy (İsteğe bağlı) relation nasıl bölümlendiğini tanımlayan sütunları içeren PARTITIONBY() yan tümcesi.
Atlanırsa, relation tek bir bölüm olarak değerlendirilir.
matchBy (İsteğe bağlı) Verileri eşleştirmeyi ve geçerli satırı tanımlamayı tanımlayan sütunları içeren MATCHBY() yan tümcesi.
reset (İsteğe bağlı) Yalnızca görsel hesaplamalarda kullanılabilir. Hesaplamanın sıfırlanıp sıfırlanmadığını ve görsel şeklin sütun hiyerarşisinin hangi düzeyinde olduğunu gösterir. Kabul edilen değerler şunlardır: NONE, LOWESTPARENT, HIGHESTPARENT veya bir tamsayı. Davranış, tamsayı işaretine bağlıdır:
- Sıfır veya atlanırsa, hesaplama sıfırlanmaz. NONE ile eşdeğerdir.
- Pozitifse, tamsayı en yüksekten başlayıp tahıldan bağımsız olarak sütunu tanımlar. HIGHESTPARENT değeri 1'e eşdeğerdir.
- Negatifse, tamsayı geçerli dilime göre en düşükten başlayan sütunu tanımlar. LOWESTPARENT , -1 ile eşdeğerdir.

Dönüş değeri

relationbir veya daha fazla satır.

Açıklamalar

DAX tablo işlevleri tarafından eklenen sütunlar dışında, matchBy olmadığında relationiçindeki her sütun veya matchBy mevcut olduğunda matchBy ve partitionByiçindeki her sütunun, aşağıdaki davranışla çalıştırıldığı geçerli satırı tanımlamaya yardımcı olmak için karşılık gelen bir dış değere sahip olması gerekir:

  • Tam olarak bir dış sütun varsa, değeri kullanılır.
  • Karşılık gelen dış sütun yoksa:
    • KAYDIR, önce karşılık gelen dış sütunu olmayan tüm sütunları belirler.
    • OFFSET'in üst bağlamında bu sütunlar için var olan değerlerin her birleşimi için, KAYDIR değerlendirilir ve bir satır döndürülür.
    • OFFSET'in son çıkışı bu satırların birleşimidir.
  • Karşılık gelen birden fazla dış sütun varsa, bir hata döndürülür.

tüm relationsütunları DAX tablo işlevleri tarafından eklendiyse bir hata döndürülür.

matchBy varsa, OFFSET satırı tanımlamak için matchBy ve partitionBy sütunlarını kullanmayı dener.
matchBy yoksa ve orderBy ve partitionBy içinde belirtilen sütunlar relationiçindeki her satırı benzersiz olarak tanımlayamazsa:

  • OFFSET, her satırı benzersiz olarak tanımlamak için gereken en az sayıda ek sütunu bulmaya çalışır.
  • Bu tür sütunlar bulunabiliyorsa, OFFSET bu yeni sütunları otomatik olarak orderByekler ve her bölüm bu yeni OrderBy sütunları kümesi kullanılarak sıralanır.
  • Bu tür sütunlar bulunamazsa bir hata döndürülür.

Şu durumda boş bir tablo döndürülür:

  • OrderBy veya PartitionBy sütununun karşılık gelen dış değeri relationiçinde yok.
  • delta değeri, bölümün içinde bulunmayan bir satıra kaydırmaya neden olur.

OFFSET, relationile aynı tabloda tanımlanan bir hesaplanmış sütun içinde kullanılırsa ve orderBy atlanırsa bir hata döndürülür.

reset yalnızca görsel hesaplamalarda kullanılabilir ve orderBy veya partitionByile birlikte kullanılamaz. reset varsa, axis belirtilebilir ancak relation belirtilemez.

Örnek 1 - hesaplanmış sütun

Aşağıdaki DAX sorgusu:

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]
    )
)

Her bir ürün kategorisi ve takvim yılı için toplam satışların yanı sıra önceki yıl bu kategoriye ait toplam satışları özetleyen bir tablo döndürür.

Örnek 2 - ölçü

Aşağıdaki DAX sorgusu:

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]
)

Her takvim yılı için toplam satışları ve önceki yılın toplam satışlarını özetleyen bir tablo döndürmek için ölçüde OFFSET() kullanır.

Örnek 3 - hesaplanmış sütun

Aşağıdaki DAX sorgusu:

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

FactInternetSales tablosunu, her satış için önceki satışının tutarını, aynı ürünün satış tutarını azalan sırada gösteren ve geçerli satışın SalesOrderNumber ve SalesOrderLineNumber ile tanımlandığı bir sütun ekleyerek döndürür. MATCHBY olmadan, FactInternetSales tablosunda anahtar sütunları olmadığından sorgu bir hata döndürür.

Örnek 4 - görsel hesaplama

Aşağıdaki görsel hesaplama DAX sorgusu:

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

Aynı yıl içindeki her ay ile önceki ay arasındaki toplam satış farkını döndürür.

Aşağıdaki ekran görüntüsünde görsel matris ve görsel hesaplama ifadesi gösterilmektedir:

DAX görsel hesaplama

INDEX
ORDERBY
PARTITIONBY
MATCHBY

WINDOW
RANK
ROWNUMBER