# 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: Wartość 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/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-overview.png)

## Kiedy używać

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/sense/May2025/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/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

#### 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/sense/May2025/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/sense/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

| data | 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/sense/May2025/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/sense/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/sense/May2025/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/sense/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/sense/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.