Określa dzień początku tygodnia. Jeśli ten argument zostanie pominięty, wówczas zostanie użyta wartość zmiennejFirstWeekDay.
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. Więcej informacji można znaleźć w temacie Modyfikowanie ustawień regionalnych na potrzeby aplikacji i skryptów.
Domyślne ustawienia regionalne w aplikacjach są oparte na profilu użytkownika. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Cloud. Interfejs Qlik Cloud będzie wyświetlany w tym samym języku co używana przeglądarka.
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.