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

Essa função retorna uma data calculada a partir do ano, do número da semana e do dia da semana.

Sintaxe:

MakeWeekDate(weekyear [, week [, weekday [, first\_week\_day [, broken\_weeks [, reference\_day]]]]])

Tipo de dados de retorno: dual

A função `makeweekdate()` está disponível como função de script e gráfico. Ela calculará a data com base nos parâmetros informados para a função.

Argumentos

| Argumento | Descrição |
| --- | --- |
| weekyear | O ano definido pela função `WeekYear()` para a data específica, ou seja, o ano ao qual o número da semana pertence.<br><br>Nota informativaEm alguns casos, o ano da semana pode ser diferente do ano civil, por exemplo, se a semana 1 começar já em dezembro do ano anterior. |
| week | O número da semana, conforme definido pela função `Week()` para a data específica.<br><br>Se nenhum número da semana for declarado, assume-se 1. |
| weekday | O dia da semana definido pela função `WeekDay()` para a data em questão. 0 é o primeiro dia da semana e 6 é o último dia da semana.<br><br>Se nenhum dia da semana for informado, assume-se 0.<br><br>Nota informativaEmbora 0 sempre signifique o primeiro dia da semana e 6 seja sempre o último, os dias da semana a que correspondem são determinados pelo parâmetro first\_week\_day. Se omitido, o valor da variável FirstWeekDay será usado.<br><br>Se semanas interrompidas forem usadas, juntamente com uma combinação impossível de parâmetros, isso poderá levar a um resultado que não pertence ao ano escolhido.<br><br>Exemplo:<br><br>```<br>MakeWeekDate(2021,1,0,6,1)<br>```<br><br>Retorna '27 de dezembro de 2020', pois esse dia é o primeiro dia (o domingo) da semana especificada. 1º de janeiro de 2021 foi uma sexta-feira. |
| first\_week\_day | Especifica o dia no qual inicia a semana. Se omitido, o valor da variável FirstWeekDay é usado.<br><br>Os valores possíveis first\_week\_day são 0 para segunda-feira, 1 para terça, 2 para quarta-feira, 3 para quinta-feira, 4 para sexta-feira, 5 para sábado e 6 para domingo.<br><br>Para obter mais informações sobre a variável de sistema, consulte [FirstWeekDay](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |
| broken\_weeks | Se você não especificar broken\_weeks, o valor da variável BrokenWeeks será usado para definir se as semanas estão interrompidas ou não.<br><br>Para obter mais informações sobre a variável de sistema, consulte [BrokenWeeks](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm) |
| reference\_day | Se você não especificar reference\_day, o valor da variável ReferenceDay será usado para definir qual dia de janeiro definir como dia de referência para definir a semana 1.<br><br>Para obter mais informações sobre a variável de sistema, consulte [ReferenceDay](https://help.qlik.com/pt-BR/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm) |

## Quando usar

A função `makeweekdate()` normalmente seria usada no script para geração de dados, para gerar uma lista de datas ou criar datas em que o ano, a semana e o dia da semana são fornecidos nos dados de entrada.

Os exemplos a seguir pressupõem que:

```
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
```

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `makeweekdate(2014,6,6)` | retorna 02/09/2014 |
| `makeweekdate(2014,6,1)` | retorna 02/04/2014 |
| `makeweekdate(2014,6)` | retorna 02/03/2014 (dia da semana 0 é exibido) |

## 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: dia incluído

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.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 o total de vendas semanais para 2022 em uma tabela denominada `Sales`.

* As datas das transações são fornecidas em três campos: `year`, `week` e `sales`.

* Um carregamento anterior, usada para criar uma medida `end_of_week`, usando a função `makeweekdate()` para retornar a data da sexta-feira dessa semana no formato MM/DD/AAAA.

Para provar que a data retornada é uma sexta-feira, a expressão `end_of_week` também é incluída na função `weekday()` para mostrar o dia da semana.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Transactions:
    Load
        *,
        makeweekdate(transaction_year, transaction_week,4) as end_of_week,
        weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
        ; 
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Resultados

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

* `transaction_year`

* `transaction_week`

* `end_of_week`

* `week_day`

Tabela de resultados

| transaction\_year | transaction\_week | end\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Sex |
| 2022 | 02 | 01/14/2022 | Sex |
| 2022 | 03 | 01/21/2022 | Sex |
| 2022 | 04 | 01/28/2022 | Sex |
| 2022 | 05 | 02/04/2022 | Sex |
| 2022 | 06 | 02/11/2022 | Sex |
| 2022 | 07 | 02/18/2022 | Sex |

O campo `end_of_week` é criado na instrução de carregamento anterior usando a função `makeweekdate()`. Os campos `transaction_year`, `transaction_week` são informados pela função como argumentos de ano e semana. Um valor de 4 é usado para o argumento “day”.

A função então combina e converte esses valores em um campo de data, retornando os resultados no formato da variável de sistema `DateFormat`.

A função `makeweekdate()` e seus argumentos também são agrupados em uma função `weekday()` para retornar o campo `week_day`; e, como pode ser visto na tabela acima, o campo `week_day` mostra que essas datas ocorrem em uma sexta-feira.

## Exemplo 2: dia excluído

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.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 os totais de vendas semanais para 2022 em uma tabela denominada Sales.

* As datas das transações são fornecidas em três campos: year, week e sales.

* Um carregamento anterior, usado para criar uma medida, first\_day\_of\_week, usando a função makeweekdate(). Isso retornará a data de segunda-feira dessa semana no formato MM/DD/AAAA.

Para provar que a data retornada é uma segunda-feira, a expressão first\_day\_of\_week também é incluída na função weekday() para mostrar o dia da semana.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Transactions:
    Load
        *,
        makeweekdate(transaction_year, transaction_week) as first_day_of_week,
        weekday(makeweekdate(transaction_year, transaction_week)) as week_day
        ; 
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Resultados

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

* transaction\_year

* transaction\_week

* first\_day\_of\_week

* week\_day

Tabela de resultados

| transaction\_year | transaction\_week | first\_day\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/03/2022 | Seg |
| 2022 | 02 | 01/10/2022 | Seg |
| 2022 | 03 | 01/17/2022 | Seg |
| 2022 | 04 | 01/24/2022 | Seg |
| 2022 | 05 | 01/31/2022 | Seg |
| 2022 | 06 | 02/07/2022 | Seg |
| 2022 | 07 | 02/14/2022 | Seg |

O campo first\_day\_of\_week é criado na instrução de carregamento anterior usando a função makeweekdate(). Os parâmetros transaction\_year e transaction\_week são informados como argumentos de função, e o parâmetro “day” é deixado em branco.

A função então combina e converte esses valores em um campo de data, retornando os resultados no formato da variável de sistema DateFormat.

A função makeweekdate() e seus argumentos também são agrupados em uma função weekday() para retornar o campo week\_day. Como pode ser visto na tabela acima, o campo week\_day retorna segunda-feira em todos os casos desde que esse parâmetro foi deixado em branco na função makeweekdate(), cujo padrão é 0 (primeiro dia da semana) e o primeiro dia da semana é definido como segunda-feira pela variável do sistema FirstWeekDay.

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.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 os totais de vendas semanais para 2022 em uma tabela denominada Sales.

* As datas das transações são fornecidas em três campos: year, week e sales.

Neste exemplo, um objeto de gráfico será usado para criar uma medida equivalente ao cálculo de end\_of\_week do primeiro exemplo. Essa medida usará a função makeweekdate() para retornar a data da sexta-feira daquela semana no formato MM/DD/AAAA.

Para provar que a data retornada é uma sexta-feira, uma segunda medida é criada para retornar o dia da semana.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Resultados

Faça o seguinte:

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

   * transaction\_year

   * transaction\_week

2. Para realizar o cálculo equivalente ao do campo end\_of\_week do primeiro exemplo, crie a seguinte medida:

   =makeweekdate(transaction\_year,transaction\_week,4)

3. Para calcular o dia da semana para cada transação, crie a seguinte medida:

   =weekday(makeweekdate(transaction\_year,transaction\_week,4))

Tabela de resultados

| transaction\_year | transaction\_week | =makeweekdate(transaction\_year,transaction\_week,4) | =weekday(makeweekdate(transaction\_year,transaction\_week,4)) |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Sex |
| 2022 | 02 | 01/14/2022 | Sex |
| 2022 | 03 | 01/21/2022 | Sex |
| 2022 | 04 | 01/28/2022 | Sex |
| 2022 | 05 | 02/04/2022 | Sex |
| 2022 | 06 | 02/11/2022 | Sex |
| 2022 | 07 | 02/18/2022 | Sex |

Um campo equivalente a end\_of\_week é criado no objeto de gráfico como uma medida usando a função makeweekdate(). Os campos transaction\_year e transaction\_week são transmitidos como argumentos “year” e “week”. Um valor de 4 é usado para o argumento “day”.

A função então combina e converte esses valores em um campo de data, retornando os resultados no formato da variável de sistema DateFormat.

A função makeweekdate() e seus argumentos também são agrupados em uma função weekday() para retornar um cálculo equivalente ao do campo week\_day do primeiro exemplo. Como pode ser visto na tabela acima, a última coluna à direita mostra que essas datas ocorrem em uma sexta-feira.

## Exemplo 4: Cenário

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

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

Visão geral

Neste exemplo, crie uma lista de datas contendo todas as sextas-feiras do ano de 2022.

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

Script de carregamento

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Calendar:
    load
	    *,
        weekday(date) as weekday
    where year(date)=2022;
load
    makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
```

Resultados

Tabela de resultados

| data | weekday |
| --- | --- |
| 01/07/2022 | Sex |
| 01/14/2022 | Sex |
| 01/21/2022 | Sex |
| 01/28/2022 | Sex |
| 02/04/2022 | Sex |
| 02/11/2022 | Sex |
| 02/18/2022 | Sex |
| 02/25/2022 | Sex |
| 03/04/2022 | Sex |
| 03/11/2022 | Sex |
| 03/18/2022 | Sex |
| 03/25/2022 | Sex |
| 04/01/2022 | Sex |
| 04/08/2022 | Sex |
| 04/15/2022 | Sex |
| 04/22/2022 | Sex |
| 04/29/2022 | Sex |
| 05/06/2022 | Sex |
| 05/13/2022 | Sex |
| 05/20/2022 | Sex |
| 05/27/2022 | Sex |
| 06/03/2022 | Sex |
| 06/10/2022 | Sex |
| 06/17/2022 | Sex |
| Mais de 27 linhas |  |

A função makeweekdate() localiza todas as sextas-feiras em 2022. Usar um parâmetro “week” de -2 garante que nenhuma data seja perdida. Finalmente, um carregamento anterior cria um campo weekday adicional para maior clareza, para mostrar que cada valor de date é uma sexta-feira.