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.
Diagram funkcji inweektodate
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 aplikacji.
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():
Diagram kalendarza pokazujący daty transakcji, które zwrócą wynik logiczny TRUE
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.
Diagram kalendarza pokazujący daty transakcji, które zwrócą wynik logiczny TRUE
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.
Diagram kalendarza pokazujący daty transakcji, które zwrócą wynik logiczny TRUE
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.
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():
Diagram kalendarza pokazujący daty transakcji, które zwrócą wynik logiczny TRUE
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’.
Variable
A variable in Qlik Sense is a container storing a static value or a calculation, for example a numeric or alphanumeric value.
An aggregation is a calculation using multiple records in the source tables. Often it is a single field aggregated with a function such as sum, count, min, max, or average. For example, the sum of sales.
The term dataset is usually synonymous with table. It can refer to the original source table, the table after undergoing transformations, or the fact and dimension tables in a data mart.
A field is a data asset containing values, loaded from a data source. At a basic level, a field corresponds to a column in a table. Fields are used to create dimensions and measures in visualizations.
A preceding load is a script construct that allows you to load from the following LOAD or SELECT statement without specifying that source. Preceding loads are often faster than resident loads.
The load script is a sequence of statements that defines what data to load and how to link the different loaded tables. It can be generated with the Data manager, or with the Data load editor, where it also can be viewed and edited.
A measure is a calculation base on one ore more aggregations. For example, the sum of sales is a single aggregation, while the sum of sales divided by the count of customers is a measure based on two aggregations.
Sheets are components of Qlik Sense apps. They present visualizations to app users so they can explore, analyze, and discover data. Sheets can be public or private.
A dimension is an entity used to categorize data in a chart. For example, the slices in a pie chart or the bars of a bar chart represent individual values in a dimension. Dimensions are often a single field with discrete values, but can also be calculated in an expression.
A dimension is a dataset in a data mart that forms part of the star schema. Dimension datasets hold the descriptive information for all related fields that are included in the fact table’s records. A few common examples of dimension datasets are Customer and Product. Since the data in a dimension dataset is often denormalized, dimension datasets have a large number of columns.