lunarweekend - kod ve grafik fonksiyonu
Bu fonksiyon, date değerini içeren ay haftasının son gününün son milisaniyesine karşılık gelen bir zaman damgası değeri döndürür. Qlik Sense için ay haftaları 1 Ocak haftanın ilk günü olarak tanımlanır ve yılın son haftası dışında tam olarak yedi gün içerirler.
Söz Dizimi:
LunarweekEnd(date[, period_no[, first_week_day]])
Dönüş verileri türü: dual
lunarweekend() fonksiyonu date değerinin ay yılında hangi haftaya denk geldiğini belirler. Ardından söz konusu haftanın son milisaniyesi için tarih biçiminde bir zaman damgası döndürür.
Bağımsız Değişken | Açıklama |
---|---|
date | Değerlendirilecek tarih veya zaman damgası. |
period_no | period_no, tamsayıya çözümlenen bir tamsayı veya ifade olup, burada 0 değeri date içeren ay haftasını belirtir. period_no içindeki negatif değerler önceki ay haftalarını; pozitif değerler ise sonraki ay haftalarını gösterir. |
first_week_day | Kaydırma değeri sıfırdan büyük ya da küçük olabilir. Bu değer, belirtilen gün sayısı ve/veya bir günün kesirleri ile yılın başını değiştirir. |
Ne zaman kullanılır?
lunarweekend() fonksiyonu yaygın olarak, kullanıcı hesaplamanın haftanın henüz yaşanmamış kısmını kullanmasını istediğinde bir ifadenin parçası olarak kullanılır. weekend() fonksiyonundan farklı olarak, her takvim yılının son ay yılı haftası 31 Aralık'ta sona erer. Örneğin, hafta boyunca henüz oluşmamış faizi hesaplamak için lunarweekend() fonksiyonu kullanılabilir.
Örnek | Sonuç |
---|---|
lunarweekend('01/12/2013') | 01/14/2013 23:59:59 döndürür. |
lunarweekend('01/12/2013', -1) | 01/07/2013 23:59:59 döndürür. |
lunarweekend('01/12/2013', 0, 1) | 01/15/2013 23:59:59 döndürür. |
Bölgesel ayarlar
Aksi belirtilmedikçe bu konudaki örneklerde aşağıdaki tarih formatı kullanılır: AA/GG/YYYY. Tarih formatı, veri yükleme kodunuzda SET DateFormat deyiminde belirtilir. Varsayılan tarih formatı, bölgesel ayarlarınız ve diğer unsurlar nedeniyle sisteminizde farklı olabilir. Aşağıdaki örneklerdeki formatları ihtiyaçlarınıza uyacak şekilde değiştirebilirsiniz. Dilerseniz yükleme kodunuzdaki formatları aşağıdaki örneklere uyacak şekilde değiştirebilirsiniz.
Uygulamalardaki bölgesel ayarlarda Qlik Sense'in yüklü olduğu bilgisayarın veya sunucunun bölgesel sistem ayarları temel alınır. Eriştiğiniz Qlik Sense sunucusu İsveç olarak ayarlıysa, Veri yükleme düzenleyicisi tarihler, saat ve para birimi için İsveç bölgesel ayarlarını kullanır. Bu bölgesel format ayarları, Qlik Sense kullanıcı arayüzünde görüntülenen dil ayarlarıyla ilgili değildir. Qlik Sense, kullandığınız tarayıcıyla aynı dilde görüntülenir.
Örnek 1 – Ek bağımsız değişken yok
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
-
"Transactions" adlı tabloya yüklenen, 2022'nin işlemlerini içeren bir veri kümesi.
-
Tarih alanı DateFormat sistem değişkeninde (AA/GG/YYYY) biçiminde sağlanmıştır.
-
İşlemlerin gerçekleştiği ay yılı haftasının sonunun zaman damgasını döndüren end_of_week alanını oluşturma.
Komut dosyası
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekend(date) as end_of_week,
timestamp(lunarweekend(date)) as end_of_week_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
date
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
2/28/2022 | 03/04/2022 | 3/4/2022 11:59:59 PM |
3/16/2022 | 03/18/2022 | 3/18/2022 11:59:59 PM |
4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
5/7/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
5/16/2022 | 05/20/2022 | 5/20/2022 11:59:59 PM |
6/15/2022 | 06/17/2022 | 6/17/2022 11:59:59 PM |
6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
7/9/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
7/22/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
7/23/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
7/27/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
8/19/2022 | 08/19/2022 | 8/19/2022 11:59:59 PM |
9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
10/14/2022 | 10/14/2022 | 10/14/2022 11:59:59 PM |
10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |
end_of_week alanı, önceki yükleme deyiminde lunarweekend() fonksiyonu kullanılarak ve date alanı fonksiyona bağımsız değişken olarak geçilerek oluşturulur.
lunarweekend() fonksiyonu tarih değerinin içinde bulunduğu ay yılı haftasını belirler ve söz konusu haftanın son milisaniyesine ilişkin zaman damgasını döndürür.
8189 numaralı İşlem 19 Ocak'ta gerçekleşmiştir. lunarweekend() fonksiyonu ay yılı haftasının 15 Ocak'ta başladığını belirler. Bu nedenle, söz konusu işlemin end_of_week değeri ay yılı haftasının son milisaniyesini döndürür ve bu, 21 Ocak 23:59:59'dur.
Örnek 2 – period_no
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
-
İlk örnek ile aynı veri kümesi ve senaryo.
-
İşlem gerçekleşmeden önceki ay yılı haftasının sonunun zaman damgasını döndüren previous_lunar_week_end alanını oluşturma.
Komut dosyası
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekend(date,-1) as previous_lunar_week_end,
timestamp(lunarweekend(date,-1)) as previous_lunar_week_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
date
-
previous_lunar_week_end
-
previous_lunar_week_end_timestamp
tarih | previous_lunar_week_end | previous_lunar_week_end_timestamp |
---|---|---|
1/7/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
1/19/2022 | 01/14/2022 | 1/14/2022 11:59:59 PM |
2/5/2022 | 02/04/2022 | 2/4/2022 11:59:59 PM |
2/28/2022 | 02/25/2022 | 2/25/2022 11:59:59 PM |
3/16/2022 | 03/11/2022 | 3/18/2022 11:59:59 PM |
4/1/2022 | 03/25/2022 | 3/25/2022 11:59:59 PM |
5/7/2022 | 05/06/2022 | 5/6/2022 11:59:59 PM |
5/16/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
6/15/2022 | 06/10/2022 | 6/10/2022 11:59:59 PM |
6/26/2022 | 06/24/2022 | 6/24/2022 11:59:59 PM |
7/9/2022 | 07/08/2022 | 7/8/2022 11:59:59 PM |
7/22/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
7/23/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
7/27/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
8/2/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
8/8/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
8/19/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
9/26/2022 | 09/23/2022 | 9/23/2022 11:59:59 PM |
10/14/2022 | 10/07/2022 | 10/7/2022 11:59:59 PM |
10/29/2022 | 10/28/2022 | 10/28/2022 11:59:59 PM |
Bu örnekte lunarweekend() fonksiyonunda offset bağımsız değişkeni olarak değeri -1 olan period_no kullanıldığından, fonksiyon önce işlemlerin gerçekleştiği ay yılı haftasını belirler. Ardından bir hafta öncesine kaydırır ve bu ay yılı haftasının son milisaniyesini belirler.
8189 numaralı İşlem 19 Ocak'ta gerçekleşmiştir. lunarweekend() fonksiyonu ay yılı haftasının 15 Ocak'ta başladığını belirler. Bu nedenle, önceki ay yılı haftası 8 Ocak'ta başlamış ve 14 Ocak saat 23:59:59'da bitmiştir; bu, previous_lunar_week_end alanı için döndürülen değerdir.
Örnek 3 – first_week_day
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir sekmeye ekleyin.
Komut dosyası ilk örnek ile aynı veri kümesini ve senaryoyu içerir. Bu örnekte ay yılı haftalarını 5 Ocak'ta başlayacak şekilde ayarladık.
Komut dosyası
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekend(date,0,4) as end_of_week,
timestamp(lunarweekend(date,0,4)) as end_of_week_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
date
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/11/2022 | 1/11/2022 11:59:59 PM |
1/19/2022 | 01/25/2022 | 1/25/2022 11:59:59 PM |
2/5/2022 | 02/08/2022 | 2/8/2022 11:59:59 PM |
2/28/2022 | 03/01/2022 | 3/1/2022 11:59:59 PM |
3/16/2022 | 03/22/2022 | 3/22/2022 11:59:59 PM |
4/1/2022 | 04/05/2022 | 4/5/2022 11:59:59 PM |
5/7/2022 | 05/10/2022 | 5/10/2022 11:59:59 PM |
5/16/2022 | 05/17/2022 | 5/17/2022 11:59:59 PM |
6/15/2022 | 06/21/2022 | 6/21/2022 11:59:59 PM |
6/26/2022 | 06/28/2022 | 6/28/2022 11:59:59 PM |
7/9/2022 | 07/12/2022 | 7/12/2022 11:59:59 PM |
7/22/2022 | 07/26/2022 | 7/26/2022 11:59:59 PM |
7/23/2022 | 07/26/2022 | 7/26/2022 11:59:59 PM |
7/27/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
8/2/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
8/8/2022 | 08/09/2022 | 8/9/2022 11:59:59 PM |
8/19/2022 | 08/23/2022 | 8/23/2022 11:59:59 PM |
9/26/2022 | 09/27/2022 | 9/27/2022 11:59:59 PM |
10/14/2022 | 10/18/2022 | 10/18/2022 11:59:59 PM |
10/29/2022 | 11/01/2022 | 11/1/2022 11:59:59 PM |
Bu örnekte lunarweekend() fonksiyonunda değeri 4 olan first_week_date bağımsız değişkeni kullanıldığından, yılın başlangıcı 1 Ocak'tan 5 Ocak'a kaydırılır.
8189 numaralı İşlem 19 Ocak'ta gerçekleşmiştir. Ay yılı haftaları 5 Ocak'ta başladığından, lunarweekend() fonksiyonu 19 Ocak'ı içeren ay yılı haftasının aynı zamanda 19 Ocak'ta başladığını belirler. Bu nedenle, söz konusu ay yılı haftasının sonu 25 Ocak saat 23:59:59'dur; bu, end_of_week alanı için döndürülen değerdir.
Örnek 4 – Grafik nesnesi örneği
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir sekmeye ekleyin.
Komut dosyası ilk örnek ile aynı veri kümesini ve senaryoyu içerir.
Ancak bu örnekte uygulamaya değiştirilmemiş veri kümesi yüklenmektedir. İşlemlerin gerçekleştiği ay yılı haftası bitişinin zaman damgasını döndüren hesaplama, uygulamanın grafik nesnesinde bir hesaplama olarak oluşturulur.
Komut dosyası
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin: date.
Aşağıdaki hesaplamaları ekleyin:
=lunarweekend(date)
=timestamp(lunarweekend(date))
tarih | =lunarweekend(date) | =timestamp(lunarweekend(date)) |
---|---|---|
1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
2/28/2022 | 03/04/2022 | 3/4/2022 11:59:59 PM |
3/16/2022 | 03/18/2022 | 3/18/2022 11:59:59 PM |
4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
5/7/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
5/16/2022 | 05/20/2022 | 5/20/2022 11:59:59 PM |
6/15/2022 | 06/17/2022 | 6/17/2022 11:59:59 PM |
6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
7/9/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
7/22/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
7/23/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
7/27/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
8/19/2022 | 08/19/2022 | 8/19/2022 11:59:59 PM |
9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
10/14/2022 | 10/14/2022 | 10/14/2022 11:59:59 PM |
10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |
end_of_week hesaplaması, grafik nesnesinde lunarweekend() fonksiyonu kullanılarak ve date alanı fonksiyonun bağımsız değişkeni olarak geçilerek oluşturulur.
lunarweekend() fonksiyonu tarih değerinin içinde bulunduğu ay yılı haftasını belirler ve söz konusu haftanın son milisaniyesine ilişkin zaman damgasını döndürür.
8189 numaralı İşlem 19 Ocak'ta gerçekleşmiştir. lunarweekend() fonksiyonu ay yılı haftasının 15 Ocak'ta başladığını belirler. Bu nedenle, söz konusu işlemin end_of_week değeri ay yılı haftasının son milisaniyesini döndürür ve bu, 21 Ocak 23:59:59'dur.
Örnek 5 – Senaryo
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
-
Employee_Expenses adlı tabloya yüklenen bir veri kümesi.
-
Çalışan kimlikleri, çalışan adı ve her çalışanın günlük ortalama masraf talebi.
Son kullanıcı, çalışan kimliği ve çalışan adına göre ay yılı haftasının kalan kısmında oluşacak tahmini masraf taleplerini görüntüleyen bir grafik nesnesi istemektedir.
Komut dosyası
Employee_Expenses:
Load
*
Inline
[
employee_id,employee_name,avg_daily_claim
182,Mark, $15
183,Deryck, $12.5
184,Dexter, $12.5
185,Sydney,$27
186,Agatha,$18
];
Sonuçlar
Aşağıdakileri yapın:
-
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun.
-
Aşağıdaki alanları boyut olarak ekleyin:
-
employee_id
-
employee_name
-
-
Ardından, biriken faizi hesaplamak için şu hesaplamayı kullanın:
=(lunarweekend(today(1))-today(1))*avg_daily_claim
-
Hesaplamanın Sayı Biçimini Para olarak ayarlayın.
employee_id | employee_name | =(lunarweekend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $75.00 |
183 | Deryck | $62.50 |
184 | Dexter | $62.50 |
185 | Sydney | $135.00 |
186 | Agatha | $90.00 |
lunarkweekend() fonksiyonu bugünün tarihini tek bağımsız değişkeni olarak kullanır ve geçerli ay yılı haftasının bitiş tarihini döndürür. Ardından ifade, bugünün tarihini ay yılı haftası bitiş tarihinden çıkararak bu haftanın kalan gün sayısını döndürür.
Bu değer daha sonra her çalışanın ortalama günlük masraf talebiyle çarpılarak her çalışanın ay yılı haftasının kalan kısmında talep etmesi beklenen tahmini masraf tutarı hesaplanır.