Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:
Hesaplanan sütun
Hesaplanan tablo
Ölçü
Görsel hesaplama
Not
Bu işlev, anlamsız sonuçlar döndürdüğü için
Tarih sütunu girişi için, belirtilen başlangıç tarihiyle başlayan ve belirtilen tarih aralığı sayısı ve türü için devam eden tarih sütununu içeren bir tablo döndürür.
Takvim girişi için, belirtilen başlangıç tarihiyle başlayan ve belirtilen tarih aralıklarının sayısı ve türü için devam eden bir tablo döndürür. Tablo, tüm birincil etiketli sütunları ve tüm zaman ile ilgili sütunları içerir.
Bu işlev, CALCULATE işlevine filtre olarak geçirmek için uygundur. Bir ifadeyi gün, ay, üç aylık dönem veya yıl gibi standart tarih aralıklarına göre filtrelemek için kullanın.
Sözdizimi
DATESINPERIOD(<dates> or <calendar>, <start_date>, <number_of_intervals>, <interval>[, <endbehavior>])
Parametre
| Terim | Tanım |
|---|---|
dates or calendar |
Tarihler veya takvim başvurusu içeren bir sütun |
start_date |
Tarih ifadesi. Takvim söz dizimi kullanılıyorsa, lütfen Gün kategorisine etiketlenmiş birincil sütunla aynı veri türünü kullanın. |
number_of_intervals |
Tarihlere eklenecek veya çıkaracak aralık sayısını belirten bir tamsayı. |
interval |
Tarihlerin kaydırıldığı aralık. Aralık değeri aşağıdakilerden biri olabilir: DAY, WEEK, MONTH, QUARTERve YEAR. Hafta yalnızca takvimle kullanılabilir. |
endbehavior |
Yalnızca takvim başvurusu sağlandığında geçerlidir. Optional. Hedef aralık kaynak aralıktan uzun olduğunda bitiş tarihinin nasıl hizalı olduğunu denetler. Geçerli değerler şunlardır: DUYARLI (varsayılan) ve ENDALIGNED. |
Dönüş değeri
Tarih sütunu girişi için, tek bir tarih değerleri sütunu içeren bir tablo.
Takvim girişi için, tüm birincil etiketli sütunları ve tüm zaman ile ilgili sütunları içeren bir tablo.
Açıklamalar
En yaygın kullanım örneğinde,
datesişaretli bir tarih tablosunun tarih sütununa başvurudur.number_of_intervalsiçin belirtilen sayı pozitifse tarihler zamanda ileri taşınır; sayı negatifse tarihler zamanda geriye kaydırılır.intervalparametresi bir numaralandırmadır. Geçerli değerler :DAY,WEEK,MONTH,QUARTERveYEAR. Bu bir numaralandırma olduğundan, değerler dize olarak geçirilmiyor. Bu nedenle bunları tırnak içine alma.Sağlandığında
endbehavior(yalnızca takvim akıllı zaman gösterimi), DATESINPERIOD değeri parametresine DATEADDExtensioniletir. Ayrıntılı örnekler için bkz. Endbehavior'ı anlama .Tarih sütunu girişi için, döndürülen tablo yalnızca sütunda
datesdepolanan tarihleri içerebilir. Örneğin,datessütunu 1 Temmuz 2017'den başlıyorsa vestart_datedeğeri 1 Temmuz 2016 ise, döndürülen tablo 1 Temmuz 2017'den itibaren başlar.Takvim girişi için, giriş tarihi etiketli gün sütununda bulunmazsa sonuç tanımlanmamış olur. Lütfen geçerli tarih girişi sağlayın.
Takvim girişi için, başlangıç tarihi için etiketli gün sütunuyla aynı veri türünü ve biçimini kullanın. Örneğin, sütun YYYY-Sn-Qn-Mnn-Wnn-Dnn (örneğin, "2014-S2-Q4-M11-W45-D03") biçimini kullanıyorsa, başlangıç tarihi aynı biçimde olmalıdır (örneğin, "2015-S2-Q4-M11-W45-D03"). Aksi takdirde, davranış tanımlanmamıştır.
-
Bu işlev, hesaplanan sütunlarda veya satır düzeyi güvenlik (RLS) kurallarında kullanıldığında DirectQuery modunda kullanılmak üzere desteklenmez.
Örnek
Aşağıdaki Sales tablo ölçüsü tanımı, önceki yılın (PY) gelirini hesaplamak için DATESINPERIOD işlevini kullanır.
Formülde MAX işlevinin kullanıldığına dikkat edin. Bu işlev, filtre bağlamındaki en son tarihi döndürür. Bu nedenle, DATESINPERIOD işlevi son yılın en son tarihinden başlayarak bir tarih tablosu döndürür.
Bu makaledeki örnekler örnek Adventure Works DW 2020 Power BI Desktop modeliyle kullanılabilir. Modeli almak için bkz.örnek modeli
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR )
)
Raporun Haziran 2020 ayına göre filtrelendiğini düşünün. MAX işlevi 30 Haziran 2020'yi döndürür. DATESINPERIOD işlevi daha sonra 1 Temmuz 2019 ile 30 Haziran 2020 arasında bir tarih aralığı döndürür. Bu, geçen yıl için 30 Haziran 2020'den itibaren başlayan bir tarih yılıdır.
Takvim tabanlı akıllı zaman gösterimi örneği
Aşağıdaki Sales tablo ölçüsü tanımı, önceki yılın (PY) gelirini hesaplamak için DATESINPERIOD işlevini kullanır.
Formülde MAX işlevinin kullanıldığına dikkat edin. Bu işlev, filtre bağlamındaki en son tarihi döndürür. Bu nedenle işlev, DATESINPERIOD son yılın en son tarihinden başlayarak birincil sütunları döndürür. DateKey, "Gün" kategorisinin tarih türünde olmayan bir sütunla etiketlenebilir olduğunu göstermek için örnek olarak kullanılır.
Bu makaledeki örnekler örnek Adventure Works DW 2020 Power BI Desktop modeliyle kullanılabilir. Modeli almak için bkz.örnek modeli
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( FiscalCalendar, MAX ( 'Date'[DateKey] ), -1, YEAR )
)
Raporun Haziran 2020 ayına göre filtrelendiğini düşünün. MAX işlevi 30 Haziran 2020'yi döndürür. İşlev DATESINPERIOD daha sonra 1 Temmuz 2019 ile 30 Haziran 2020 arasında bir aralık döndürür. Geçen yıl için 30 Haziran 2020'den itibaren bir yıl başlar.
Takvim akıllı zaman gösterimi için endbehavior parametresini anlama
dahili olarak, DATESINPERIOD aynı aralıkla, aralık sayısıyla ve DATEADD içine endbehaviorgeçirilen çağrıyı DATESINPERIOD yaparak bitiş sınırını hesaplar. Negatif olduğunda number_of_intervals (bir pencereyi geriye doğru kaydırırken yaygın olarak görülür), işlevi aralığını (endDate, startDate]döndürür; burada endDate kullanılarak DATEADDsona erecek startDate<number_of_intervals><interval> takvim bağlamını kaydırdıktan sonra tarafından <endbehavior> döndürülen tarihtir. Pozitif değerler için döndürülen aralık şeklindedir [startDate, endDate).
-
PRECISEtarafından DATEADDdöndürülen tam değeri tutar. -
ENDALIGNEDDATEADDEndAlignedsemantiği izler ve sınırı kaynak seçimi kendi sonuna ulaştığında hedef dönemin sonuna taşır. Filtre bağlamı bir dönemin son gününde zaten sona erdiğinde ve geriye dönük bir pencerenin (örneğin altı ay) kaydırılan dönemin son gününü sınır olarak kullanmasını istediğinizde bu yararlı olur.
EndAligned ile örnek
EndAlignedTest =
CALCULATE (
COUNTROWS ( SUMMARIZE ( Sales, 'Date'[MonthName] ) ),
DATESINPERIOD ( 'Gregorian Calendar', MAX ( 'Date'[Date] ), -6, MONTH, EndAligned )
)
Bu ölçü, geçerli bağlama göre son altı aydaki ayrı ay adlarını sayar. ileEndAligned, bağlam zaten bir ay sınırında sona erdiğinde pencere, kaydırılan ayın sonunda sınırı korur ve içerebilecek ek sondaki tarihleri Precise engeller (örneğin, Feb 28 başka bir şekilde içine doğru Aug 28 kaydırılır ve yayılma alanını yedi aya Aug 29–31kadar etkili bir şekilde genişletir). Ayar, EndAligned bu senaryoda sayıyı altıda tutar.
Aşağıdaki karşılaştırmada geçerli filtre bağlamı 28 Şubat 2023'te sona erer ve ifadesi çağrılır DATESINPERIOD(..., -6, MONTH, <endbehavior>). İşlev aralığı olur, (endDate, startDate]bu nedenle endDate tarafından DATEADD döndürülen değeri dahil edilirken startDate dışlanır.
| endbehavior |
DATEADD Bitiştarihi |
DATESINPERIOD aralık | Ölçü tarafından döndürülen ay adları |
|---|---|---|---|
Precise |
2022-08-28 |
(2022-08-28, 2023-02-28] → 29 Ağustos 2022 – 28 Şubat 2023 |
Ağustos, Eylül, Ekim, Kas, Aralık, Ocak, Şubat (7) |
EndAligned |
2022-08-31 |
(2022-08-31, 2023-02-28] → Eylül 1 2022 – 28 Şubat 2023 |
Eylül, Sekiz, Kas, Aralık, Ocak, Şubat (6) |
Klasik ve takvim akıllı zaman gösterimi arasındaki davranış farklılıkları
Dahili olarak, DATESINPERIOD başlangıç tarihinden bitiş tarihini belirlemek için ile aynı mantığı DATEADD kullanır ve aralığı hesaplar. Bazı senaryolar klasik ve takvim akıllı zaman gösterimini karşılaştırırken farklı sonuçlar verebilir. Örneğin, bir ay yılında, DATEADD tarih ayrıntı düzeyinde farklı sonuçlar üretir, dolayısıyla sonucu DATESINPERIOD da farklılık gösterir. Takvim tabanlı akıllı zaman gösteriminde, 29 Şubat 2008'in bir yıl geriye kaydırılması, yılın 60. günü olarak ele alındığından 1 Mart 2007'de sonuçlanır. Klasik akıllı zaman gösteriminde aynı vardiya 28 Şubat 2007'yi döndürür. Bitiş tarihi farklı olduğundan çıkışı DATESINPERIOD da farklılık gösterir. Geçici çözüm, bitiş tarihini hesaplamak için (Takvim, -DATEADDyıl< sayısı, ay) kullanmaktır>. Örneğin, bir yılın takvimde 13 ayı varsa kullanın DATEADD(Takvim, -13, ay). Bu yaklaşım aya göre değiştirileceği için 2008 Şubat 2007'ye geçecektir. Ardından, yeni bitiş tarihine göre özel bir datesInPeriod yazın.