weekstart - kod ve grafik fonksiyonu
Bu fonksiyon, date değerini içeren takvim haftasının ilk gününün (Pazartesi) ilk milisaniyesinin zaman damgasına karşılık gelen bir değer döndürür. Varsayılan çıktı biçimi kodda ayarlanan DateFormat olur.
Söz Dizimi:
WeekStart(date [, period_no[, first_week_day]])
Dönüş verileri türü: dual
weekstart() fonksiyonu tarihin hangi haftanın içinde bulunduğunu belirler. Ardından söz konusu haftanın ilk milisaniyesi için tarih biçiminde bir zaman damgası döndürür. Haftanın ilk günü FirstWeekDay ortam değişkeni tarafından belirlenir. Ancak bu, weekstart() fonksiyonundaki first_week_day bağımsız değişkeni tarafından geçersiz kılınabilir.
Bağımsız Değişken | Açıklama |
---|---|
date | Değerlendirilecek tarih veya zaman damgası. |
period_no | shift bir tamsayı olup, burada 0 değeri date içeren haftayı belirtir. Shift içindeki negatif değerler önceki haftaları; pozitif değerler ise sonraki haftaları gösterir. |
first_week_day |
Haftanın başladığı günü belirtir. Atlandığı takdirde, FirstWeekDay değişkeninin değeri kullanılır. Olabilecek first_week_day değerleri Pazartesi için 0, Salı için 1, Çarşamba için 2, Perşembe için 3, Cuma için 4, Cumartesi için 5 ve Pazar için 6'dır. Sistem değişkeni hakkında daha fazla bilgi için bkz. FirstWeekDay. |
Ne zaman kullanılır?
Genel olarak weekstart() fonksiyonu, kullanıcının hesaplamada haftanın şu ana kadar geçen kısmını kullanmak istemesi durumunda, ifadenin içinde kullanılır. Örneğin, kullanıcı haftanın şu ana kadar geçen süresinde kazanılan toplam ücreti hesaplamak istediğinde kullanılabilir.
Örnek | Sonuç |
---|---|
weekstart('01/12/2013') | 01/07/2013 döndürür. |
weekstart('01/12/2013', -1 ) | 11/31/2012 döndürür. |
weekstart('01/12/2013', 0, 1) | 01/08/2013 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 haftanın başlangıcına ilişkin zaman damgasını döndüren start_of_week alanını hesaplama.
Komut dosyası
SET FirstWeekDay=6;
Transactions:
Load
*,
weekstart(date) as start_of_week,
timestamp(weekstart(date)) as start_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
-
start_of_week
-
start_of_week_timestamp
date | start_of_week | start_of_week_timestamp |
---|---|---|
1/7/2022 | 01/02/2022 | 01/2/2022 00:00:00 |
1/19/2022 | 01/16/2022 | 01/16/2022 00:00:00 |
2/5/2022 | 01/30/2022 | 01/30/2022 00:00:00 |
2/28/2022 | 02/27/2022 | 02/27/2022 00:00:00 |
3/16/2022 | 03/13/2022 | 03/13/2022 00:00:00 |
4/1/2022 | 03/27/2022 | 03/27/2022 00:00:00 |
5/7/2022 | 05/01/2022 | 05/1/2022 00:00:00 |
5/16/2022 | 05/15/2022 | 05/15/2022 00:00:00 |
6/15/2022 | 06/12/2022 | 06/12/2022 00:00:00 |
6/26/2022 | 06/26/2022 | 06/26/2022 00:00:00 |
7/9/2022 | 07/03/2022 | 07/3/2022 00:00:00 |
7/22/2022 | 07/17/2022 | 07/17/2022 00:00:00 |
7/23/2022 | 07/17/2022 | 07/17/2022 00:00:00 |
7/27/2022 | 07/24/2022 | 07/24/2022 00:00:00 |
8/2/2022 | 07/31/2022 | 07/31/2022 00:00:00 |
8/8/2022 | 08/07/2022 | 08/7/2022 00:00:00 |
8/19/2022 | 08/14/2022 | 08/14/2022 00:00:00 |
9/26/2022 | 09/25/2022 | 09/25/2022 00:00:00 |
10/14/2022 | 10/09/2022 | 10/9/2022 00:00:00 |
10/29/2022 | 10/23/2022 | 10/23/2022 00:00:00 |
start_of_week alanı, önceki LOAD deyiminde weekstart() fonksiyonu kullanılarak ve tarih alanı fonksiyonun bağımsız değişkeni olarak geçilerek oluşturulur.
weekstart() fonksiyonu, başlangıçta tarih değerinin hangi haftanın içinde bulunduğunu belirler ve o haftanın ilk milisaniyesi için bir zaman damgası döndürür.
8191 numaralı işlem 5 Şubat'ta gerçekleşmiştir. FirstWeekDay sistem değişkeni haftanın ilk günü olarak Pazar gününü ayarlar. weekstart() fonksiyonu 5 Şubat'tan önceki ilk Pazar'ın (dolayısıyla haftanın başlangıcının) 30 Ocak olduğunu belirler. Bu nedenle söz konusu işlemin start_of_week değeri, o günün 30 Ocak saat 00:00:00 olan ilk milisaniyesini döndürür.
Ö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.
-
İşlemin gerçekleştiği çeyrekten önceki çeyreğin başlangıcına ilişkin zaman damgasını döndüren previous_week_start alanını oluşturma.
Komut dosyası
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekstart(date,-1) as previous_week_start,
timestamp(weekstart(date,-1)) as previous_week_start_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_week_start
-
previous_week_start_timestamp
tarih | previous_week_start | previous_week_start_timestamp |
---|---|---|
1/7/2022 | 12/26/2021 | 12/26/2021 00:00:00 |
1/19/2022 | 01/09/2022 | 01/9/2022 00:00:00 |
2/5/2022 | 01/23/2022 | 01/23/2022 00:00:00 |
2/28/2022 | 02/20/2022 | 02/20/2022 00:00:00 |
3/16/2022 | 03/06/2022 | 03/6/2022 00:00:00 |
4/1/2022 | 03/20/2022 | 03/20/2022 00:00:00 |
5/7/2022 | 04/24/2022 | 04/24/2022 00:00:00 |
5/16/2022 | 05/08/2022 | 05/8/2022 00:00:00 |
6/15/2022 | 06/05/2022 | 06/5/2022 00:00:00 |
6/26/2022 | 06/19/2022 | 06/19/2022 00:00:00 |
7/9/2022 | 06/26/2022 | 06/26/2022 00:00:00 |
7/22/2022 | 07/10/2022 | 07/10/2022 00:00:00 |
7/23/2022 | 07/10/2022 | 07/10/2022 00:00:00 |
7/27/2022 | 07/17/2022 | 07/17/2022 00:00:00 |
8/2/2022 | 07/24/2022 | 07/24/2022 00:00:00 |
8/8/2022 | 07/31/2022 | 07/31/2022 00:00:00 |
8/19/2022 | 08/07/2022 | 08/7/2022 00:00:00 |
9/26/2022 | 09/18/2022 | 09/18/2022 00:00:00 |
10/14/2022 | 10/02/2022 | 10/2/2022 00:00:00 |
10/29/2022 | 10/16/2022 | 10/16/2022 00:00:00 |
Bu örnekte, weekstart() 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 haftayı belirler. Sonra bir önceki haftaya bakar ve o haftanın ilk milisaniyesini belirler.
8196 numaralı işlem 15 Haziran'da gerçekleşmiştir. weekstart() fonksiyonu haftanın 12 Haziran'da başladığını belirler. Bu nedenle önceki hafta 5 Haziran saat 00:00:00'da başlamıştır; bu, previous_week_start 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. Öte yandan bu örnekte, çalışma haftasının ilk gününü Salı olarak ayarlamamız gerekmektedir.
Komut dosyası
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekstart(date,0,1) as start_of_week,
timestamp(weekstart(date,0,1)) as start_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
-
start_of_week
-
start_of_week_timestamp
date | start_of_week | start_of_week_timestamp |
---|---|---|
1/7/2022 | 01/04/2022 | 01/4/2022 00:00:00 |
1/19/2022 | 01/18/2022 | 01/18/2022 00:00:00 |
2/5/2022 | 02/01/2022 | 02/1/2022 00:00:00 |
2/28/2022 | 02/22/2022 | 02/22/2022 00:00:00 |
3/16/2022 | 03/15/2022 | 03/15/2022 00:00:00 |
4/1/2022 | 03/29/2022 | 03/29/2022 00:00:00 |
5/7/2022 | 05/03/2022 | 05/3/2022 00:00:00 |
5/16/2022 | 05/10/2022 | 05/10/2022 00:00:00 |
6/15/2022 | 06/14/2022 | 06/14/2022 00:00:00 |
6/26/2022 | 06/21/2022 | 06/21/2022 00:00:00 |
7/9/2022 | 07/05/2022 | 07/5/2022 00:00:00 |
7/22/2022 | 07/19/2022 | 07/19/2022 00:00:00 |
7/23/2022 | 07/19/2022 | 07/19/2022 00:00:00 |
7/27/2022 | 07/26/2022 | 07/26/2022 00:00:00 |
8/2/2022 | 08/02/2022 | 08/2/2022 00:00:00 |
8/8/2022 | 08/02/2022 | 08/2/2022 00:00:00 |
8/19/2022 | 08/16/2022 | 08/16/2022 00:00:00 |
9/26/2022 | 09/20/2022 | 09/20/2022 00:00:00 |
10/14/2022 | 10/11/2022 | 10/11/2022 00:00:00 |
10/29/2022 | 10/25/2022 | 10/25/2022 00:00:00 |
Bu örnekte, weekstart() fonksiyonunda first_week_date bağımsız değişkeni için 1 kullanıldığından haftanın ilk günü Salı olarak ayarlanır.
8191 numaralı işlem 5 Şubat'ta gerçekleşmiştir. weekstart() fonksiyonu bu tarihten önceki ilk Salı'nın (dolayısıyla haftanın başlangıcının ve döndürülen değerin) 1 Şubat saat 00:00:00 olduğunu belirler.
Ö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. İşlemin yapıldığı haftanın başlangıcı için 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.
İşlemin gerçekleştirildiği haftanın başlangıcını hesaplamak için aşağıdaki hesaplamaları ekleyin:
-
=weekstart(date)
-
=timestamp(weekstart(date))
date | start_of_week | start_of_week_timestamp |
---|---|---|
1/7/2022 | 01/02/2022 | 01/2/2022 00:00:00 |
1/19/2022 | 01/16/2022 | 01/16/2022 00:00:00 |
2/5/2022 | 01/30/2022 | 01/30/2022 00:00:00 |
2/28/2022 | 02/27/2022 | 02/27/2022 00:00:00 |
3/16/2022 | 03/13/2022 | 03/13/2022 00:00:00 |
4/1/2022 | 03/27/2022 | 03/27/2022 00:00:00 |
5/7/2022 | 05/01/2022 | 05/1/2022 00:00:00 |
5/16/2022 | 05/15/2022 | 05/15/2022 00:00:00 |
6/15/2022 | 06/12/2022 | 06/12/2022 00:00:00 |
6/26/2022 | 06/26/2022 | 06/26/2022 00:00:00 |
7/9/2022 | 07/03/2022 | 07/3/2022 00:00:00 |
7/22/2022 | 07/17/2022 | 07/17/2022 00:00:00 |
7/23/2022 | 07/17/2022 | 07/17/2022 00:00:00 |
7/27/2022 | 07/24/2022 | 07/24/2022 00:00:00 |
8/2/2022 | 07/31/2022 | 07/31/2022 00:00:00 |
8/8/2022 | 08/07/2022 | 08/7/2022 00:00:00 |
8/19/2022 | 08/14/2022 | 08/14/2022 00:00:00 |
9/26/2022 | 09/25/2022 | 09/25/2022 00:00:00 |
10/14/2022 | 10/09/2022 | 10/9/2022 00:00:00 |
10/29/2022 | 10/23/2022 | 10/23/2022 00:00:00 |
start_of_week hesaplaması, grafik nesnesinde weekstart() fonksiyonu kullanılarak ve date alanı fonksiyonun bağımsız değişkeni olarak geçilerek oluşturulur.
weekstart() fonksiyonu, başlangıçta tarih değerinin hangi haftanın içinde bulunduğunu belirler ve o haftanın ilk milisaniyesi için bir zaman damgası döndürür.
8191 numaralı işlem 5 Şubat'ta gerçekleşmiştir. FirstWeekDay sistem değişkeni haftanın ilk günü olarak Pazar gününü ayarlar. weekstart() fonksiyonu 5 Şubat'tan önceki ilk Pazar'ın (dolayısıyla haftanın başlangıcının) 30 Ocak olduğunu belirler. Bu nedenle, söz konusu işlemin start_of_week değeri o günün 30 Ocak saat 00:00:00 olan ilk milisaniyesini döndürür.
Ö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:
-
Payroll adlı tabloya yüklenen bir veri kümesi.
-
Çalışan kimlikleri, çalışan adları ve her çalışanın kazandığı günlük ücretten oluşan veriler.
Çalışanlar Pazartesi günü çalışmaya başlar ve haftada altı gün çalışır. FirstWeekDay sistem değişkeni değiştirilmemelidir.
Son kullanıcı, çalışan kimliği ve çalışan adına göre haftanın başından şu ana kadar geçen sürede kazanılan ücretleri görüntüleyen bir grafik nesnesi istemektedir.
Komut dosyası
Payroll:
Load
*
Inline
[
employee_id,employee_name,day_rate
182,Mark, $150
183,Deryck, $125
184,Dexter, $125
185,Sydney,$270
186,Agatha,$128
];
Sonuçlar
Aşağıdakileri yapın:
-
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
-
employee_id
-
employee_name
-
-
Sonra, hafta içinde şu ana kadar kazanılan ücretleri hesaplamak için bir hesaplama oluşturun:
=if(today(1)-weekstart(today(1),0,0)<7,(today(1)-weekstart(today(1),0,0))*day_rate,day_rate*6)
-
Hesaplamanın Sayı Biçimini Para olarak ayarlayın.
employee_id | employee_name | =if(today(1)-weekstart(today(1),0,0)<7,(today(1)-weekstart(today(1),0,0))*day_rate,day_rate*6) |
---|---|---|
182 | Mark | $600.00 |
183 | Deryck | $500.00 |
184 | Dexter | $500.00 |
185 | Sydney | $1080.00 |
186 | Agatha | $512.00 |
weekstart() fonksiyonu, ilk bağımsız değişkeni olarak bugünün tarihini ve üçüncü bağımsız değişkeni olarak da 0 kullanarak, haftanın ilk gününü Pazartesi olarak ayarlar ve geçerli haftanın başlangıç tarihini döndürür. İfade, bu sonucu geçerli tarihten çıkararak bu hafta içinde şimdiye kadar geçen gün sayısını döndürür.
Ardından koşul, bu hafta altı günden fazla geçip geçmediğini değerlendirir. Öyleyse, çalışanın day_rate değeri 6 günle çarpılır. Aksi takdirde, day_rate değeri bu hafta içinde şimdiye kadar geçen gün sayısıyla çarpılır.