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.
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 1 — 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 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ć!