# 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.

Składnia:

InLunarWeekToDate (timestamp, base\_date, period\_no [, first\_week\_day])

Typ zwracanych danych: Logiczna

Informacja

W Qlik Sense wartość logiczna Prawda jest reprezentowana przez -1, a wartość Fałsz jest reprezentowana przez 0.

Przykładowy diagram funkcji `inlunarweektodate()`

Przykładowy diagram funkcji `inlunarweektodate()`

Przykładowy diagram funkcji `inlunarweektodate()`inlunarweektodate() ![Przykładowy diagram funkcji inlunarweektodate, pokazujący daty, dla których funkcja ta zwróci prawdę, na podstawie podanych informacji wejściowych.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweektodate-overview.png)

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ć inlunarweektodate

Funkcja `inlunarweektodate()` zwraca wynik logiczny. Zazwyczaj tego typu funkcji używa się jako warunku 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',<br>						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',<br>						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',<br>						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:

Powiązane funkcje

| Funkcja | Interakcja |
| --- | --- |
| [lunarweekname funkcja skryptu i funkcja wykresu](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm) | 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/YYYY. 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](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

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.

Jeżeli jesteś twórcą aplikacji, możesz wybrać domyślny region dla tworzonych przez siebie aplikacji. Więcej informacji zawiera temat [Ustawianie preferowanych ustawień regionalnych do tworzenia aplikacji i skryptów w Analityka Qlik Cloud](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Przykład 1 — bez dodatkowych argumentów

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

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 pole `in_lunar_week_to_date`, określające które transakcje miały miejsce w tygodniu księżycowym do daty 10 stycznia.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inlunarweektodate(date,'01/10/2022', 0) as in_lunar_week_to_date
        ;
Load
*
Inline 
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

Wyniki

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

| date | 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 |

Funkcja `inlunarweektodate()`, bez dodatkowych argumentów

Funkcja `inlunarweektodate()`, bez dodatkowych argumentów

Funkcja `inlunarweektodate()`inlunarweektodate(), bez dodatkowych argumentów ![Przykład użycia funkcji inlunarweektodate przedstawiający zakres dat, dla którego funkcja zwróci prawdę na podstawie informacji wejściowych.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweektodate-example-no-additional-arguments.png)

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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inlunarweektodate.htm)

#### Skrypt ładowania i wyniki

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.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';
Transactions:
    Load
        *,
        inlunarweektodate(date,'01/10/2022', 2) as [2_lunar_weeks_later]
        ;
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `date`

* `2_lunar_weeks_later`

Tabela wynikowa

| date | 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 |

Funkcja `inlunarweektodate()`, przykład z użyciem argumentu period\_no

Funkcja `inlunarweektodate()`, przykład z użyciem argumentu period\_no

Funkcja `inlunarweektodate()`inlunarweektodate(), przykład z użyciem argumentu period\_no ![Przykład użycia funkcji inlunarweektodate przedstawiający zakres dat, dla którego funkcja zwróci prawdę na podstawie informacji wejściowych.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweektodate-example-period-no.png)

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

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inlunarweektodate.htm)

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Ten sam zestaw danych i zastosowanie 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.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY'; 

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0,3) as in_lunar_week_to_date
        ;
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

Wyniki

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

| date | 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 |

Funkcja `inlunarweektodate()`, przykład z argumentem first\_week\_day

Funkcja `inlunarweektodate()`, przykład z argumentem first\_week\_day

Funkcja `inlunarweektodate()`inlunarweektodate(), przykład z argumentem first\_week\_day ![Przykład użycia funkcji inlunarweektodate przedstawiający zakres dat, dla którego funkcja zwróci prawdę na podstawie informacji wejściowych.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweektodate-example-first-week-date.png)

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

#### Skrypt ładowania i wyrażenie 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.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Transactions: 
Load
*
Inline
[
id,date,amount
8188,'1/10/2022',37.23
8189,'1/17/2022',17.17
8190,'1/26/2022',88.27
8191,'1/12/2022',57.42
8192,'1/19/2022',53.80
8193,'1/21/2022',82.06
8194,'1/1/2022',40.39
8195,'1/27/2022',87.21
8196,'1/11/2022',95.93
8197,'1/29/2022',45.89
8198,'1/31/2022',36.23
8199,'1/18/2022',25.66
8200,'1/23/2022',82.77
8201,'1/15/2022',69.98
8202,'1/4/2022',76.11
];
```

Wyniki

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

| date | =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 |

Funkcja inlunarweektodate(), przykład obiektu wykresu

Funkcja inlunarweektodate(), przykład obiektu wykresu

Funkcja inlunarweektodate()inlunarweektodate(), przykład obiektu wykresu ![Przykładowy schemat użycia funkcji inlunarweektodate, z wykorzystaniem wyrażenia wykresu określającego, czy transakcja ma miejsce w tygodniu księżycowym obejmującym datę 10 stycznia.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweektodate-example-chart-object.png)

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 — zastosowanie

#### Skrypt ładowania i wyrażenia wykresu

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

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.

Skrypt ładowania

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff]';

Products:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
8188,'01/02/2022 12:22:06',37.23
8189,'01/05/2022 01:02:30',17.17
8190,'01/06/2022 15:36:20',88.27
8191,'01/08/2022 10:58:35',57.42
8192,'01/09/2022 08:53:32',53.80
8193,'01/10/2022 21:13:01',82.06
8194,'01/11/2022 00:57:13',40.39
8195,'01/12/2022 09:26:02',87.21
8196,'01/13/2022 15:05:09',95.93
8197,'01/14/2022 18:44:57',45.89
8198,'01/15/2022 06:10:46',36.23
8199,'01/16/2022 06:39:27',25.66
8200,'01/17/2022 10:44:16',82.77
8201,'01/18/2022 18:48:17',69.98
8202,'01/26/2022 04:36:03',76.11
8203,'01/27/2022 08:07:49',25.12
8204,'01/28/2022 12:24:29',46.23
8205,'01/30/2022 11:56:56',84.21
8206,'01/30/2022 14:40:19',96.24
8207,'01/31/2022 05:28:21',67.67
];
```

Wyniki

Wykonaj następujące czynności:

1. Załaduj dane i otwórz arkusz. Utwórz nową tabelę.

2. Utwórz wymiar, aby pokazać nazwy tygodni:

   =weekname(manufacture\_date)

3. Następnie utwórz wymiar określający za pomocą funkcji inlunarweektodate(), które produkty są wadliwe, a które są bez wad:

   =if(inlunarweektodate(manufacture\_date,makedate(2022,01,12),0),'Defective','Faultless')

4. Utwórz miarę, aby zsumować cost\_price produktów:

   =sum(cost\_price)

5. Ustaw Formatowanie liczb miary na Waluta.

Tabela wynikowa

| lunarweekname(manufacture\_date) | =if(InLunarWeekToDate(manufacture\_date,makedate(2022,01,12),0),'Defective','Faultless') | =Sum(cost\_price) |
| --- | --- | --- |
| 2022/01 | Faultless | $142.67 |
| 2022/02 | Defective | $320.88 |
| 2022/02 | Faultless | $141.82 |
| 2022/03 | Faultless | $214.64 |
| 2022/04 | Faultless | $147.46 |
| 2022/05 | Faultless | $248.12 |

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’.