# inlunarweek funkcja skryptu i funkcja wykresu

Ta funkcja sprawdza, czy wartość timestamp należy do tygodnia księżycowego zawierającego wartość base\_date. Tygodnie księżycowe w Qlik Sense są zdefiniowane przez uznanie 1 stycznia za pierwszy dzień tygodnia. Każdy tydzień, z wyjątkiem ostatniego tygodnia roku, będzie zawierał dokładnie siedem dni.

Składnia:

InLunarWeek (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.

Funkcja `inlunarweek()` sprawdza, do którego tygodnia księżycowego należy `base_date`. Następnie zwraca wynik logiczny po określeniu, czy każdy znacznik czasu wypada w tym samym tygodniu księżycowym co `base_date`.

Schemat funkcji `inlunarweek()`

Schemat funkcji `inlunarweek()`

Schemat funkcji `inlunarweek()`inlunarweek() ![Przykładowy diagram funkcji inlunarweek, 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-inlunarweek-overview.png)

## Kiedy używać inlunarweek

Funkcja `inlunarweek()` zwraca wynik logiczny. Zazwyczaj tego typu funkcji używa się jako warunku 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 księżycowym.

Na przykład funkcja `inlunarweek()` może służyć do identyfikacji całego sprzętu wyprodukowanego w danym tygodniu księżycowym.

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

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `inlunarweek('01/12/2013', '01/14/2013',<br>0)` | Zwraca `TRUE`, ponieważ wartość `timestamp`, 01/12/2013, wypada w tygodniu od 01/08/2013 do 01/14/2013. |
| `inlunarweek('01/12/2013', '01/07/2013',<br>0)` | Zwraca `FALSE`, ponieważ `base_date` 01/07/2013 wypada w tygodniu księżycowym zdefiniowanym jako obejmujący dni od 01/01/2013 do 01/07/2013. |
| `inlunarweek('01/12/2013', '01/14/2013',<br>-1)` | Zwraca wartość `FALSE`. Nadanie argumentowi period\_no wartości -1 powoduje przesunięcie tygodnia do poprzedniego tygodnia, od 01/01/2013 do 01/07/2013. |
| `inlunarweek('01/07/2013', 01/14/2013',<br>-1)` | Zwraca wartość `TRUE`. W odróżnieniu od poprzedniego przykładu, `timestamp` przypada w następnym tygodniu po uwzględnieniu przesunięcia do tyłu. |
| `inlunarweek('01/11/2006', '01/08/2006',<br>0, 3)` | Zwraca wartość `FALSE`. Jeśli argumentowi `first_week_day` przypiszemy wartość 3, to początek roku będzie obliczany od 01/04/2013. W związku z tym wartość `base`\_date wypada w pierwszym tygodniu, a wartość `timestamp` wypada w tygodniu od 01/11/2013 do 01/17/2013. |

Funkcja `inlunarweek()` 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 transakcji zawartych w styczniu, który jest ładowany do tabeli o nazwie `Transactions`.

* Pole daty zostało podane w formacie `DateFormat` zmiennej systemowej (MM/DD/YYYY).

Utwórz pole, `in_lunar_week`, określające czy transakcje miały miejsce w tym samym tygodniu księżycowym, w którym wypada data 10 stycznia.

Skrypt ładowania

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

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/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`

Tabela wynikowa

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

Funkcja `inlunarweek()`, przykład podstawowy

Funkcja `inlunarweek()`, przykład podstawowy

Funkcja `inlunarweek()`inlunarweek(), przykład podstawowy ![Przykład użycia funkcji inlunarweek 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-inlunarweek-basic-example.png)

Pole `in_lunar_week` jest tworzone w instrukcji ładowania poprzedzającego za pomocą funkcji `inlunarweek()`. Następnie do funkcji zostają przekazane następujące argumenty:

* Pole `date`

* Data 10 stycznia wpisana bezpośrednio w kod jako `base_date`

* Argument `period_no` 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 i kończącym się 14 stycznia. 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/inlunarweek.htm)

#### Przykłady 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.

* Pole daty zostało podane w formacie zmiennej systemowej `DateFormat` (MM/DD/YYYY).

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 księżycowe po 10 stycznia.

Skrypt ładowania

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

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 2) as [2_lunar_weeks_later]
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/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/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | 0 |
| 1/9/2022 | 0 |
| 1/10/2022 | 0 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | -1 |
| 1/23/2022 | -1 |

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

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

Funkcja `inlunarweek()`inlunarweek(), przykład z użyciem argumentu period\_no ![Funkcja inlunarweek, przykład z użyciem argumentu period_no](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-period-no.png)

W tym przykładzie, ponieważ do funkcji `inlunarweek()` jako wartość przesunięcia przekazano argument `period_no` o wartości 2, jako tydzień, według którego mają być sprawdzane transakcje, został zdefiniowany tydzień zaczynający się dnia 22 stycznia. W związku z tym każda transakcja, która ma miejsce między 22 a 28 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/inlunarweek.htm)

#### Skrypt ładowania i wyniki

Przegląd

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

Skrypt ładowania używa tego samego zestawu danych i zastosowania co w pierwszym przykładzie. Jednak w tym przykładzie ustawiamy początek tygodni księżycowych na 6 stycznia.

* 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_day` o wartości. W ten sposób ustawiamy początek tygodni księżycowych na dzień 5 stycznia.

Skrypt ładowania

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

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0,5) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/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`

Tabela wynikowa

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | -1 |
| 1/7/2022 | -1 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

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

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

Funkcja `inlunarweek()`inlunarweek(), przykład z argumentem first\_week\_day ![Przykład użycia funkcji inlunarweek 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-inlunarweek-first-week-day.png)

W tym przykładzie przekazaliśmy funkcji `inlunarweek()` argument `first_week_date` o wartości 5, który przesuwa początek tygodnia księżycowego na 6 stycznia. W efekcie 10 stycznia wypada w tygodniu księżycowym zaczynającym się 6 stycznia i kończącym się 12 stycznia. Wszelkie transakcje mające miejsce między tymi dwiema datami będą zwracać logiczną wartość `TRUE`.

## Przykład 4 – obiekt wykresu

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

#### Skrypt ładowania i wyrażenie wykresu:

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.

* Pole daty zostało podane w formacie zmiennej systemowej DateFormat (MM/DD/YYYY).

Jednak w tym przykładzie do aplikacji został załadowany niezmieniony zbiór danych. Obliczenia określające, czy transakcje miały miejsce w tym samym tygodniu księżycowym, w którym wypada 10 stycznia, jest tworzone jako miara w obiekcie wykresu aplikacji.

Skrypt ładowania

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

Transactions:
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar: date.

Aby obliczyć, czy transakcja ma miejsce w tygodniu księżycowym obejmującym 10 stycznia, utwórz następującą miarę:

= inlunarweek(date,'01/10/2022', 0)

Tabela wynikowa

| date | =inlunarweek(date,'01/10/2022', 0) |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

## Przykład 5 — zastosowanie

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

#### Skrypt ładowania i wyrażenie 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. Użytkownik końcowy chciałby, aby obiekt wykresu wyświetlał według tygodni księżycowych informację, czy produkty były wadliwe, czy bez wad oraz koszt produktów wytworzonych w danym miesiącu.

Skrypt ładowania

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

Transactions:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

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:

   =lunarweekname(manufacture\_date)

3. Utwórz miarę, aby określić, które produkty są wadliwe, a które bez wad za pomocą funkcji inlunarweek():

   =if(only(inlunarweek(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.

6. W sekcji Wygląd wyłącz Sumy.

Tabela wynikowa

| lunarweekname(manufacture\_date) | =if(only(inlunarweek(manufacture\_date,makedate(2022,01,12),0)), 'Defective','Faultless') | sum(cost\_price) |
| --- | --- | --- |
| 2022/01 | Faultless | $125.79 |
| 2022/02 | Defective | $316.38 |
| 2022/03 | Faultless | $455.75 |
| 2022/04 | Faultless | $146.09 |

Funkcja inlunarweek() zwraca wartość logiczną podczas oceny dat wytworzenia każdego z produktów. W przypadku każdego produktu wyprodukowanego w tygodniu obejmującym 10 stycznia funkcja inlunarweek() zwraca wartość logiczną TRUE i oznacza produkty jako wadliwe. Każdy produkt, dla którego jest zwracana wartość FALSE, a zatem niewyprodukowany w tym tygodniu, oznacza jako pozbawiony wad.