# inlunarweek Função de script e de gráfico

Essa função determina se timestamp está dentro da semana lunar que contém base\_date. As semanas lunares no Qlik Sense são definidas contando 1º de janeiro como o primeiro dia da semana. Além da última semana do ano, cada semana conterá exatamente sete dias.

Sintaxe:

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

Tipo de dados de retorno: Booleano

Nota informativa

No Qlik Sense, o valor booleano “true” é representado por -1, e o valor falso é representado por 0.

A função `inlunarweek()` determina em qual semana lunar a `base_date` cai. Em seguida, ela retorna um resultado booleano depois de determinar se cada valor de carimbo de data/hora ocorre durante a mesma semana lunar que `base_date`.

Diagrama da função `inlunarweek()`

Diagrama da função `inlunarweek()`

Diagrama da função `inlunarweek()`inlunarweek() ![Exemplo de diagrama da função inlunarweek, mostrando as datas para as quais a função retornará um valor TRUE, dadas as informações de entrada.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-overview.png)

## Quando usar inlunarweek

A função `inlunarweek()` retorna um resultado booleano. Normalmente, esse tipo de função será usado como uma condição em uma expressão IF. Isso retornaria uma agregação ou cálculo dependendo se a data avaliada ocorreu durante a semana lunar em questão.

Por exemplo, a função `inlunarweek()` pode ser usada para identificar todos os equipamentos fabricados em uma determinada semana lunar.

Argumentos

| Argumento | Descrição |
| --- | --- |
| timestamp | A data que você deseja comparar com base\_date. |
| base\_date | Data que é usada para avaliar a semana lunar. |
| period\_no | A semana lunar pode ser deslocada por period\_no. period\_n é um inteiro, em que o valor 0 indica a semana lunar que contém base\_date. Valores negativos em period\_no indicam semanas lunares precedentes e valores positivos indicam semanas lunares sucessivas. |
| first\_week\_day | Um deslocamento que pode ser maior ou menor que zero. Isso muda o início do ano por um número determinado de dias e/ou frações de um dia. |

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `inlunarweek('01/12/2013', '01/14/2013',<br>0)` | Retorna `TRUE`, já que o valor de `timestamp`, 01/12/2013, cai na semana de 01/08/2013 a 01/14/2013. |
| `inlunarweek('01/12/2013', '01/07/2013',<br>0)` | Retorna `FALSE`, já que `base_date` 01/07/2013 está na semana lunar definida como 01/01/2013 a 01/07/2013. |
| `inlunarweek('01/12/2013', '01/14/2013',<br>-1)` | Retorna `FALSE`. Especificar um valor de period\_no como -1 muda a semana para a semana anterior, 01/01/2013 para 01/07/2013. |
| `inlunarweek('01/07/2013', 01/14/2013',<br>-1)` | Retorna `TRUE`. Em comparação com o exemplo anterior, `timestamp` está na semana seguinte, depois de considerar a mudança para trás. |
| `inlunarweek('01/11/2006', '01/08/2006',<br>0, 3)` | Retorna `FALSE`. Especificar um valor de 3 para `first_week_day` significa que o início do ano é calculado a partir de 01/04/2013. Portanto, o valor de `base`\_date cai na primeira semana, e o valor de `timestamp` cai na semana de 01/11/2013 a 01/17/2013. |

A função `inlunarweek()` é frequentemente usada em combinação com as seguintes funções:

Funções relacionadas

| Função | Interação |
| --- | --- |
| [lunarweekname Função de script e de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm) | Essa função é usada para determinar o número da semana lunar do ano em que ocorre uma data de entrada. |

## Configurações regionais

A menos que especificado de outra forma, os exemplos neste tópico usam o seguinte formato de data: MM/DD/AAAA. O formato de data é especificado na instrução `SET DateFormat` no seu script de carga de dados. A formatação de data padrão pode ser diferente no seu sistema devido às suas configurações regionais e outros fatores. Você pode alterar os formatos nos exemplos abaixo para atender às suas necessidades. Ou pode alterar os formatos no seu script de carregamento para corresponder a esses exemplos. Para obter mais informações, consulte [Modificando configurações regionais para aplicativos e scripts](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

As configurações regionais padrão nos aplicativos são baseadas no perfil do usuário. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Cloud. O Qlik Cloud será exibido no mesmo idioma do navegador que você está usando.

Se você for um criador de aplicativos, poderá definir a região padrão para os aplicativos que criar. Para obter mais informações, consulte [Definir suas configurações regionais preferidas para criar aplicativos e scripts no Qlik Cloud Analytics](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Exemplo 1: Nenhum argumento adicional

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados de transações para o mês de janeiro, que é carregado em uma tabela denominada `Transactions`.

* O campo de data foi fornecido no formato da variável de sistema `DateFormat` (MM/DD/AAAA).

Crie um campo, `in_lunar_week`, que determina se as transações ocorreram na mesma semana lunar de 10 de janeiro.

Script de carregamento

```
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
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `date`

* `in_lunar_week`

Tabela de resultados

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

Função `inlunarweek()`, exemplo básico

Função `inlunarweek()`, exemplo básico

Função `inlunarweek()`inlunarweek(), exemplo básico ![Exemplo do uso da função inlunarweek mostrando o intervalo de datas para o qual a função retornará um valor TRUE, dadas as informações de entrada.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-basic-example.png)

O campo `in_lunar_week` é criado na instrução de carregamento anterior usando a função `inlunarweek()` e transmitindo o seguinte como argumentos da função:

* O campo `date`

* Uma data codificada para 10 de janeiro como `base_date`

* Um `period_no` de 0

Como as semanas lunares começam em 1º de janeiro, 10 de janeiro cairia na semana lunar que começa em 8 de janeiro e termina em 14 de janeiro. Portanto, qualquer transação que ocorra entre essas duas datas em janeiro retornaria um valor booleano de `TRUE`. Isso é validado na tabela de resultados.

## Exemplo 2: period\_no

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

#### Exemplos e resultados:

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* O mesmo conjunto de dados e cenário do primeiro exemplo.

* O campo de data foi fornecido no formato da variável de sistema `DateFormat` (MM/DD/AAAA).

No entanto, neste exemplo, a tarefa é criar um campo, `2_lunar_weeks_later`, que determina se as transações ocorreram ou não duas semanas lunares após 10 de janeiro.

Script de carregamento

```
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
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `date`

* `2_lunar_weeks_later`

Tabela de resultados

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

função `inlunarweek()`, exemplo de period\_no

função `inlunarweek()`, exemplo de period\_no

função `inlunarweek()`inlunarweek(), exemplo de period\_no ![função inlunarweek, exemplo de period_no](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-period-no.png)

Nesse caso, como uma `period_no` de 2 foi usada como argumento offset na função `inlunarweek()`, a função define a semana que começa em 22 de janeiro como a semana lunar para validar transações. Portanto, qualquer transação que ocorra entre 22 e 28 de janeiro retornará um resultado booleano de `TRUE`.

## Exemplo 3: first\_week\_day

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

#### Script de carregamento e resultados

Visão geral

Abra o editor de carregamento de dados e adicione o script de carregamento abaixo em uma nova guia.

O script de carregamento usa o mesmo conjunto de dados e cenário do primeiro exemplo. No entanto, no exemplo, definimos que as semanas lunares começam em 6 de janeiro.

* O mesmo conjunto de dados e cenário do primeiro exemplo.

* A variável de sistema `DateFormat` padrão MM/DD/AAAA é usada.

* Um argumento `first_week_day` de 5. Isso define que as semanas lunares comecem em 5 de janeiro.

Script de carregamento

```
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
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `date`

* `in_lunar_week`

Tabela de resultados

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

função `inlunarweek()`, exemplo de first\_week\_day

função `inlunarweek()`, exemplo de first\_week\_day

função `inlunarweek()`inlunarweek(), exemplo de first\_week\_day ![Exemplo do uso da função inlunarweek mostrando o intervalo de datas para o qual a função retornará um valor TRUE, dadas as informações de entrada.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-first-week-day.png)

Nesse caso, como o argumento `first_week_date` de 5 é usado na função `inlunarweek()`, ele desloca o início do calendário da semana lunar para 6 de janeiro. Portanto, 10 de janeiro cai na semana lunar que começa em 6 de janeiro e termina em 12 de janeiro. Qualquer transação que esteja entre essas duas datas retornará um valor booleano de `TRUE`.

## Exemplo 4: Objeto de gráfico

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

#### Script de carregamento e expressão de gráfico:

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* O mesmo conjunto de dados e cenário do primeiro exemplo.

* O campo de data foi fornecido no formato da variável de sistema DateFormat (MM/DD/AAAA).

No entanto, neste exemplo, o conjunto de dados inalterado é carregado no aplicativo. O cálculo que determina se as transações ocorreram na mesma semana lunar de 10 de janeiro é criado como uma medida em um objeto de gráfico do aplicativo.

Script de carregamento

```
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
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão: date.

Para calcular se uma transação ocorre na semana lunar que contém 10 de janeiro, crie a seguinte medida:

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

Tabela de resultados

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

## Exemplo 5: Cenário

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

#### Script de carregamento e expressão de gráfico:

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela denominada Products.

* Informações que consistem em ID do produto, data de fabricação e preço de custo.

Foi identificado que, devido a um erro de equipamento, os produtos que foram fabricados na semana lunar que inclui 12 de janeiro estavam com defeito. O usuário final deseja um objeto de gráfico que mostre, por nome da semana lunar, o status que indica se os produtos fabricados estavam "com defeito" ou "sem defeito", bem como o custo dos produtos fabricados naquele mês.

Script de carregamento

```
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
];
```

Resultados

Faça o seguinte:

1. Carregue os dados e abra uma pasta. Crie uma nova tabela.

2. Crie uma dimensão para mostrar os nomes dos meses:

   =lunarweekname(manufacture\_date)

3. Crie uma medida para identificar quais produtos estão com defeito e quais estão sem defeito usando a função inlunarweek():

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

4. Crie uma medida para somar o cost\_price dos produtos:

   =sum(cost\_price)

5. Defina o Formato numérico da medida como Dinheiro.

6. Em Aparência, desative Totais.

Tabela de resultados

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

A função inlunarweek() retorna um valor booleano ao avaliar as datas de fabricação de cada um dos produtos. Para qualquer produto fabricado na semana lunar que contém 10 de janeiro, a função inlunarweek() retorna um valor booleano de TRUE e marca os produtos como “com defeito”. Para qualquer produto que retorne um valor de FALSE e, portanto, não tenha sido fabricado nessa semana, ela marca os produtos como “sem defeito”.