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

Esta função descobre se timestamp está dentro da parte da semana lunar até e inclusive o último milissegundo da base\_date. As semanas lunares no Qlik Sense são definidas contando 1º de janeiro como o primeiro dia da semana e, além da última semana do ano, conterão exatamente sete dias.

Sintaxe:

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

Exemplo de diagrama da função `inlunarweektodate()`

Exemplo de diagrama da função `inlunarweektodate()`

Exemplo de diagrama da função `inlunarweektodate()`inlunarweektodate() ![Exemplo de diagrama da função inlunarweektodate, 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-inlunarweektodate-overview.png)

A função `inlunarweektodate()` atua como o ponto final da semana lunar. Por outro lado, a função `inlunarweek()` determina em qual semana lunar a `base_date` cai. Por exemplo, se `base_date` fosse 5 de janeiro, qualquer carimbo de data/hora entre 1º de janeiro e 5 de janeiro retornaria um resultado booleano de `TRUE`, enquanto as datas de 6 e 7 de janeiro e posteriores retornariam um resultado booleano de `FALSE`.

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

## Quando usar inlunarweektodate

A função `inlunarweektodate()` retorna um resultado booleano. Normalmente, esse tipo de função será usado como uma condição em uma expressão IF. A função `inlunarweektodate()` seria usada quando o usuário quisesse que o cálculo retornasse uma agregação ou um cálculo, dependendo se a data avaliada ocorreu durante um determinado segmento da semana em questão.

Por exemplo, a função `inlunarweektodate()` pode ser usada para identificar todos os equipamentos fabricados em uma determinada semana até e incluindo uma data específica.

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `inlunarweektodate('01/12/2013', '01/13/2013',<br>						0)` | Retorna `TRUE`, já que o valor de `timestamp`, 01/12/2013, cai na parte da semana de 01/08/2013 a 01/13/2013. |
| `inlunarweektodate('01/12/2013', '01/11/2013',<br>						0)` | Retorna `FALSE`, já que o valor de `timestamp` é posterior ao valor de `base_date`, mesmo que as duas datas estejam na mesma semana lunar anterior a 01/12/2012. |
| `inlunarweektodate('01/12/2006', '01/05/2006',<br>						1)` | Retorna `TRUE`. Especificar um valor de 1 para `period_no` desloca a `base_date` para frente uma semana, assim, o valor de `timestamp` cai na parte da semana lunar. |

A função `inlunarweektodate()` é 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 contendo um conjunto de transações para o mês de janeiro, que é carregado em uma tabela denominada `Transactions`. A `variável` de sistema DateFormat padrão MM/DD/AAAA é usada.

* Crie um campo, `in_lunar_week_to_date`, que determina quais transações ocorreram na semana lunar até a data de 10 de janeiro.

Script de carregamento

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

Resultados

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

* `date`

* `in_lunar_week_to_date`

Tabela de resultados

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

Função `inlunarweektodate()`, sem argumentos adicionais

Função `inlunarweektodate()`, sem argumentos adicionais

Função `inlunarweektodate()`inlunarweektodate(), sem argumentos adicionais ![Exemplo do uso da função inlunarweektodate 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-inlunarweektodate-example-no-additional-arguments.png)

O campo `in_lunar_week_to_date` é criado na instrução de carregamento anterior usando a função `inlunarweektodate()` e transmitindo o campo `date`, uma data codificada para 10 de janeiro como `base_date` e um deslocamento de 0 como argumentos da função.

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, como estamos usando a função `inlunarweektodate()`, essa semana lunar terminaria no dia 10. 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/inlunarweektodate.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 contém o mesmo conjunto de dados e cenário do primeiro exemplo. 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 após a semana lunar até a data de 1º de janeiro.

Script de carregamento

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

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

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

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

função `inlunarweektodate()`inlunarweektodate(), exemplo de period\_no ![Exemplo do uso da função inlunarweektodate 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-inlunarweektodate-example-period-no.png)

Nesse caso, a função `inlunarweektodate()` determina que a semana lunar até 10 de janeiro equivale a três dias (8, 9, 10 de janeiro). Como um `period_no` de 2 foi usado como argumento offset, essa semana lunar é alterada em 14 dias. Portanto, isso define que a semana lunar de três dias incluirá 22, 23 e 24 de janeiro. Qualquer transação que ocorra entre 22 de janeiro e 24 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/inlunarweektodate.htm)

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

* 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_date` de 3. Isso define que as semanas lunares comecem em 3 de janeiro.

Script de carregamento

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

Resultados

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

* `date`

* `in_lunar_week_to_date`

Tabela de resultados

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

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

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

função `inlunarweektodate()`inlunarweektodate(), exemplo de first\_week\_day ![Exemplo do uso da função inlunarweektodate 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-inlunarweektodate-example-first-week-date.png)

Nesse caso, como o argumento `the first_week_date` de 3 é usado na função `inlunarweek()`, a primeira semana lunar será de 3 de janeiro a 10 de janeiro. Como 10 de janeiro também é `base_date`, qualquer transação que ocorra entre essas duas datas retornará um valor booleano de `TRUE`.

## Exemplo 4: Exemplo de objeto de gráfico

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

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 contém o mesmo conjunto de dados e cenário do primeiro exemplo.

No entanto, neste exemplo, o conjunto de dados inalterado é carregado no aplicativo. O cálculo que determina se as transações ocorreram na semana lunar até 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
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
];
```

Resultados

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

Crie a seguinte medida:

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

Tabela de resultados

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

Função inlunarweektodate(), exemplo de objeto de gráfico

Função inlunarweektodate(), exemplo de objeto de gráfico

Função inlunarweektodate()inlunarweektodate(), exemplo de objeto de gráfico ![Exemplo de diagrama do uso da função inlunarweektodate, usando uma expressão de gráfico determinando se uma transação ocorre na semana lunar que contém o dia 10 de janeiro.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweektodate-example-chart-object.png)

A medida in\_lunar\_week\_to\_date é criada no objeto de gráfico usando a função inlunarweektodate() e transmitindo o campo de data, uma data codificada para 10 de janeiro como base\_date e um deslocamento de 0 como os argumentos da função.

Como as semanas lunares começam em 1º de janeiro, 10 de janeiro cairia na semana lunar que começa em 8 de janeiro. Além disso, como estamos usando a função inlunarweektodate(), essa semana lunar terminaria no dia 10. 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 5: Cenário

#### Script de carregamento e expressões 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 fabricados na semana lunar de 12 de janeiro estavam com defeito. O problema foi resolvido em 13 de janeiro. O usuário final deseja um objeto de gráfico que mostre, por semana, o status que indica se os produtos fabricados estão "com defeito" ou "sem defeito", bem como o custo dos produtos fabricados naquela semana.

Script de carregamento

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

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 das semanas:

   =weekname(manufacture\_date)

3. Em seguida, crie uma dimensão que use a função inlunarweektodate() para identificar quais produtos estão com defeito e quais estão sem falhas:

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

Tabela de resultados

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

A função inlunarweektodate() retorna um valor booleano ao avaliar as datas de fabricação de cada um dos produtos. Para os casos que retornam um valor booleano de TRUE, ela marca os produtos como ‘Defective’. Para qualquer produto que retorne um valor de FALSE e, portanto, não tenha sido fabricado na semana lunar até 12 de janeiro, ela marca os produtos como ‘Faultless’.