weekname — funkcja skryptu i funkcja wykresu
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.
Składnia:
WeekName(date[, period_no[,first_week_day]])
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().
Domyślnie aplikacje Qlik Sense używają podzielonych tygodni (zdefiniowanych przez zmienną systemową BrokenWeeks ), dlatego 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.
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
Argument | Opis |
---|---|
date | 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. |
Aby ustawić dzień, w którym zaczyna się tydzień w argumencie first_week_day, możesz użyć następujących wartości:
Dzień | Wartość |
---|---|
poniedziałek | 0 |
wtorek | 1 |
środa | 2 |
czwartek | 3 |
piątek | 4 |
sobota | 5 |
niedziela | 6 |
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.
Przykład | Wynik |
---|---|
weekname('01/12/2013') | Zwraca 2013/02. |
weekname('01/12/2013', -1) | Returns 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.
-
Ładunek poprzedzający, który 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
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 poprzedzającej instrukcji LOAD 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.
Skrypt ładowania
SET BrokenWeeks=1;
SET FirstWeekDay=6;
Transactions:
Load
*,
weekname(date,-1) as previous_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
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
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.
Skrypt ładowania
SET BrokenWeeks=1;
Transactions:
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 (date)
Aby obliczy początek tygodnia, kiedy ma miejsce transakcja, utwórz następującą miarę:
=weekname(date)
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.
Skrypt ładowania
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2019,58.27
8184,12/28/2019,67.42
8185,12/29/2019,23.80
8186,12/30/2019,82.06
8187,12/31/2019,40.56
8188,01/01/2020,37.23
8189,01/02/2020,17.17
8190,01/03/2020,88.27
8191,01/04/2020,57.42
8192,01/05/2020,53.80
8193,01/06/2020,82.06
8194,01/07/2020,40.56
8195,01/08/2020,53.67
8196,01/09/2020,26.63
8197,01/10/2020,72.48
8198,01/11/2020,18.37
8199,01/12/2020,45.26
8200,01/13/2020,58.23
8201,01/14/2020,18.52
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę.
Utwórz wymiar wyliczany, używając następującego wyrażenia:
=weekname(date)
Aby obliczyć łączną sprzedaż, utworzyć następującą miarę agregacji:
=sum(amount)
Ustaw Formatowanie liczb miary na Waluta.
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
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.