Ta funkcja zwraca wartość True, jeśli wartość timestamp należy do części tygodnia zawierającego wartość base_date, z dokładnością do ostatniej milisekundy wartości base_date włącznie.
W Qlik Sense wartość logiczna Prawda jest reprezentowana przez -1, a wartość Fałsz jest reprezentowana przez 0.
Funkcja inweektodate() używa parametru base_date do identyfikacji maksymalnej daty granicznej segmentu tygodnia, a także odpowiadającej mu daty początku tygodnia, która jest oparta na zmiennej systemowej FirstWeekDay (lub parametrze first_week_day zdefiniowanym przez użytkownika). Kiedy segment tygodnia zostanie zdefiniowany, funkcja zwraca wyniki logiczne podczas porównywania określonych wartości dat z tym segmentem.
Kiedy używać
Funkcja inweektodate() zwraca wynik logiczny. Zazwyczaj ten typ funkcji będzie używany jako warunek w wyrażeniu if. Spowoduje to zwrócenie agregacji lub obliczenia w zależności od tego, czy oceniana data nastąpiła w danym tygodniu do określonej daty włącznie.
Na przykład funkcja inweektodate() może służyć do obliczania wszystkich sprzedaży dokonanych w określonym tygodniu do określonej daty.
Argumenty
Argument
Opis
timestamp
Data, która ma być porównana z wartością base_date.
base_date
Data używana do oceny tygodnia.
period_no
Tydzień może zostać przesunięty o wartość period_no. period_no jest liczbą całkowitą, gdzie 0 oznacza tydzień zawierający wartość base_date. Wartości ujemne parametru period_no oznaczają tygodnie poprzednie, a wartości dodatnie — tygodnie następne.
first_week_day
Domyślnie pierwszym dniem tygodnia jest niedziela (zgodnie ze zmienną systemową FirstWeekDay), począwszy od północy między sobotą a niedzielą. Parametr first_week_day zastępuje zmienną FirstWeekDay. Aby wskazać, że tydzień zaczyna się innego dnia, należy określić flagę w zakresie od 0 do 6.
W przypadku tygodnia rozpoczynającego się w poniedziałek i kończącego w niedzielę użyj flagi 0 dla poniedziałku, 1 dla wtorku, 2 dla środy, 3 dla czwartku, 4 dla piątku, 5 dla soboty i 6 dla niedzieli.
Przykłady funkcji
Przykład
Interakcja
inweektodate('01/12/2006', '01/12/2006', 0)
Zwraca wartość TRUE.
inweektodate('01/12/2006', '01/11/2006', 0)
Zwraca wartość FALSE.
inweektodate('01/12/2006', '01/18/2006', -1)
Zwraca wartość FALSE. Ponieważ period_no określono jako -1, dlatego data obowiązywania, względem której mierzy się timestamp, jest równa 01/11/2006.
inweektodate('01/11/2006', '01/12/2006', 0, 3 )
Zwraca FALSE, ponieważ wartość first_week_day określono jako 3 (czwartek), przez co 01/12/2006 staje się pierwszym dniem tygodnia następującego po tygodniu zawierającym 01/12/2006.
W pracy z tą funkcją mogą Ci pomóc poniższe tematy:
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 zestaw transakcji za styczeń 2022, który jest ładowany do tabeli o nazwie Transactions.
Pole danych podane w formacie TimestampFormat='M/D/YYYY h:mm:ss[.fff]'.
Utworzenie pola, in_week_to_date, które określa, jakie transakcje miały miejsce w tygodniu do 14 stycznia 2022 r.
Tworzenie dodatkowego pola o nazwie weekday przy użyciu funkcji weekday(). To nowe pole jest tworzone, aby pokazać, który dzień tygodnia odpowiada poszczególnym datom.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
week_day
in_week_to_date
Tabela wynikowa
date
week_day
in_week_to_date
2022-01-02 12:22:06
Nie
0
2022-01-05 01:02:30
Śro
0
2022-01-06 15:36:20
Thu
0
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Nie
-1
2022-01-10 21:13:01
Pon
-1
2022-01-11 00:57:13
Wto
-1
2022-01-12 09:26:02
Śro
-1
2022-01-13 15:05:09
Thu
-1
2022-01-14 18:44:57
Fri
-1
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Nie
0
2022-01-17 10:44:16
Pon
0
2022-01-18 18:48:17
Wto
0
2022-01-26 04:36:03
Śro
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Nie
0
2022-01-30 14:40:19
Nie
0
2022-01-31 05:28:21
Pon
0
Pole in_week_to_date jest tworzone w instrukcji ładowania poprzedzającego przy użyciu funkcji inweektodate(). Pierwszy podany argument określa, które pole jest oceniane. Drugi argument to ustalona data 14 stycznia — jest to argument base_date, który wskazuje tydzień do posegmentowania i identyfikuje granicę końcową tego segmentu. Argument period_no o wartości 0 jest ostatnim argumentem, co oznacza, że funkcja nie porównuje tygodni poprzedzających segmentowany tydzień ani następujących po nim.
Zmienna systemowa FirstWeekDay określa, że tygodnie zaczynają się w niedzielę i kończą w sobotę. W związku z tym styczeń zostałby podzielony na tygodnie zgodnie z poniższym wykresem, a daty między 9 a 14 stycznia stanowiłyby ważny okres dla obliczenia inweekdodate():
Wszelkie transakcje, które występują między 9 a 14 stycznia, zwracają jako wynik wartość logiczną TRUE. Transakcje przed i po tych datach zwracają wynik logiczny FALSE.
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, prev_week_to_date, które określa, jakie transakcje miały miejsce w pełnym tygodniu przed segmentem tygodnia kończącego się 14 stycznia 2022 r.
Tworzenie dodatkowego pola o nazwie weekday przy użyciu funkcji weekday(). Pokazuje, który dzień tygodnia odpowiada poszczególnym datom.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
week_day
prev_week_to_date
Tabela wynikowa
date
week_day
prev_week_to_date
2022-01-02 12:22:06
Nie
-1
2022-01-05 01:02:30
Śro
-1
2022-01-06 15:36:20
Thu
-1
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Nie
0
2022-01-10 21:13:01
Pon
0
2022-01-11 00:57:13
Wto
0
2022-01-12 09:26:02
Śro
0
2022-01-13 15:05:09
Thu
0
2022-01-14 18:44:57
Fri
0
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Nie
0
2022-01-17 10:44:16
Pon
0
2022-01-18 18:48:17
Wto
0
2022-01-26 04:36:03
Śro
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Nie
0
2022-01-30 14:40:19
Nie
0
2022-01-31 05:28:21
Pon
0
Wartość period_no równa -1 wskazuje, że funkcja inweektodate () porównuje wejściowy segment kwartału z poprzednim tygodniem. Segment tygodnia początkowo oznacza okres od 9 do 14 stycznia. Wartość period_no następnie przesuwa zarówno początkową, jak i końcową granicę tego segmentu do jednego tygodnia wcześniej, powodując, że datami granicznymi stają się 2 stycznia i 7 stycznia.
W związku z tym każda transakcja, która ma miejsce między 2 a 8 stycznia (ale bez uwzględniania 8 stycznia), zwróci wynik logicznyTRUE.
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.
Utworzenie pola, in_week_to_date, które określa, jakie transakcje miały miejsce w tygodniu do 14 stycznia 2022 r.
Tworzenie dodatkowego pola o nazwie weekday przy użyciu funkcji weekday(). Pokazuje, który dzień tygodnia odpowiada poszczególnym datom.
Na tym przykładzie jako pierwszy dzień tygodnia używany jest poniedziałek.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
date
week_day
in_week_to_date
Tabela wynikowa
date
week_day
in_week_to_date
2022-01-02 12:22:06
Nie
0
2022-01-05 01:02:30
Śro
0
2022-01-06 15:36:20
Thu
0
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Nie
0
2022-01-10 21:13:01
Pon
-1
2022-01-11 00:57:13
Wto
-1
2022-01-12 09:26:02
Śro
-1
2022-01-13 15:05:09
Thu
-1
2022-01-14 18:44:57
Fri
-1
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Nie
0
2022-01-17 10:44:16
Pon
0
2022-01-18 18:48:17
Wto
0
2022-01-26 04:36:03
Śro
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Nie
0
2022-01-30 14:40:19
Nie
0
2022-01-31 05:28:21
Pon
0
Kiedy używa się 0 jako argumentu first_week_day ] w funkcji inweektodate(), argument funkcji zastępuje zmienną systemową FirstWeekDay i ustawia poniedziałek jako pierwszy dzień tygodnia.
W związku z tym każda transakcja, która ma miejsce między 10 a 14 stycznia, zwróci wynik logiczny TRUE, podczas gdy transakcje z datami poza tymi granicami zwrócą wartość FALSE.
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. Obliczenie określające, które transakcje miały miejsce w tygodniu do 14 stycznia 2022 r., jest tworzone jako miara w obiekcie wykresu.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar: date.
Aby obliczyć, czy transakcje miały miejsce w tym samym tygodniu do 14 stycznia, utwórz następującą miarę:
=inweektodate(date,'01/14/2022',0)
Aby pokazać, który dzień tygodnia odpowiada poszczególnym datom, utwórz dodatkową miarę:
=weekday(date)
Tabela wynikowa
date
week_day
in_week_to_date
2022-01-02 12:22:06
Nie
0
2022-01-05 01:02:30
Śro
0
2022-01-06 15:36:20
Thu
0
2022-01-08 10:58:35
Sat
0
2022-01-09 08:53:32
Nie
-1
2022-01-10 21:13:01
Pon
-1
2022-01-11 00:57:13
Wto
-1
2022-01-12 09:26:02
Śro
-1
2022-01-13 15:05:09
Thu
-1
2022-01-14 18:44:57
Fri
-1
2022-01-15 06:10:46
Sat
0
2022-01-16 06:39:27
Nie
0
2022-01-17 10:44:16
Pon
0
2022-01-18 18:48:17
Wto
0
2022-01-26 04:36:03
Śro
0
2022-01-27 08:07:49
Thu
0
2022-01-28 12:24:29
Fri
0
2022-01-30 11:56:56
Nie
0
2022-01-30 14:40:19
Nie
0
2022-01-31 05:28:21
Pon
0
Pole in_week_to_date jest tworzone jako miara w obiekcie wykresu przy użyciu funkcji inweektodate(). Pierwszy podany argument określa, które pole jest oceniane. Drugi argument to ustalona data 14 stycznia — jest to argument base_date, który wskazuje tydzień do posegmentowania i identyfikuje granicę końcową tego segmentu. Argument period_no o wartości 0 jest ostatnim argumentem, co oznacza, że funkcja nie porównuje tygodni poprzedzających segmentowany tydzień ani następujących po nim.
Zmienna systemowa FirstWeekDay określa, że tygodnie zaczynają się w niedzielę i kończą w sobotę. W związku z tym styczeń zostałby podzielony na tygodnie zgodnie z poniższym wykresem, a daty między 9 a 14 stycznia stanowiłyby ważny okres dla obliczenia inweekdodate():
Wszelkie transakcje, które występują między 9 a 14 stycznia, zwracają jako wynik wartość logiczną TRUE. Transakcje przed i po tych datach zwracają wynik logiczny FALSE.
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 dotyczące identyfikatora produktu, daty produkcji i kosztu.
Stwierdzono, że z powodu błędu sprzętowego produkty wytworzone w tygodniu z 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 status produktów: „defective” (wadliwe) lub „faultless” (bez wad) oraz koszt produktów wytworzonych w danym tygodniu.
Funkcja inweektodate() 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 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ć!