Określa dzień początku tygodnia. Jeśli ten argument zostanie pominięty, wówczas zostanie użyta wartość zmiennej FirstWeekDay.
Możliwe wartości first_week_day to poniedziałek — 0, wtorek — 1, środa — 2, czwartek — 3, piątek — 4, sobota — 5 oraz niedziela — 6.
Aby uzyskać więcej informacji o zmiennej systemowej, zobacz FirstWeekDay.
broken_weeks
Jeśli wartość broken_weeks nie zostanie określona, wówczas wartość zmiennej BrokenWeeks zostanie zastosowana w celu zdefiniowania, czy tygodnie są dzielone, czy nie.
Aby uzyskać więcej informacji o tej zmiennej systemowej, zobacz BrokenWeeks
reference_day
Jeśli wartość reference_day nie zostanie określona, wówczas w celu zdefiniowania dnia w styczniu, który zostanie ustawiony jako dzień odniesienia do zdefiniowania tygodnia 1, zostanie użyta wartość zmiennej ReferenceDay. Domyślnie w funkcjach programu Qlik Sense za dzień odniesienia uznaje się 4. Oznacza to, że pierwszy tydzień musi zawierać datę 4 stycznia lub, ujmując rzecz inaczej, pierwszy tydzień musi zawsze zawierać co najmniej 4 dni w styczniu.
Aby uzyskać więcej informacji o tej zmiennej systemowej, zobacz ReferenceDay
Funkcja week() określa, w którym tygodniu przypada data, i zwraca numer tygodnia.
W Qlik Sense ustawienia regionalne są pobierane podczas tworzenia aplikacji, a odpowiednie ustawienia są przechowywane w skrypcie jako zmienne środowiskowe. Służą one do określenia numeru tygodnia.
Oznacza to, że większość europejskich twórców aplikacji ma następujące zmienne środowiskowe, zgodne z definicją ISO 8601:
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; // Use unbroken weeks
Set ReferenceDay =4; // Jan 4th is always in week 1
Deweloper aplikacji z Ameryki Północnej często ma następujące zmienne środowiskowe:
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; // Use broken weeks
Set ReferenceDay =1; // Jan 1st is always in week 1
Pierwszy dzień tygodnia jest określany przez zmienną systemową FirstWeekDay. Możesz również zmienić pierwszy dzień tygodnia, używając argumentu first_week_day w funkcji week().
Jeżeli aplikacja używa podzielonych tygodni, numerowanie tygodni zaczyna się 1 stycznia i kończy w dniu poprzedzającym zmienną systemową FirstWeekDay, niezależnie od liczby dni.
Jeśli Twoja aplikacja korzysta z niepodzielonych tygodni, tydzień 1 może rozpocząć się w poprzednim roku lub w pierwszych dniach stycznia. Zależy to od sposobu używania zmiennych systemowych FirstWeekDay i ReferenceDay.
Kiedy używać
Funkcja The week() jest przydatna, gdy chcesz porównać agregacje według tygodni. Można jej na przykład użyć, aby wyświetlić całkowitą sprzedaż produktów w ujęciu tygodniowym. Funkcja week() jest wybierana zamiast funkcji weekname(), gdy użytkownik nie chce, aby w obliczeniach były wykorzystywane zmienne systemowe aplikacji BrokenWeeks, FirstWeekDay lub ReferenceDay.
Na przykład, jeśli chcesz zobaczyć całkowitą sprzedaż produktów w tygodniu.
Jeśli aplikacja używa niepodzielonych tygodni, tydzień 1 może zawierać daty z grudnia poprzedniego roku lub wykluczać daty ze stycznia bieżącego roku. Jeśli aplikacja używa podzielonych tygodni, tydzień 1 może zawierać mniej niż siedem dni.
Ustawienia regionalne
Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/RRRR. Format daty jest określony w instrukcji SET DateFormat w skrypcie ładowania danych. Domyślny format daty w Twoim systemie może być inny ze względu na ustawienia regionalne i inne czynniki. Formaty zastosowane w przykładach można zmienić, aby dostosować je do własnych wymagań. Zamiast tego można też zmienić formaty w skrypcie ładowania, aby pasowały do tych przykładów.
Domyślne ustawienia regionalne w aplikacjach są oparte na regionalnych ustawieniach systemu komputera lub serwera, na którym zainstalowano Qlik Sense. Jeśli serwer Qlik Sense, do którego uzyskujesz dostęp, jest ustawiony na Szwecję, Edytor ładowania danych użyje szwedzkich ustawień regionalnych dla dat, godziny i waluty. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Sense. Interfejs Qlik Sense będzie wyświetlany w tym samym języku co używana przeglądarka.
W poniższych przykładach zakłada się
Set DateFormat= 'MM/DD/YYYY';
Set FirstWeekDay=0;
Set BrokenWeeks=0;
Set ReferenceDay=4;
Przykłady funkcji
Przykład
Wynik
week('12/28/2021')
Zwraca 52.
week(44614)
Zwraca 8, ponieważ jest to numer seryjny dla 02/22/2022.
week('01/03/2021')
Zwraca 53.
week('01/03/2021',6)
Zwraca wartość 1.
Przykład 1 – Domyślne zmienne systemowe
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych zawierający zestaw transakcji za ostatni tydzień 2021 r., który jest ładowany do tabeli o nazwie Transactions.
Pole danych w formacie zmiennej systemowej DateFormat (MM/DD/YYYY).
Utworzenie pola, week_number, które zwraca rok i numer tygodnia, w którym zawarto transakcję.
Utworzenie pola o nazwie week_day, pokazującego wartość dnia tygodnia każdej daty transakcji.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
week_day
week_number
Tabela wynikowa
id
date
week_day
week_number
8183
12/27/2021
Pon
53
8184
12/28/2021
Wto
53
8185
12/29/2021
Śro
53
8186
12/30/2021
Thu
53
8187
12/31/2021
Fri
53
8188
01/01/2022
Sat
1
8189
01/02/2022
Nie
2
8190
01/03/2022
Pon
2
8191
01/04/2022
Wto
2
8192
01/05/2022
Śro
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Nie
3
8197
01/10/2022
Pon
3
8198
01/11/2022
Wto
3
8199
01/12/2022
Śro
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Pole week_number jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji week() i przekazanie pola date jako argumentu funkcji.
Do funkcji nie są przekazywane żadne inne parametry, w związku z czym obowiązują następujące domyślne zmienne wpływające na funkcję week():
BrokenWeeks: Numerowanie tygodni zaczyna się od 1 stycznia
FirstWeekDay: Pierwszy dzień tygodnia to niedziela
Ponieważ aplikacja używa domyślnej zmiennej systemowej BrokenWeeks, tydzień pierwszy zaczyna się 1 stycznia, czyli w sobotę.
Ze względu na domyślną zmienną systemową FirstWeekDay tygodnie zaczynają się w niedzielę. Pierwsza niedziela po 1 stycznia przypada 2 stycznia, więc tego dnia zaczyna się tydzień drugi.
Przykład 2 — first_week_day
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Utworzenie pola, week_number, które zwraca rok i numer tygodnia, w którym zawarto transakcję.
Utworzenie pola o nazwie week_day, pokazującego wartość dnia tygodnia każdej daty transakcji.
W tym przykładzie chcemy ustawić początek tygodnia roboczego na wtorek.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
week_day
week_number
Tabela wynikowa
id
date
week_day
week_number
8183
12/27/2021
Pon
52
8184
12/28/2021
Wto
53
8185
12/29/2021
Śro
53
8186
12/30/2021
Thu
53
8187
12/31/2021
Fri
53
8188
01/01/2022
Sat
1
8189
01/02/2022
Nie
1
8190
01/03/2022
Pon
1
8191
01/04/2022
Wto
2
8192
01/05/2022
Śro
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Nie
2
8197
01/10/2022
Pon
2
8198
01/11/2022
Wto
3
8199
01/12/2022
Śro
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Aplikacja nadal używa podzielonych tygodni. Jednak argument first_week_day w funkcji week() został ustawiony na 1. To ustawia wtorek jako pierwszy dzień tygodnia.
Aplikacja używa domyślnej zmiennej systemowej BrokenWeeks, więc tydzień pierwszy zaczyna się 1 stycznia, czyli w sobotę.
Argument first_week_day funkcji week() ustawia pierwszy dzień tygodnia na wtorek. W efekcie tydzień 53 zaczyna się 28 grudnia 2021 r.
Ponieważ jednak funkcja nadal używa dzielonych tygodni, tydzień pierwszy będzie miał tylko dwa dni, ponieważ pierwszy wtorek po 1 stycznia wypada 3 stycznia.
Przykład 3 – unbroken_weeks
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera ten sam zestaw danych i scenariusz co w pierwszym przykładzie.
W tym przykładzie używamy niepodzielonych tygodni.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,6,0) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
week_day
week_number
Tabela wynikowa
id
date
week_day
week_number
8183
12/27/2021
Pon
52
8184
12/28/2021
Wto
52
8185
12/29/2021
Śro
52
8186
12/30/2021
Thu
52
8187
12/31/2021
Fri
52
8188
01/01/2022
Sat
52
8189
01/02/2022
Nie
1
8190
01/03/2022
Pon
1
8191
01/04/2022
Wto
1
8192
01/05/2022
Śro
1
8193
01/06/2022
Thu
1
8194
01/07/2022
Fri
1
8195
01/08/2022
Sat
1
8196
01/09/2022
Nie
2
8197
01/10/2022
Pon
2
8198
01/11/2022
Wto
2
8199
01/12/2022
Śro
2
8200
01/13/2022
Thu
2
8201
01/14/2022
Fri
2
Parametr first_week_date jest ustawiony na 1, co czyni wtorek pierwszym dniem tygodnia. Parametr broken_weeks jest ustawiony na 0, co zmusza funkcję do używania niedzielonych tygodni. Trzeci parametr ustawia argument reference_day na 2.
Parametr first_week_date jest ustawiony na 6, co czyni niedzielę pierwszym dniem tygodnia. Parametr broken_weeks jest ustawiony na 0, co zmusza funkcję do używania niepodzielonych tygodni.
Dzięki użyciu niedzielonych tygodni pierwszy tydzień nie musi zaczynać się 1 stycznia. Zamiast tego musi mieć przynajmniej pięć dni. W związku z tym, w zestawie danych, tydzień 52 kończy się w sobotę 1 stycznia 2022 r. Zatem pierwszy tydzień zaczyna się w dniu wskazywanym przez zmienną systemową FirstWeekDay, który jest niedzielą 2 stycznia. Ten tydzień kończy się w następną sobotę 8 stycznia.
Przykład 4 – reference_day
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Ten sam zestaw danych i scenariusz co w trzecim przykładzie.
Utworzenie pola, week_number, które zwraca rok i numer tygodnia, w którym zawarto transakcję.
Utworzenie pola o nazwie week_day, pokazującego wartość dnia tygodnia każdej daty transakcji.
Ponadto muszą być spełnione następujące warunki:
Tydzień roboczy zaczyna się we wtorek.
Firma używa niepodzielonych tygodni.
Wartość reference_day wynosi 2. Innymi słowy, minimalna liczba dni w styczniu w tygodniu pierwszym wynosi 2.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1,0,2) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
week_day
week_number
Tabela wynikowa
id
date
week_day
week_number
8183
12/27/2021
Pon
52
8184
12/28/2021
Wto
1
8185
12/29/2021
Śro
1
8186
12/30/2021
Thu
1
8187
12/31/2021
Fri
1
8188
01/01/2022
Sat
1
8189
01/02/2022
Nie
1
8190
01/03/2022
Pon
1
8191
01/04/2022
Wto
2
8192
01/05/2022
Śro
2
8193
01/06/2022
Thu
2
8194
01/07/2022
Fri
2
8195
01/08/2022
Sat
2
8196
01/09/2022
Nie
2
8197
01/10/2022
Pon
2
8198
01/11/2022
Wto
3
8199
01/12/2022
Śro
3
8200
01/13/2022
Thu
3
8201
01/14/2022
Fri
3
Parametr first_week_date jest ustawiony na 1, co czyni wtorek pierwszym dniem tygodnia. Parametr broken_weeks jest ustawiony na 0, co zmusza funkcję do używania niepodzielonych tygodni. Trzeci parametr ustawia parametr reference_day na 2.
W przypadku tej funkcji używającej niedzielonych tygodni i argumentu reference_day o wartości 2, pierwszy tydzień w styczniu musi mieć tylko dwa dni. Ponieważ pierwszy dzień tygodnia to wtorek, pierwszy tydzień zaczyna się 28 grudnia 2021 r. i kończy się w poniedziałek, 3 stycznia 2022 r.
Przykład 5 – Przykład z użyciem obiektu wykresu
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera ten sam zestaw danych i scenariusz co w pierwszym przykładzie.
Jednak w tym przykładzie do aplikacji został załadowany niezmieniony zbiór danych. Obliczenia zwracające numer tygodnia zostały utworzone jako miara w obiekcie wykresu.
Utwórz miarę , week_day, aby pokazać wartość dnia tygodnia każdej daty transakcji:
=weekday(date)
Tabela wynikowa
id
date
=week(date)
=weekday(date)
8183
12/27/2021
53
Pon
8184
12/28/2021
53
Wto
8185
12/29/2021
53
Śro
8186
12/30/2021
53
Thu
8187
12/31/2021
53
Fri
8188
01/01/2022
1
Sat
8189
01/02/2022
2
Nie
8190
01/03/2022
2
Pon
8191
01/04/2022
2
Wto
8192
01/05/2022
2
Śro
8193
01/06/2022
2
Thu
8194
01/07/2022
2
Fri
8195
01/08/2022
2
Sat
8196
01/09/2022
3
Nie
8197
01/10/2022
3
Pon
8198
01/11/2022
3
Wto
8199
01/12/2022
3
Śro
8200
01/13/2022
3
Thu
8201
01/14/2022
3
Fri
Pole week_number jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji week() i przekazanie pola date jako argumentu funkcji.
Do funkcji nie są przekazywane żadne inne parametry, w związku z czym obowiązują następujące domyślne zmienne wpływające na funkcję week():
BrokenWeeks: Numerowanie tygodni zaczyna się od 1 stycznia
FirstWeekDay: Pierwszy dzień tygodnia to niedziela
Ponieważ aplikacja używa domyślnej zmiennej systemowej BrokenWeeks, tydzień pierwszy zaczyna się 1 stycznia, czyli w sobotę.
Ze względu na domyślną zmienną systemową FirstWeekDay tygodnie zaczynają się w niedzielę. Pierwsza niedziela po 1 stycznia przypada 2 stycznia, więc tego dnia zaczyna się tydzień drugi.
Przykład 6 – Scenariusz
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych zawierający zestaw transakcji za ostatni tydzień 2019 r. i pierwsze dwa tygodnie 2020 r., który jest ładowany do tabeli o nazwie Transactions.
Pole danych w formacie zmiennej systemowej DateFormat (MM/DD/YYYY).
Aplikacja używa przede wszystkim podzielonych tygodni na swoim pulpicie. Jednak użytkownik końcowy chciałby otrzymać obiekt wykresu przedstawiający łączną sprzedaż w ujęciu tygodniowym przy użyciu tygodni niedzielonych. Dniem odniesienia powinien być 2 stycznia, przy tygodniach zaczynających się we wtorek. Można to osiągnąć nawet wtedy, gdy ten wymiar nie jest dostępny w modelu danych, używając funkcji week() jako wymiaru obliczanego na wykresie.