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. 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 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ć!