inlunarweektodate — funkcja skryptu i funkcja wykresu
Ta funkcja sprawdza, czy wartość timestamp należy do części tygodnia księżycowego do ostatniej milisekundy wartości base_date włącznie. Tygodnie księżycowe w Qlik Sense są zdefiniowane przez uznanie 1 stycznia za pierwszy dzień tygodnia i każdy tydzień, z wyjątkiem ostatniego tygodnia roku, będzie zawierał dokładnie siedem dni.
W Qlik Sense wartość logiczna Prawda jest reprezentowana przez -1, a wartość Fałsz jest reprezentowana przez 0.
Funkcja inlunarweektodate() działa jako punkt końcowy tygodnia księżycowego. Natomiast funkcja inlunarweek() sprawdza, do którego tygodnia księżycowego należy base_date. Gdyby na przykład argument base_date określał datę 5 stycznia, to każdy znacznik czasu określający datę między 1 a 5 stycznia powodowałby zwrot wartości logicznej TRUE, natomiast dla dat od 6 stycznia byłaby zwracana wartość logiczna FALSE.
Argumenty
Argument
Opis
timestamp
Data, która ma być porównana z wartością base_date.
base_date
Data używana do oceny tygodnia księżycowego.
period_no
Tydzień księżycowy może zostać przesunięty o wartość period_no. period_no jest liczbą całkowitą, gdzie 0 oznacza tydzień księżycowy zawierający wartość base_date. Wartości ujemne parametru period_no oznaczają poprzednie tygodnie księżycowe, a wartości dodatnie — następne tygodnie księżycowe.
first_week_day
Przesunięcie może być większe lub mniejsze od zera. Zmienia to początek roku o określoną liczbę dni lub części dnia.
Kiedy używać
Funkcja inlunarweektodate() zwraca wynik logiczny. Zazwyczaj ten typ funkcji jest używany jako warunek w wyrażeniu IF. Funkcja inlunarweektodate() mogłaby zostać użyta w przypadku, gdyby użytkownik chciał uzyskać w wyniku obliczeń agregację lub kalkulację, zależnie od tego czy oceniana data wypada w określonym segmencie interesującego go tygodnia.
Na przykład funkcja inlunarweektodate() może służyć do identyfikacji całego sprzętu wyprodukowanego w danym tygodniu do określonej daty włącznie.
Przykłady funkcji
Przykład
Wynik
inlunarweektodate('01/12/2013', '01/13/2013',
0)
Zwraca TRUE, ponieważ wartość timestamp, 01/12/2013, wypada w części tygodnia od 01/08/2013 do 01/13/2013.
inlunarweektodate('01/12/2013', '01/11/2013',
0)
Zwraca FALSE, ponieważ wartość timestamp jest późniejsza niż wartość base_date, mimo że obie te daty wypadają w tym samym tygodniu księżycowym przed 01/12/2012.
inlunarweektodate('01/12/2006', '01/05/2006',
1)
Zwraca wartość TRUE. Określenie wartości 1 dla pola period_no powoduje przesunięcie base_date o jeden tydzień w przód, a więc wartość timestamp przypada w części tygodnia księżycowego.
Funkcja inlunarweektodate() jest często używana w połączeniu z następującymi funkcjami:
Ta funkcja służy do określania numeru tygodnia księżycowego roku, w którym wypada data przekazana na wejściu.
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 zbiór styczniowych transakcji, który jest ładowany do tabeli o nazwie Transactions. Została użyta domyślna zmienna systemowa DateFormat MM/DD/RRRR.
Utwórz polein_lunar_week_to_date, określające które transakcje miały miejsce w tygodniu księżycowym do daty 10 stycznia.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
in_lunar_week_to_date
Tabela wynikowa
data
in_lunar_week_to_date
1/1/2022
0
1/4/2022
0
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
Pole in_lunar_week_to_date zostało utworzone w instrukcji ładowania poprzedzającego za pomocą funkcji inlunarweektodate(), której jako argumenty przekazano pole date, wpisaną w kod datę 10 stycznia jako base_date oraz przesunięcie o wartości 0.
Ponieważ tygodnie księżycowe zaczynają się 1 stycznia, data 10 stycznia wypadłaby w tygodniu księżycowym zaczynającym się 8 stycznia, a ponieważ używamy funkcji inlunarweektodate(), ten tydzień księżycowy kończyłby się 10 dnia. W związku z tym wszelkie transakcje, które mają miejsce między tymi dwiema styczniowymi datami, zwracałyby wartość TRUE. Można to zweryfikować w tabeli wyników.
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. Jednak w tym przykładzie chodzi o utworzenie pola, 2_lunar_weeks_later, które będzie sprawdzało, czy transakcje miały miejsce dwa tygodnie po tygodniu księżycowym do daty 1 stycznia.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
2_lunar_weeks_later
Tabela wynikowa
data
2_lunar_weeks_later
1/1/2022
0
1/4/2022
0
1/10/2022
0
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
-1
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
W tym przykładzie funkcja inlunarweektodate() stwierdza, że tydzień księżycowy do 10 stycznia trwa trzy dni (8, 9 i 10 stycznia). Ponieważ jako przesunięcia użyto argumentu period_no o wartości 2, ten tydzień księżycowy zostaje przesunięty o 14 dni. To oznacza, że trzydniowy tydzień księżycowy obejmuje dni 22, 23 i 24 stycznia. Każda transakcja, która ma miejsce między 22 a 24 stycznia zwróci wynik logiczny TRUE.
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.
Została użyta domyślna zmienna systemowa DateFormat MM/DD/RRRR.
Argument first_week_date o wartości 3. To sprawia, że tygodnie księżycowe zaczynają się od 3 stycznia.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
in_lunar_week_to_date
Tabela wynikowa
data
in_lunar_week_to_date
1/1/2022
0
1/4/2022
-1
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
W tym przykładzie przekazanie argumentu the first_week_date o wartości 3 do do funkcji inlunarweek() sprawiło, że pierwszy tydzień księżycowy będzie obejmował dni od 3 do 10 stycznia. Ponieważ 10 stycznia jest także wartością base_date, wszelkie transakcje mające miejsce między tymi dwiema datami będą powodować zwrócenie wartości logicznej TRUE.
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 określające, czy transakcje miały miejsce w tygodniu księżycowym kończącym się 10 stycznia, jest 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.
Utwórz następującą miarę:
=inlunarweektodate(date,'01/10/2022', 0)
Tabela wynikowa
data
=inlunarweektodate(date,'01/10/2022', 0)
1/1/2022
0
1/4/2022
0
1/10/2022
-1
1/11/2022
0
1/12/2022
0
1/15/2022
0
1/17/2022
0
1/18/2022
0
1/19/2022
0
1/21/2022
0
1/23/2022
0
1/26/2022
0
1/27/2022
0
1/29/2022
0
1/31/2022
0
Miara in_lunar_week_to_date została utworzona w obiekcie wykresu za pomocą funkcji inlunarweektodate() i przez przekazanie jej jako argumentów pola daty, wpisanej w kod daty 10 stycznia jako base_date oraz przesunięcia o wartości 0.
Ponieważ tygodnie księżycowe zaczynają się 1 stycznia, data 10 stycznia wypada w tygodniu księżycowym zaczynającym się 8 stycznia, a ponieważ używamy funkcji inlunarweektodate(), ten tydzień księżycowy kończyłby się 10 dnia. W związku z tym wszelkie transakcje, które mają miejsce między tymi dwiema styczniowymi datami, zwracałyby wartość TRUE. Można to zweryfikować w tabeli wyników.
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 Products.
Informacje obejmujące identyfikator produktu, datę produkcji i cenę.
Stwierdzono, że z powodu błędu sprzętowego produkty wytworzone w tygodniu księżycowym obejmującym 12 stycznia były wadliwe. Problem został rozwiązany 13 stycznia. Użytkownik końcowy chciałby, aby obiekt wykresu wyświetlał według tygodni informację, czy produkty były wadliwe, czy bez wad oraz koszt produktów wytworzonych w danym tygodniu.
Funkcja inlunarweektodate() zwraca wartość logiczną podczas oceny dat wytworzenia każdego z produktów. Dla tych, które zwracają wartość logiczną , oznacza produkty jako .TRUE‘Defective’ W przypadku każdego produktu zwracającego wartość FALSE, a zatem niewyprodukowanego w tygodniu księżycowym do 12 stycznia, oznacza ona produkty jako ‘Faultless’.
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ć!