Ta funkcja zwraca wartość pokazującą rok i numer tygodnia z bazową wartością liczbową odpowiadającą znacznikowi czasu pierwszej milisekundy pierwszego dnia tygodnia, który zawiera datę date.
Funkcja weekname() określa, w którym tygodniu przypada data, i zwraca numer tygodnia oraz rok tego tygodnia. Pierwszy dzień tygodnia jest określany przez zmienną systemową FirstWeekDay. Możesz jednak również zmienić pierwszy dzień tygodnia, używając argumentu first_week_day w funkcji weekname().
W Qlik Sense ustawienia regionalne są pobierane podczas tworzenia aplikacji, a odpowiednie ustawienia są przechowywane w skrypcie jako zmienne środowiskowe.
Deweloper aplikacji z Ameryki Północnej często ma Set BrokenWeeks=1; w skrypcie, co odpowiada podzielonym tygodniom. Europejski deweloper aplikacji często ma Set BrokenWeeks=0; w skrypcie, co odpowiada niepodzielonym tygodniom.
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 jednak 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 ReferenceDay i FirstWeekDay.
Przykład funkcji Weekname
Data
Nazwa tygodnia wg ISO
Nazwa tygodnia w USA
Sat 2020 Dec 26
2020/52
2020/52
Sun 2020 Dec 27
2020/52
2020/53
Mon 2020 Dec 28
2020/53
2020/53
Tue 2020 Dec 29
2020/53
2020/53
Wed 2020 Dec 30
2020/53
2020/53
Thu 2020 Dec 31
2020/53
2020/53
Fri 2021 Jan 1
2020/53
2021/01
Sat 2021 Jan 2
2020/53
2021/01
Sun 2021 Jan 3
2020/53
2021/02
Mon 2021 Jan 4
2021/01
2021/02
Tue 2021 Jan 5
2021/01
2021/02
Kiedy używać
Funkcja weekname() jest przydatna, gdy chcesz porównać agregacje według tygodni.
Na przykład, jeśli chcesz zobaczyć całkowitą sprzedaż produktów w tygodniu. Aby zachować spójność ze zmienną środowiskową BrokenWeeks w aplikacji, użyj weekname() zamiast lunarweekname(). 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.
Typ zwracanych danych: dual
Argumenty
Argument
Opis
timestamp
Data lub znacznik czasu do oszacowania.
period_no
shift jest liczbą całkowitą, gdzie 0 oznacza tydzień, który zawiera datę date. Wartości ujemne parametru shift oznaczają poprzednie tygodnie, a wartości dodatnie — tygodnie następne.
first_week_day
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
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 FirstWeekDay=0;
Set BrokenWeeks=0;
Set ReferenceDay=4;
Przykłady funkcji
Przykład
Wynik
weekname('01/12/2013')
Zwraca 2013/02.
weekname('01/12/2013', -1)
Zwraca 2013/01.
weekname('01/12/2013', 0, 1)
Zwraca 2013/02.
Przykład 1 — data bez dodatkowych argumentów
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. jest ładowany do tabeli o nazwie „Transactions”.
Zmienna systemowa DateFormat, która jest ustawiona na format MM/DD/YYYY.
Zmienna systemowa BrokenWeeks, która jest ustawiona na 1.
Zmienna systemowa FirstWeekDay, która jest ustawiona na 6.
Ładowanie poprzedzające, które zawiera następujące elementy:
Funkcja weekday() ustawiona jako pole „week_number”, która zwraca rok i numer tygodnia, w którym miały miejsce transakcje.
Funkcja weekname(), która jest ustawiona jako pole o nazwie „week_day”, aby pokazywać wartość dnia tygodnia dla każdej daty transakcji.
Skrypt ładowania
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day,
Weekname(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
2021/53
8184
12/28/2021
Wto
2021/53
8185
12/29/2021
Śro
2021/53
8186
12/30/2021
Thu
2021/53
8187
12/31/2021
Fri
2021/53
8188
01/01/2022
Sat
2022/01
8189
01/02/2022
Nie
2022/02
8190
01/03/2022
Pon
2022/02
8191
01/04/2022
Wto
2022/02
8192
01/05/2022
Śro
2022/02
8193
01/06/2022
Thu
2022/02
8194
01/07/2022
Fri
2022/02
8195
01/08/2022
Sat
2022/02
8196
01/09/2022
Nie
2022/03
8197
01/10/2022
Pon
2022/03
8198
01/11/2022
Wto
2022/03
8199
01/12/2022
Śro
2022/03
8200
01/13/2022
Thu
2022/03
8201
01/14/2022
Fri
2022/03
Pole „week_number” jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji weekname() i przekazanie pola daty jako jej argumentu.
Funkcja weekname() początkowo identyfikuje tydzień, w którym przypada wartość daty, i zwraca liczbę numerów tygodni oraz rok, w którym ma miejsce transakcja.
Zmienna systemowa FirstWeekDay ustawia niedzielę jako pierwszy dzień tygodnia. Zmienna systemowa BrokenWeeks ustawia aplikację tak, aby używała podzielonych tygodni, co oznacza, że tydzień 1 rozpocznie się 1 stycznia.
Tydzień 1 rozpoczyna się 1 stycznia, czyli w sobotę, dlatego transakcje występujące w tym dniu zwracają wartość 2022/01 (rok i numer tygodnia).
Ponieważ aplikacja używa podzielonych tygodni, a pierwszym dniem tygodnia jest niedziela, transakcje występujące od 2 do 8 stycznia zwracają wartość 2022/02 (tydzień 2 w 2022 r.). Przykładem może być transakcja 8192, która miała miejsce 5 stycznia, i zwraca wartość 2022/02 dla pola „week_number”.
Przykład 2 – period_no
Przegląd
Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie.
Jednak w tym przykładzie zadaniem jest utworzenie pola „previous_week_number”, które zwraca rok i numer tygodnia sprzed transakcji.
Otwórz Edytor ładowania danych i dodaj następujący skrypt ładowania do nowej karty.
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
2021/52
8184
12/28/2021
Wto
2021/52
8185
12/29/2021
Śro
2021/52
8186
12/30/2021
Thu
2021/52
8187
12/31/2021
Fri
2021/52
8188
01/01/2022
Sat
2021/52
8189
01/02/2022
Nie
2021/53
8190
01/03/2022
Pon
2021/53
8191
01/04/2022
Wto
2021/53
8192
01/05/2022
Śro
2021/53
8193
01/06/2022
Thu
2021/53
8194
01/07/2022
Fri
2021/53
8195
01/08/2022
Sat
2022/01
8196
01/09/2022
Nie
2022/02
8197
01/10/2022
Pon
2022/02
8198
01/11/2022
Wto
2022/02
8199
01/12/2022
Śro
2022/02
8200
01/13/2022
Thu
2022/02
8201
01/14/2022
Fri
2022/02
Ponieważ period_no o wartości -1 użyto jako argumentu przesunięcia w funkcji weekname(), funkcja najpierw identyfikuje tydzień, w którym odbywają się transakcje. Następnie identyfikuje pierwszą milisekundę poprzedniego tygodnia.
Transakcja 8192 miała miejsce 5 stycznia 2022 r. Funkcja weekname() zwraca numer tygodnia i rok dla daty 30 grudnia 2021 r. z poprzedniego tygodnia — 2021/53.
Przykład 3 — first_week_day
Przegląd
Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie.
Jednak w tym przykładzie zgodnie z polityką firmową tydzień roboczy rozpoczyna się we wtorek.
Otwórz Edytor ładowania danych i dodaj następujący skrypt ładowania do nowej karty.
Skrypt ładowania
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
weekname(date,0,1) 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
2021/52
8184
12/28/2021
Wto
2021/53
8185
12/29/2021
Śro
2021/53
8186
12/30/2021
Thu
2021/53
8187
12/31/2021
Fri
2021/53
8188
01/01/2022
Sat
2022/01
8189
01/02/2022
Nie
2022/01
8190
01/03/2022
Pon
2022/01
8191
01/04/2022
Wto
2022/02
8192
01/05/2022
Śro
2022/02
8193
01/06/2022
Thu
2022/02
8194
01/07/2022
Fri
2022/02
8195
01/08/2022
Sat
2022/02
8196
01/09/2022
Nie
2022/02
8197
01/10/2022
Pon
2022/02
8198
01/11/2022
Wto
2022/03
8199
01/12/2022
Śro
2022/03
8200
01/13/2022
Thu
2022/03
8201
01/14/2022
Fri
2022/03
Ponieważ argument first_week_date o wartości 1 jest używany w funkcji weekname(), używa ona wtorku jako pierwszego dnia tygodnia. Funkcja ta określa więc, że 53. tydzień 2021 r. rozpoczyna się we wtorek 28 grudnia, a ze względu na to, że aplikacja używa niepodzielonych tygodni, tydzień 1. rozpoczyna się 1 stycznia 2022 r., a kończy w ostatnią milisekundę poniedziałku 3 stycznia 2022 r.
Transakcja 8192 miała miejsce 5 stycznia 2022 r. W związku z tym, używając wtorku jako parametru first_week_day, funkcja weekname() zwraca wartość 2022/02 dla pola „week_number”.
Przykład 4 — przykład z obiektem wykresu
Przegląd
Używany jest ten sam zestaw danych i scenariusz co w pierwszym przykładzie.
Jednak w tym przykładzie zestaw danych pozostaje bez zmian i jest ładowany do aplikacji. Obliczenie zwracające numer roku tygodnia, kiedy wystąpiły transakcje, jest tworzone jako miara w obiekcie wykresu aplikacji.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
id
date
=week_day (date)
Aby obliczy początek tygodnia, kiedy ma miejsce transakcja, utwórz następującą miarę:
=weekname(date)
Tabela wynikowa
id
date
=weekday(date)
=weekname(date)
8183
12/27/2021
Pon
2021/53
8184
12/28/2021
Wto
2021/53
8185
12/29/2021
Śro
2021/53
8186
12/30/2021
Thu
2021/53
8187
12/31/2021
Fri
2021/53
8188
01/01/2022
Sat
2022/01
8189
01/02/2022
Nie
2022/02
8190
01/03/2022
Pon
2022/02
8191
01/04/2022
Wto
2022/02
8192
01/05/2022
Śro
2022/02
8193
01/06/2022
Thu
2022/02
8194
01/07/2022
Fri
2022/02
8195
01/08/2022
Sat
2022/02
8196
01/09/2022
Nie
2022/03
8197
01/10/2022
Pon
2022/03
8198
01/11/2022
Wto
2022/03
8199
01/12/2022
Śro
2022/03
8200
01/13/2022
Thu
2022/03
8201
01/14/2022
Fri
2022/03
Miarę „week_number” tworzy się w obiekcie wykresu, używając funkcji weekname() i przekazując pole daty jako jej argument.
Funkcja weekname() początkowo identyfikuje tydzień, w którym przypada wartość daty, i zwraca liczbę numerów tygodni oraz rok, w którym ma miejsce transakcja.
Zmienna systemowa FirstWeekDay ustawia niedzielę jako pierwszy dzień tygodnia. Zmienna systemowa BrokenWeeks ustawia aplikację tak, aby używała podzielonych tygodni, co oznacza, że tydzień 1 rozpoczyna się 1 stycznia.
Ponieważ aplikacja używa podzielonych tygodni, a pierwszym dniem tygodnia jest niedziela, transakcje występujące od 2 do 8 stycznia zwracają wartość 2022/02 (tydzień 2 w 2022 r.). Zauważ, że transakcja 8192 miała miejsce 5 stycznia i zwraca wartość 2022/02 dla pola „week_number”.
Przykład 5 — 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. jest ładowany do tabeli o nazwie „Transactions”.
Zmienna systemowa BrokenWeeks, która jest ustawiona na 0.
Zmienna systemowa ReferenceDay, która jest ustawiona na 2.
Zmienna systemowa DateFormat, która jest ustawiona na format MM/DD/YYYY.
Aby obliczyć łączną sprzedaż, utwórz następującą miarę agregacji:
=sum(amount)
Ustaw Formatowanie liczb miary na Waluta.
Tabela wynikowa
weekname(date)
=sum(amount)
2019/52
$125.69
2020/01
$346.51
2020/02
$347.57
2020/03
$122.01
Aby zademonstrować wyniki użycia funkcji weekname() w tym scenariuszu, dodaj następujące pole jako wymiar:
date
Tabela wyników z polem daty
weekname(date)
date
=sum(amount)
2019/52
12/27/2019
$58.27
2019/52
12/28/2019
$67.42
2020/01
12/29/2019
$23.80
2020/01
12/30/2019
$82.06
2020/01
12/31/2019
$40.56
2020/01
01/01/2020
$37.23
2020/01
01/02/2020
$17.17
2020/01
01/03/2020
$88.27
2020/01
01/04/2020
$57.42
2020/02
01/05/2020
$53.80
2020/02
01/06/2020
$82.06
2020/02
01/07/2020
$40.56
2020/02
01/08/2020
$53.67
2020/02
01/09/2020
$26.63
2020/02
01/10/2020
$72.48
2020/02
01/11/2020
$18.37
2020/03
01/12/2020
$45.26
2020/03
01/13/2020
$58.23
2020/03
01/14/2020
$18.52
Ponieważ aplikacja używa niepodzielonych tygodni, a tydzień 1. wymaga co najmniej dwóch dni w styczniu ze względu na zmienną systemową ReferenceDay, tydzień 1. roku 2020 obejmuje transakcje z 29 grudnia 2019.
Czy ta strona była pomocna?
Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!