Ta funkcja zwraca wartość odpowiadającą znacznikowi czasu ostatniej milisekundy ostatniego dnia tygodnia kalendarzowego, który zawiera wartość date. Domyślnym formatem wyjściowym będzie format DateFormat skonfigurowany w skrypcie.
Funkcja weekend() określa, w którym tygodniu wypada data. Następnie zwraca znacznik czasu w formacie daty dla ostatniej milisekundy tego tygodnia. Pierwszy dzień tygodnia jest określany przez zmienną systemową FirstWeekDay. Można ją jednak zastąpić argumentem first_week_day funkcji weekend().
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 argumentu 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 tej zmiennej systemowej, zobacz FirstWeekDay
Kiedy używać
Funkcja weekend() jest używana jako część wyrażenia, gdy użytkownik chce, aby w obliczeniach użyto liczby pozostałych dni tygodnia dla określonej daty. Na przykład, można jej użyć, jeśli użytkownik chce obliczyć sumę odsetek, które nie zostały jeszcze naliczone w ciągu tygodnia.
W poniższych przykładach zakłada się:
SET FirstWeekDay=0;
Przykład
Wynik
weekend('01/10/2013')
Zwraca wartość 01/12/2013 23:59:59.
weekend('01/10/2013', -1)
Zwraca wartość 01/05/2013 23:59:59..
weekend('01/10/2013', 0, 1)
Zwraca wartość 01/14/2013 23:59:59.
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.
Jeśli chcesz używać ustawień ISO dla tygodni i numerów tygodni, w skrypcie muszą się znajdować następujące elementy:
Set DateFormat ='YYYY-MM-DD';
Set FirstWeekDay =0; // Monday as first week day
Set BrokenWeeks =0; //(use unbroken weeks)
Set ReferenceDay =4; // Jan 4th is always in week 1
Jeśli chcesz używać ustawień amerykańskich, w skrypcie muszą się znajdować następujące elementy:
Set DateFormat ='M/D/YYYY';
Set FirstWeekDay =6; // Sunday as first week day
Set BrokenWeeks =1; //(use broken weeks)
Set ReferenceDay =1; // Jan 1st is always in week 1
Powyższe przykłady dają następujące wyniki z funkcji weekend():
Przykład funkcji Weekend
Data
Koniec tygodnia według ISO
Koniec tygodnia w USA
Sat 2020 Dec 26
2020-12-27
12/26/2020
Sun 2020 Dec 27
2020-12-27
1/2/2021
Mon 2020 Dec 28
2021-01-03
1/2/2021
Tue 2020 Dec 29
2021-01-03
1/2/2021
Wed 2020 Dec 30
2021-01-03
1/2/2021
Thu 2020 Dec 31
2021-01-03
1/2/2021
Fri 2021 Jan 1
2021-01-03
1/2/2021
Sat 2021 Jan 2
2021-01-03
1/2/2021
Sun 2021 Jan 3
2021-01-03
1/9/2021
Mon 2021 Jan 4
2021-01-10
1/9/2021
Tue 2021 Jan 5
2021-01-10
1/9/2021
InformacjaTygodnie kończą się w niedziele w kolumnie ISO, a w soboty w kolumnie US.
Przykład 1 — Przykład podstawowy
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 rok 2022, który jest ładowany do tabeli o nazwie „Transactions”.
Pole danych w formacie DateFormat zmiennej systemowej (MM/DD/RRRR).
Utworzenie pola end_of_week zwracającego znacznik czasu końca tygodnia, w którym miały miejsce transakcje.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
end_of_week
end_of_week_timestamp
Tabela wynikowa
date
end_of_week
end_of_week_timestamp
1/7/2022
01/08/2022
1/8/2022 11:59:59 PM
1/19/2022
01/22/2022
1/22/2022 11:59:59 PM
2/5/2022
02/05/2022
2/5/2022 11:59:59 PM
2/28/2022
03/05/2022
3/5/2022 11:59:59 PM
3/16/2022
03/19/2022
3/19/2022 11:59:59 PM
4/1/2022
04/02/2022
4/2/2022 11:59:59 PM
5/7/2022
05/07/2022
5/7/2022 11:59:59 PM
5/16/2022
05/21/2022
5/21/2022 11:59:59 PM
6/15/2022
06/18/2022
6/18/2022 11:59:59 PM
6/26/2022
07/02/2022
7/2/2022 11:59:59 PM
7/9/2022
07/09/2022
7/9/2022 11:59:59 PM
7/22/2022
07/23/2022
7/23/2022 11:59:59 PM
7/23/2022
07/23/2022
7/23/2022 11:59:59 PM
7/27/2022
07/30/2022
7/30/2022 11:59:59 PM
8/2/2022
08/06/2022
8/6/2022 11:59:59 PM
8/8/2022
08/13/2022
8/13/2022 11:59:59 PM
8/19/2022
08/20/2022
8/20/2022 11:59:59 PM
9/26/2022
10/01/2022
10/1/2022 11:59:59 PM
10/14/2022
10/15/2022
10/15/2022 11:59:59 PM
10/29/2022
10/29/2022
10/29/2022 11:59:59 PM
Pole „end_of_week” jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji weekend() i przekazanie pola daty jako jej argumentu.
Funkcja weekend() identyfikuje, w którym tygodniu wypada wartość daty, i zwraca znacznik czasu ostatniej milisekundy danego tygodnia.
Transakcja 8191 miała miejsce 5 lutego. Zmienna systemowa FirstWeekDay ustawia pierwszy dzień tygodnia na niedzielę. Funkcja weekend() dowiaduje się, że pierwsza sobota po 5 lutego – a więc po końcu tygodnia – wypadała 5 lutego. W związku z tym wartość end_of_week dla tej transakcji zwraca ostatnią milisekundę tego dnia – 5 lutego, godz. 23:59:59.
Przykład 2 – period_no
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.
Utworzenie pola previous_week_end zwracającego znacznik czasu początku tygodnia przed transakcją.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
previous_week_end
previous_week_end_timestamp
Tabela wynikowa
date
end_of_week
end_of_week_timestamp
1/7/2022
01/01/2022
1/1/2022 11:59:59 PM
1/19/2022
01/15/2022
1/15/2022 11:59:59 PM
2/5/2022
01/29/2022
1/29/2022 11:59:59 PM
2/28/2022
02/26/2022
2/26/2022 11:59:59 PM
3/16/2022
03/12/2022
3/12/2022 11:59:59 PM
4/1/2022
03/26/2022
3/26/2022 11:59:59 PM
5/7/2022
04/30/2022
4/30/2022 11:59:59 PM
5/16/2022
05/14/2022
5/14/2022 11:59:59 PM
6/15/2022
06/11/2022
6/11/2022 11:59:59 PM
6/26/2022
06/25/2022
6/25/2022 11:59:59 PM
7/9/2022
07/02/2022
7/2/2022 11:59:59 PM
7/22/2022
07/16/2022
7/16/2022 11:59:59 PM
7/23/2022
07/16/2022
7/16/2022 11:59:59 PM
7/27/2022
07/23/2022
7/23/2022 11:59:59 PM
8/2/2022
07/30/2022
7/30/2022 11:59:59 PM
8/8/2022
08/06/2022
8/6/2022 11:59:59 PM
8/19/2022
08/13/2022
8/13/2022 11:59:59 PM
9/26/2022
09/24/2022
9/24/2022 11:59:59 PM
10/14/2022
10/08/2022
10/8/2022 11:59:59 PM
10/29/2022
10/22/2022
10/22/2022 11:59:59 PM
W tym przypadku, ponieważ wartości period_no -1 użyto jako argumentu przesunięcia w funkcji weekend(), funkcja najpierw identyfikuje tydzień, w którym zawarto transakcje. Następnie identyfikuje ostatnią milisekundę poprzedniego tygodnia.
Transakcja 8196 miała miejsce 15 czerwca. Funkcja weekend() oblicza, że tydzień zaczyna się 12 czerwca. W związku z tym poprzedni tydzień kończy się 11 czerwca o godz. 23:59:59. Ta wartość jest zwracana dla pola previous_week_end.
Przykład 3 — first_week_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 pierwszym przykładzie. Jednak w tym przykładzie musimy ustawić wtorek jako pierwszy dzień tygodnia roboczego.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
end_of_week
end_of_week_timestamp
Tabela wynikowa
date
end_of_week
end_of_week_timestamp
1/7/2022
01/10/2022
1/10/2022 11:59:59 PM
1/19/2022
01/24/2022
1/24/2022 11:59:59 PM
2/5/2022
02/07/2022
2/7/2022 11:59:59 PM
2/28/2022
02/28/2022
2/28/2022 11:59:59 PM
3/16/2022
03/21/2022
3/21/2022 11:59:59 PM
4/1/2022
04/04/2022
4/4/2022 11:59:59 PM
5/7/2022
05/09/2022
5/9/2022 11:59:59 PM
5/16/2022
05/16/2022
5/16/2022 11:59:59 PM
6/15/2022
06/20/2022
6/20/2022 11:59:59 PM
6/26/2022
06/27/2022
6/27/2022 11:59:59 PM
7/9/2022
07/11/2022
7/11/2022 11:59:59 PM
7/22/2022
07/25/2022
7/25/2022 11:59:59 PM
7/23/2022
07/25/2022
7/25/2022 11:59:59 PM
7/27/2022
08/01/2022
8/1/2022 11:59:59 PM
8/2/2022
08/08/2022
8/8/2022 11:59:59 PM
8/8/2022
08/08/2022
8/8/2022 11:59:59 PM
8/19/2022
08/22/2022
8/22/2022 11:59:59 PM
9/26/2022
09/26/2022
9/26/2022 11:59:59 PM
10/14/2022
10/17/2022
10/17/2022 11:59:59 PM
10/29/2022
10/31/2022
10/31/2022 11:59:59 PM
W tym przypadku, ponieważ funkcji weekend() przekazano wartość 1 jako argument first_week_date, funkcja ta ustawia wtorek jako pierwszy dzień tygodnia.
Transakcja 8191 miała miejsce 5 lutego. Funkcja weekend() oblicza, że pierwszy poniedziałek po tej dacie – a zatem także koniec tygodnia i zwracana wartość – przypadł na 6 lutego o godz. 23:59:59.
Przykład 4 — przykład z obiektem 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 znacznik czasu końca tygodnia, w którym wystąpiły transakcje, są tworzone jako miara w obiekcie wykresu aplikacji.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar: date.
Aby obliczyć początek tygodnia, kiedy ma miejsce transakcja, dodaj następujące miary:
=weekend(date)
=timestamp(weekend(date))
Tabela wynikowa
date
=weekend(date)
=timestamp(weekend(date))
1/7/2022
01/08/2022
1/8/2022 11:59:59 PM
1/19/2022
01/22/2022
1/22/2022 11:59:59 PM
2/5/2022
02/05/2022
2/5/2022 11:59:59 PM
2/28/2022
03/05/2022
3/5/2022 11:59:59 PM
3/16/2022
03/19/2022
3/19/2022 11:59:59 PM
4/1/2022
04/02/2022
4/2/2022 11:59:59 PM
5/7/2022
05/07/2022
5/7/2022 11:59:59 PM
5/16/2022
05/21/2022
5/21/2022 11:59:59 PM
6/15/2022
06/18/2022
6/18/2022 11:59:59 PM
6/26/2022
07/02/2022
7/2/2022 11:59:59 PM
7/9/2022
07/09/2022
7/9/2022 11:59:59 PM
7/22/2022
07/23/2022
7/23/2022 11:59:59 PM
7/23/2022
07/23/2022
7/23/2022 11:59:59 PM
7/27/2022
07/30/2022
7/30/2022 11:59:59 PM
8/2/2022
08/06/2022
8/6/2022 11:59:59 PM
8/8/2022
08/13/2022
8/13/2022 11:59:59 PM
8/19/2022
08/20/2022
8/20/2022 11:59:59 PM
9/26/2022
10/01/2022
10/1/2022 11:59:59 PM
10/14/2022
10/15/2022
10/15/2022 11:59:59 PM
10/29/2022
10/29/2022
10/29/2022 11:59:59 PM
Miarę „end_of_week” tworzy się w obiekcie wykresu, używając funkcji weekend() i przekazując pole daty jako jej argument. Funkcja weekend() identyfikuje, w którym tygodniu przypada wartość daty, i zwraca znacznik czasu ostatniej milisekundy danego tygodnia.
Transakcja 8191 miała miejsce 5 lutego. Zmienna systemowa FirstWeekDay ustawia pierwszy dzień tygodnia na niedzielę. Funkcja weekend() dowiaduje się, że pierwsza sobota po 5 lutego – a więc po końcu tygodnia – wypadała 5 lutego. W związku z tym wartość end_of_week dla tej transakcji zwraca ostatnią milisekundę tego dnia – 5 lutego, godz. 23:59:59.
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 załadowany do tabeli o nazwie Employee_Expenses.
Dane zawierające identyfikatory pracowników, imiona i nazwiska pracowników oraz średnie dzienne roszczenia z tytułu wydatków każdego pracownika.
Użytkownik końcowy chciałby, aby obiekt wykresu wyświetlał, według identyfikatora pracownika oraz imienia i nazwiska pracownika, szacowane roszczenia z tytułu wydatków do poniesienia przez pozostałą część tygodnia.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
employee_id
employee_name
Następnie utwórz miarę, aby obliczyć narosłe odsetki:
=(weekend(today(1))-today(1))*avg_daily_claim
Ustaw Formatowanie liczb miary na Waluta.
Tabela wynikowa
employee_id
employee_name
=(weekend(today(1))-today(1))*avg_daily_claim
182
Mark
$90.00
183
Deryck
$75.00
184
Dexter
$75.00
185
Sydney
$162.00
186
Agatha
$108.00
Funkcja weekend(), przyjmująca jako argument tylko dzisiejszą datę, zwraca datę końcową bieżącego tygodnia. Następnie wyrażenie odejmuje dzisiejszą datę od daty zakończenia tygodnia i zwraca liczbę dni pozostałych w tym tygodniu.
Wartość ta jest następnie mnożona przez średnie dzienne roszczenie z tytułu wydatków przez każdego pracownika, aby obliczyć szacunkową wartość roszczeń, które każdy pracownik złoży w pozostałej części tygodnia.
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ć!