Funkcja makeweekdate() jest dostępna zarówno jako skrypt, jak i funkcja wykresu. Oblicza ona datę na podstawie otrzymanych argumentów.
Argumenty
Argument
Opis
weekyear
Rok zdefiniowany przez funkcję WeekYear() dla określonej daty, czyli rok, do którego należy numer tygodnia.
InformacjaTydzień roku może w niektórych przypadkach różnić się od roku kalendarzowego, na przykład jeśli tydzień 1 rozpoczyna się już w grudniu poprzedniego roku.
week
Numer tygodnia zdefiniowany przez funkcję Week() dla określonej daty.
Jeśli nie zostanie podany numer tygodnia, przyjmowana jest wartość 1.
weekday
Dzień tygodnia zdefiniowany przez funkcję WeekDay() dla danej daty. 0 to pierwszy dzień tygodnia, a 6 to ostatni dzień tygodnia.
Jeśli nie zostanie podany dzień tygodnia, przyjmowana jest wartość 0.
InformacjaMimo że 0 zawsze oznacza pierwszy dzień tygodnia, a 6 zawsze ostatni, odpowiadające tym wartościom dni tygodnia określa parametr first_week_day . Jeśli ten argument zostanie pominięty, wówczas zostanie użyta wartość zmiennejFirstWeekDay.
Jeśli zostaną użyte podzielone tygodnie wraz z niemożliwą kombinacją parametrów, może to doprowadzić do wyniku, który nie należy do wybranego roku.
Przykład:
MakeWeekDate(2021,1,0,6,1)
Zwraca „Dec 27 2020”, ponieważ ten dzień jest pierwszym dniem (niedzielą) określonego tygodnia. Jan 1 2021 przypadał w piątek.
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 jest stosowana 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.
Aby uzyskać więcej informacji o tej zmiennej systemowej, zobacz ReferenceDay
Kiedy używać
Funkcja makeweekdate() może być używana w skryptach do generowania danych w celu wygenerowania listy dat lub utworzenia daty na podstawie podanych wartości roku, tygodnia i dnia tygodnia.
W poniższych przykładach zakłada się:
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Przykłady funkcji
Przykład
Wynik
makeweekdate(2014,6,6)
zwraca wartość 02/09/2014
makeweekdate(2014,6,1)
zwraca wartość 02/04/2014
makeweekdate(2014,6)
zwraca 02/03/2014 (przyjmuje się dzień tygodnia 0)
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.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych zawierający sumy sprzedaży w ujęciu tygodniowym za 2022 rok w tabeli o nazwie Sales.
Daty transakcji określone przez trzy pola: year, week i sales.
Ładowanie poprzedzające, użyte do utworzenia miaryend_of_week, wykorzystuje funkcję makeweekdate(), aby zwrócić datę piątku w tym tygodniu w formacie MM/DD/RRRR.
Aby udowodnić, że zwrócona data to piątek, wyrażenie end_of_week zostało zapakowane w funkcję weekday(), pokazującą dzień tygodnia.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week,4) as end_of_week,
weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
transaction_year
transaction_week
end_of_week
week_day
Tabela wynikowa
transaction_year
transaction_week
end_of_week
week_day
2022
01
01/07/2022
Fri
2022
02
01/14/2022
Fri
2022
03
01/21/2022
Fri
2022
04
01/28/2022
Fri
2022
05
02/04/2022
Fri
2022
06
02/11/2022
Fri
2022
07
02/18/2022
Fri
Poleend_of_week jest tworzone w instrukcji ładowania poprzedzającego przy użyciu funkcji makeweekdate(). Pola transaction_year i transaction_week są przekazywane przez funkcję jako argumenty określające rok i tydzień. Argumentowi dnia przypisano wartość 4.
Następnie funkcja ta łączy i konwertuje te wartości na pole daty oraz zwraca wynik w formacie zmiennej systemowej DateFormat.
Funkcja makeweekdate() wraz z argumentami także jest zapakowana w funkcję weekday(), która zwraca pole week_day. Jak widać w powyższej tabeli, pole week_day pokazuje, że te daty rzeczywiście wypadają w piątek.
Przykład 2 – dzień nieuwzględniony
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych zawierający sumy sprzedaży w ujęciu tygodniowym za 2022 rok w tabeli o nazwie Sales.
Daty transakcji określone przez trzy pola: year, week i sales.
Ładowanie poprzedzające, które zostało użyte do utworzenia miary, first_day_of_week, używa funkcji makeweekdate(). Zostanie zwrócona data poniedziałku w tym tygodniu w formacie MM/DD/RRRR.
Aby udowodnić, że zwrócona data wypada w poniedziałek, wyrażenie first_day_of_week zostało zapakowane w funkcję weekday(), pokazującą dzień tygodnia.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Transactions:
Load
*,
makeweekdate(transaction_year, transaction_week) as first_day_of_week,
weekday(makeweekdate(transaction_year, transaction_week)) as week_day
;
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
transaction_year
transaction_week
first_day_of_week
week_day
Tabela wynikowa
transaction_year
transaction_week
first_day_of_week
week_day
2022
01
01/03/2022
Pon
2022
02
01/10/2022
Pon
2022
03
01/17/2022
Pon
2022
04
01/24/2022
Pon
2022
05
01/31/2022
Pon
2022
06
02/07/2022
Pon
2022
07
02/14/2022
Pon
Pole first_day_of_week jest tworzone w instrukcji ładowania poprzedzającego przy użyciu funkcji makeweekdate(). Parametry transaction_year i transaction_week zostały przekazane jako argumenty funkcji, a parametr dnia pozostawiono pusty.
Następnie funkcja ta łączy i konwertuje te wartości na pole daty oraz zwraca wynik w formacie zmiennej systemowej DateFormat.
Funkcja makeweekdate() wraz z argumentami także została zapakowana w funkcję weekday(), która zwraca pole week_day. Jak widać w powyższej tabeli, pole week_day zwraca we wszystkich wypadkach poniedziałek, ponieważ ten parametr pozostał pusty w funkcji makeweekdate(), co domyślnie oznacza 0 (pierwszy dzień tygodnia), a pierwszy dzień tygodnia jest ustawiony na poniedziałek przez zmienną systemową FirstWeekDay.
Przykład 3 — przykład z obiektem wykresu
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych zawierający sumy sprzedaży w ujęciu tygodniowym za 2022 rok w tabeli o nazwie Sales.
Daty transakcji określone przez trzy pola: year, week i sales.
W tym przykładzie obiekt wykresu zostanie użyty w celu utworzenia miary równoważnej obliczeniom end_of_week z pierwszego przykładu. Miara ta użyje funkcji makeweekdate(), aby zwrócić datę piątku w tym tygodniu w formacie MM/DD/RRRR.
Aby udowodnić, że zwrócona data wypada w piątek, zostaje utworzona druga miara, która zwraca dzień tygodnia.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
Wyniki
Wykonaj następujące czynności:
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
transaction_year
transaction_week
Aby wykonać obliczenia równoważne tym, które wykonuje pole end_of_week w pierwszym przykładzie, utwórz następującą miarę:
Pole równoważne end_of_week zostaje utworzone w obiekcie wykresu jako miara przy użyciu funkcji makeweekdate(). Pola transaction_year i transaction_week zostały przekazane jako argumenty roku i tygodnia. Argumentowi dnia przypisano wartość 4.
Następnie funkcja ta łączy i konwertuje te wartości na pole daty oraz zwraca wynik w formacie zmiennej systemowej DateFormat.
Funkcja makeweekdate() wraz z argumentami także została zapakowana w funkcję weekday(), która zwraca obliczenia równoważne obliczeniom pola week_day z pierwszego przykładu. Jak widać w powyższej tabeli, ostatnia kolumna z prawej pokazuje, że te daty rzeczywiście wypadają w piątek.
Przykład 4 — Scenariusz
Przegląd
W tym przykładzie utwórz listę dat zawierających wszystkie piątki 2022 roku.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
Calendar:
load
*,
weekday(date) as weekday
where year(date)=2022;
load
makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
Wyniki
Tabela wynikowa
date
weekday
01/07/2022
Fri
01/14/2022
Fri
01/21/2022
Fri
01/28/2022
Fri
02/04/2022
Fri
02/11/2022
Fri
02/18/2022
Fri
02/25/2022
Fri
03/04/2022
Fri
03/11/2022
Fri
03/18/2022
Fri
03/25/2022
Fri
04/01/2022
Fri
04/08/2022
Fri
04/15/2022
Fri
04/22/2022
Fri
04/29/2022
Fri
05/06/2022
Fri
05/13/2022
Fri
05/20/2022
Fri
05/27/2022
Fri
06/03/2022
Fri
06/10/2022
Fri
06/17/2022
Fri
Jeszcze 27 wierszy
Funkcja makeweekdate() znajduje wszystkie piątki w 2022 roku. Przypisanie parametrowi tygodnia wartości -2 daje pewność, że żadna data nie zostanie przeoczona. Ładowanie poprzedzające dla jasności tworzy dodatkowe pole weekday, aby pokazać, że każda wartość date jest piątkiem.
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ć!