# lunarweekstart – função de script e gráfico

Essa função retorna um valor correspondente a um carimbo de data/hora do primeiro milissegundo do primeiro dia da semana lunar que contém 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:

LunarweekStart(date[, period\_no[, first\_week\_day]])

Tipo de dados de retorno: dual

A função `lunarweekstart()` determina em qual semana lunar a `date` cai. Em seguida, ela retorna um carimbo de data/hora, em formato de data, para o primeiro milissegundo daquela semana.

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

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

Exemplo de diagrama da função `lunarweekstart()`lunarweekstart() ![Diagrama de exemplo mostrando como a função lunarweekstart converte uma data de entrada em um carimbo de data/hora para o primeiro milissegundo da semana lunar em que a data de entrada ocorre.](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-general.png)

Argumentos

| Argumento | Descrição |
| --- | --- |
| date | A data ou o carimbo de data/hora a ser avaliado. |
| period\_no | period\_no é um inteiro ou uma expressão que resolve um inteiro em que o valor 0 indica a semana lunar que contém 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

A função `lunarweekstart()` é comumente usada como parte de uma expressão quando o usuário deseja que o cálculo use a fração da semana decorrida até o momento. Diferentemente da função `weekstart()`, no início de cada novo ano civil, a semana começa em 1º de janeiro e cada semana subsequente começa sete dias depois. A função `lunarweekstart()` não é afetada pela `variável` de sistema FirstWeekDay.

Por exemplo, `lunarweekstart()` pode ser usado para calcular os juros acumulados em uma semana até o momento.

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `lunarweekstart('01/12/2013')` | Retorna 01/08/2013. |
| `lunarweekstart('01/12/2013', -1)` | Retorna 01/01/2013. |
| `lunarweekstart('01/12/2013', 0, 1<br>)` | Retorna 01/09/2013, porque definir first\_week\_day como 1 significa que o início do ano foi alterado para 01/02/2013. |

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

As configurações regionais padrão nos aplicativos são baseadas nas configurações regionais do sistema do computador ou servidor em que o Qlik Sense está instalado. Se o servidor Qlik Sense que você está acessando estiver definido como Suécia, o Editor de carregamento de dados usará as configurações regionais suecas para datas, horas e moedas. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Sense. O Qlik Sense será exibido no mesmo idioma do navegador que você está usando.

## Exemplo 1: sem argumentos adicionais

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.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:

* Um conjunto de dados contendo um conjunto de transações para 2022, que é carregado em uma tabela denominada `Transactions`.

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

* A criação de um campo, `start_of_week`, que retorna um carimbo de data/hora para o início da semana lunar em que as transações ocorreram.

Script de carregamento

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

Transactions:
    Load
        *,
        lunarweekstart(date) as start_of_week,
        timestamp(lunarweekstart(date)) as start_of_week_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Resultados

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

* `date`

* `start_of_week`

* `start_of_week_timestamp`

Tabela de resultados

| data | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/15/2022 | 1/15/2022 12:00:00 AM |
| 2/5/2022 | 02/05/2022 | 2/5/2022 12:00:00 AM |
| 2/28/2022 | 02/26/2022 | 2/26/2022 12:00:00 AM |
| 3/16/2022 | 03/12/2022 | 3/12/2022 12:00:00 AM |
| 4/1/2022 | 03/26/2022 | 3/26/2022 12:00:00 AM |
| 5/7/2022 | 05/07/2022 | 5/7/2022 12:00:00 AM |
| 5/16/2022 | 05/14/2022 | 5/14/2022 12:00:00 AM |
| 6/15/2022 | 06/11/2022 | 6/11/2022 12:00:00 AM |
| 6/26/2022 | 06/25/2022 | 6/25/2022 12:00:00 AM |
| 7/9/2022 | 07/09/2022 | 7/9/2022 12:00:00 AM |
| 7/22/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
| 7/23/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
| 7/27/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
| 8/2/2022 | 07/30/2022 | 7/30/2022 12:00:00 AM |
| 8/8/2022 | 08/06/2022 | 8/6/2022 12:00:00 AM |
| 8/19/2022 | 08/13/2022 | 8/13/2022 12:00:00 AM |
| 9/26/2022 | 09/24/2022 | 9/24/2022 12:00:00 AM |
| 10/14/2022 | 10/08/2022 | 10/8/2022 12:00:00 AM |
| 10/29/2022 | 10/29/2022 | 10/29/2022 12:00:00 AM |

O campo `start_of_week` é criado na instrução de carregamento anterior usando a função `lunarweekstart()` e transmitindo o campo `date` como o argumento da função.

A função `lunarweekstart()` identifica a semana lunar na qual a data cai, retornando um carimbo de data/hora para o primeiro milissegundo dessa semana.

Diagrama da função `lunarweekstart()`, exemplo sem argumentos adicionais

Diagrama da função `lunarweekstart()`, exemplo sem argumentos adicionais

Diagrama da função `lunarweekstart()`lunarweekstart(), exemplo sem argumentos adicionais![Diagrama mostrando como a função lunarweekstart converte a data de entrada de cada transação em um carimbo de data/hora para o primeiro milissegundo da semana lunar em que essa data ocorre.](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-no-add-arg.png)

A transação 8189 ocorreu em 19 de janeiro. A função `lunarweekstart()` identifica que a semana lunar começa em 15 de janeiro. Portanto, o valor `start_of_week` dessa transação retorna o primeiro milissegundo desse dia, que é 15 de janeiro às 12:00:00 AM.

## Exemplo 2: period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.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 criação de um campo `previous_lunar_week_start`, que retorna o carimbo de data/hora do início da semana antes da transação.

Script de carregamento

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

Transactions:
    Load
        *,
        lunarweekstart(date,-1) as previous_lunar_week_start,
        timestamp(lunarweekstart(date,-1)) as previous_lunar_week_start_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Resultados

Tabela de resultados

| data | previous\_lunar\_week\_start | previous\_lunar\_week\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/24/2021 | 12/24/2021 12:00:00 AM |
| 1/19/2022 | 01/08/2022 | 1/8/2022 12:00:00 AM |
| 2/5/2022 | 01/29/2022 | 1/29/2022 12:00:00 AM |
| 2/28/2022 | 02/19/2022 | 2/19/2022 12:00:00 AM |
| 3/16/2022 | 03/05/2022 | 3/5/2022 12:00:00 AM |
| 4/1/2022 | 03/19/2022 | 3/19/2022 12:00:00 AM |
| 5/7/2022 | 04/30/2022 | 4/30/2022 12:00:00 AM |
| 5/16/2022 | 05/07/2022 | 5/7/2022 12:00:00 AM |
| 6/15/2022 | 06/04/2022 | 6/4/2022 12:00:00 AM |
| 6/26/2022 | 06/18/2022 | 6/18/2022 12:00:00 AM |
| 7/9/2022 | 07/02/2022 | 7/2/2022 12:00:00 AM |
| 7/22/2022 | 07/09/2022 | 7/9/2022 12:00:00 AM |
| 7/23/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
| 7/27/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
| 8/2/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
| 8/8/2022 | 07/30/2022 | 7/30/2022 12:00:00 AM |
| 8/19/2022 | 08/06/2022 | 8/6/2022 12:00:00 AM |
| 9/26/2022 | 09/17/2022 | 9/17/2022 12:00:00 AM |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/22/2022 | 10/22/2022 12:00:00 AM |

Nesse caso, como um `period_no` de -1 foi usado como argumento de deslocamento na função `lunarweekstart()`, a função primeiro identifica a semana lunar em que as transações ocorrem. Em seguida, ela muda uma semana antes e identifica o primeiro milissegundo dessa semana lunar.

Diagrama da função `lunarweekstart()`, exemplo de period\_no

Diagrama da função `lunarweekstart()`, exemplo de period\_no

Diagrama da função `lunarweekstart()`lunarweekstart(), exemplo de period\_no![Diagrama mostrando como a função lunarweekstart converte a data de entrada de cada transação em um carimbo de data/hora para o primeiro milissegundo da semana lunar em que essa data ocorre.](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-period-no.png)

A transação 8189 ocorreu em 19 de janeiro. A função `lunarweekstart()` identifica que a semana lunar começa em 15 de janeiro. Portanto, a semana lunar anterior começou em 8 de janeiro às 12h00; esse é o valor retornado para o campo `previous_lunar_week_start`.

## Exemplo 3: first\_week\_day

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.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. Neste exemplo, definimos que as semanas lunares devem começar em 5 de janeiro.

Script de carregamento

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

Transactions:
    Load
        *,
        lunarweekstart(date,0,4) as start_of_week,
        timestamp(lunarweekstart(date,0,4)) as start_of_week_timestamp
        ;
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
]; 
```

Resultados

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

* `date`

* `start_of_week`

* `start_of_week_timestamp`

Tabela de resultados

| data | start\_of\_week | start\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/05/2022 | 1/5/2022 12:00:00 AM |
| 1/19/2022 | 01/19/2022 | 1/19/2022 12:00:00 AM |
| 2/5/2022 | 02/02/2022 | 2/2/2022 12:00:00 AM |
| 2/28/2022 | 02/23/2022 | 2/23/2022 12:00:00 AM |
| 3/16/2022 | 03/16/2022 | 3/16/2022 12:00:00 AM |
| 4/1/2022 | 03/30/2022 | 3/30/2022 12:00:00 AM |
| 5/7/2022 | 05/04/2022 | 5/4/2022 12:00:00 AM |
| 5/16/2022 | 05/11/2022 | 5/11/2022 12:00:00 AM |
| 6/15/2022 | 06/15/2022 | 6/15/2022 12:00:00 AM |
| 6/26/2022 | 06/22/2022 | 6/22/2022 12:00:00 AM |
| 7/9/2022 | 07/06/2022 | 7/6/2022 12:00:00 AM |
| 7/22/2022 | 07/20/2022 | 7/20/2022 12:00:00 AM |
| 7/23/2022 | 07/20/2022 | 7/20/2022 12:00:00 AM |
| 7/27/2022 | 07/27/2022 | 7/27/2022 12:00:00 AM |
| 8/2/2022 | 07/27/2022 | 7/27/2022 12:00:00 AM |
| 8/8/2022 | 08/03/2022 | 8/3/2022 12:00:00 AM |
| 8/19/2022 | 08/17/2022 | 8/17/2022 12:00:00 AM |
| 9/26/2022 | 09/21/2022 | 9/21/2022 12:00:00 AM |
| 10/14/2022 | 10/12/2022 | 10/12/2022 12:00:00 AM |
| 10/29/2022 | 10/26/2022 | 10/26/2022 12:00:00 AM |

Nesse caso, como o argumento `first_week_date` de 4 é usado na função `lunarweekstart()`, ele desloca o início do ano de 1º de janeiro a 5 de janeiro.

Diagrama da função `lunarweekstart()`, exemplo de first\_week\_day

Diagrama da função `lunarweekstart()`, exemplo de first\_week\_day

Diagrama da função `lunarweekstart()`lunarweekstart(), exemplo de first\_week\_day![ADD ALT TEXT HERE.....!!!!!!](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-first-week-day.png)

A transação 8189 ocorreu em 19 de janeiro. Como as semanas lunares começam em 5 de janeiro, a função `lunarweekstart()` identifica que a semana lunar contendo 19 de janeiro também começa em 19 de janeiro às 12:00:00 AM. Portanto, esse é o valor retornado para o campo `start_of_week`.

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.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 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 retorna um carimbo de data/hora para o início da semana lunar em que as transações ocorreram é criado como uma medida em um objeto de gráfico do aplicativo.

Script de carregamento

```
Transactions:
Load
*
Inline 
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

Resultados

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

Adicione as seguintes medidas:

=lunarweekstart(date)

=timestamp(lunarweekstart(date))

Tabela de resultados

| data | =lunarweekstart(date) | =timestamp(lunarweekstart(date)) |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/15/2022 | 1/15/2022 12:00:00 AM |
| 2/5/2022 | 02/05/2022 | 2/5/2022 12:00:00 AM |
| 2/28/2022 | 02/26/2022 | 2/26/2022 12:00:00 AM |
| 3/16/2022 | 03/12/2022 | 3/12/2022 12:00:00 AM |
| 4/1/2022 | 03/26/2022 | 3/26/2022 12:00:00 AM |
| 5/7/2022 | 05/07/2022 | 5/7/2022 12:00:00 AM |
| 5/16/2022 | 05/14/2022 | 5/14/2022 12:00:00 AM |
| 6/15/2022 | 06/11/2022 | 6/11/2022 12:00:00 AM |
| 6/26/2022 | 06/25/2022 | 6/25/2022 12:00:00 AM |
| 7/9/2022 | 07/09/2022 | 7/9/2022 12:00:00 AM |
| 7/22/2022 | 07/16/2022 | 7/16/2022 12:00:00 AM |
| 7/23/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
| 7/27/2022 | 07/23/2022 | 7/23/2022 12:00:00 AM |
| 8/2/2022 | 07/30/2022 | 7/30/2022 12:00:00 AM |
| 8/8/2022 | 08/06/2022 | 8/6/2022 12:00:00 AM |
| 8/19/2022 | 08/13/2022 | 8/13/2022 12:00:00 AM |
| 9/26/2022 | 09/24/2022 | 9/24/2022 12:00:00 AM |
| 10/14/2022 | 10/08/2022 | 10/8/2022 12:00:00 AM |
| 10/29/2022 | 10/29/2022 | 10/29/2022 12:00:00 AM |

A medida start\_of\_week é criada no objeto de gráfico usando a função lunarweekstart() e transmitindo o campo de data como o argumento da função.

A função lunarweekstart() identifica em qual semana lunar o valor da data cai, retornando um carimbo de data/hora para o último milissegundo dessa semana.

Diagrama da função lunarweekstart(), exemplo de objeto de gráfico

Diagrama da função lunarweekstart(), exemplo de objeto de gráfico

Diagrama da função lunarweekstart()lunarweekstart(), exemplo de objeto de gráfico![Diagrama mostrando como a função lunarweekstart converte a data de entrada de cada transação em um carimbo de data/hora para o primeiro milissegundo da semana lunar em que essa data ocorre.](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekstart-examples-chart-object.png)

A transação 8189 ocorreu em 19 de janeiro. A função lunarweekstart() identifica que a semana lunar começa em 15 de janeiro. Portanto, o valor de start\_of\_week dessa transação é o primeiro milissegundo desse dia, que é 15 de janeiro às 12h00.

## Exemplo 5: Cenário

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekstart.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 contendo um conjunto de saldos de empréstimos, que é carregado em uma tabela denominada Loans.

* Dados que consistem em IDs de empréstimos, saldo no início da semana e taxa de juros simples cobrada em cada empréstimo por ano.

O usuário final deseja um objeto de gráfico que mostre, por ID de empréstimo, os juros atuais que foram acumulados em cada empréstimo na semana até o momento.

Script de carregamento

```
Loans:
Load
*
Inline 
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

Resultados

Faça o seguinte:

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

2. Adicione os seguintes campos como dimensões.

   * loan\_id

   * start\_balance

3. Em seguida, crie a seguinte medida para calcular os juros acumulados:

   =start\_balance\*(rate\*(today(1)-lunarweekstart(today(1)))/365)

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

Tabela de resultados

| loan\_id | start\_balance | =start\_balance\*(rate\*(today(1)- lunarweekstart (today(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $15.07 |
| 8189 | $15000.00 | $128.84 |
| 8190 | $17500.00 | $63.29 |
| 8191 | $21000.00 | $107.59 |
| 8192 | $90000.00 | $1139.18 |

A função lunarweekstart(), usando a data de hoje como seu único argumento, retorna a data de início do ano atual. Ao subtrair esse resultado da data atual, a expressão retorna o número de dias decorridos até o momento nesta semana.

Esse valor é então multiplicado pela taxa de juros e dividido por 365 para retornar a taxa de juros efetiva acumulada do período. O resultado é então multiplicado pelo saldo inicial do empréstimo para retornar os juros acumulados até o momento nesta semana.