weekname – função de script e gráfico
Esta função retorna um valor que mostra o número do ano e da semana com um valor numérico subjacente que corresponde a um carimbo de hora do primeiro milissegundo do primeiro dia da semana que contém a date.
Sintaxe:
WeekName(date[, period_no[,first_week_day]])
A função weekname() determina em qual semana a data cai e retorna o número e o ano dessa semana. O primeiro dia da semana é determinado pela variável de sistema FirstWeekDay. No entanto, você também pode alterar o primeiro dia da semana usando o argumento first_week_day na função weekname().
Por padrão, os aplicativos do Qlik Sense usam semanas quebradas (definidas pela variável de sistema BrokenWeeks) e, portanto, a contagem do número da semana começa em 1º de janeiro e termina no dia anterior à variável de sistema FirstWeekDay, independentemente de quantos dias ocorreram.
No entanto, se o seu aplicativo estiver usando semanas não quebradas, a semana 1 pode começar no ano anterior ou nos primeiros dias de janeiro. Isso depende de como você usa as variáveis de sistema ReferenceDay e FirstWeekDay.
Quando usar
A função weekname() é útil para quando você deseja comparar agregações por semanas.
Por exemplo, se você quiser ver o total de vendas de produtos por semana. Para manter a consistência com a variável de ambiente BrokenWeeks no aplicativo, use weekname() em vez de lunarweekname(). Se o aplicativo estiver usando semanas não quebradas, a semana 1 pode conter datas de dezembro do ano anterior ou pode excluir datas em janeiro do ano atual. Se o aplicativo estiver usando semanas quebradas, a semana 1 pode conter menos de sete dias.
Tipo de dados de retorno: dual
Argumento | Descrição |
---|---|
date | A data ou o carimbo de data/hora a ser avaliado. |
period_no | shift é um inteiro, em que o valor 0 indica a semana que contém a date. Os valores negativos no deslocamento indicam semanas precedentes e os valores positivos indicam semanas subsequentes. |
first_week_day |
Especifica o dia no qual inicia a semana. Se omitido, o valor da variável FirstWeekDay é usado. 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. Para obter mais informações sobre a variável do sistema, consulte FirstWeekDay. |
Você pode usar os seguintes valores para definir o dia em que a semana começa no argumento first_week_day:
Dia | Valor |
---|---|
Segunda-feira | 0 |
Terça-feira | 1 |
Quarta-feira | 2 |
Quinta-feira | 3 |
Sexta-feira | 4 |
Sábado | 5 |
Domingo | 6 |
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 | Resultado |
---|---|
weekname('01/12/2013') | Retorna 2013/02. |
weekname('01/12/2013', -1) | Returns 2013/01. |
weekname('01/12/2013', 0, 1) | Retorna 2013/02. |
Exemplo 1: data sem argumentos adicionais
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:
-
Um conjunto de dados contendo um conjunto de transações para a última semana de 2021 e as duas primeiras semanas de 2022 é carregado em uma tabela chamada "Transactions".
-
A variável de sistema DateFormat que é definida como o formato MM/DD/YYYY.
-
A variável de sistema BrokenWeeks que é definida como 1.
-
A variável de sistema FirstWeekDay que é definida como 6.
-
Um carregamento anterior que contém o seguinte:
-
A função weekday() definida como o campo "week_number", que retorna o número do ano e da semana quando as transações ocorreram.
-
A função weekname() definida como o campo chamado "week_day" para mostrar o valor do dia da semana de cada data de transação.
-
Script de carregamento
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
Transactions:
Load
*,
WeekDay(date) as week_day,
Weekname(date) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Seg | 2021/53 |
8184 | 12/28/2021 | Ter | 2021/53 |
8185 | 12/29/2021 | Qua | 2021/53 |
8186 | 12/30/2021 | Qui | 2021/53 |
8187 | 12/31/2021 | Sex | 2021/53 |
8188 | 01/01/2022 | Sáb | 2022/01 |
8189 | 01/02/2022 | Dom | 2022/02 |
8190 | 01/03/2022 | Seg | 2022/02 |
8191 | 01/04/2022 | Ter | 2022/02 |
8192 | 01/05/2022 | Qua | 2022/02 |
8193 | 01/06/2022 | Qui | 2022/02 |
8194 | 01/07/2022 | Sex | 2022/02 |
8195 | 01/08/2022 | Sáb | 2022/02 |
8196 | 01/09/2022 | Dom | 2022/03 |
8197 | 01/10/2022 | Seg | 2022/03 |
8198 | 01/11/2022 | Ter | 2022/03 |
8199 | 01/12/2022 | Qua | 2022/03 |
8200 | 01/13/2022 | Qui | 2022/03 |
8201 | 01/14/2022 | Sex | 2022/03 |
O campo "week_number" é criado na instrução de carregamento anterior usando a função weekname() e transmitindo o campo de data como o argumento da função.
A função weekname() identifica inicialmente em qual semana o valor da data cai e retorna a contagem do número da semana e o ano em que ocorre a transação.
A variável de sistema FirstWeekDay define o domingo como o primeiro dia da semana. A variável de sistema BrokenWeeks define o aplicativo para usar semanas quebradas, o que significa que a semana 1 começará em 1º de janeiro.
A semana 1 começa em 1º de janeiro, que é um sábado e, portanto, as transações que ocorrem nessa data retornam o valor 2022/01 (o ano e o número da semana).
Como o aplicativo está usando semanas quebradas, e o primeiro dia da semana é domingo, as transações que ocorrem de 2 a 8 de janeiro retornam o valor 2022/02 (semana número 2 em 2022). Um exemplo disso seria a transação 8192, que ocorreu em 5 de janeiro e retorna o valor 2022/02 para o campo "week_number".
Exemplo 2: period_no
Visão geral
São usados o mesmo conjunto de dados e cenário do primeiro exemplo.
No entanto, neste exemplo, a tarefa é criar um campo, "previous_week_number", que retorna o ano e o número da semana, antes da ocorrência das transações.
Abra o Editor de carregamento de dados e adicione o script de carregamento a seguir a uma nova guia.
Script de carregamento
SET BrokenWeeks=1;
SET FirstWeekDay=6;
Transactions:
Load
*,
weekname(date,-1) as previous_week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Seg | 2021/52 |
8184 | 12/28/2021 | Ter | 2021/52 |
8185 | 12/29/2021 | Qua | 2021/52 |
8186 | 12/30/2021 | Qui | 2021/52 |
8187 | 12/31/2021 | Sex | 2021/52 |
8188 | 01/01/2022 | Sáb | 2021/52 |
8189 | 01/02/2022 | Dom | 2021/53 |
8190 | 01/03/2022 | Seg | 2021/53 |
8191 | 01/04/2022 | Ter | 2021/53 |
8192 | 01/05/2022 | Qua | 2021/53 |
8193 | 01/06/2022 | Qui | 2021/53 |
8194 | 01/07/2022 | Sex | 2021/53 |
8195 | 01/08/2022 | Sáb | 2022/01 |
8196 | 01/09/2022 | Dom | 2022/02 |
8197 | 01/10/2022 | Seg | 2022/02 |
8198 | 01/11/2022 | Ter | 2022/02 |
8199 | 01/12/2022 | Qua | 2022/02 |
8200 | 01/13/2022 | Qui | 2022/02 |
8201 | 01/14/2022 | Sex | 2022/02 |
Como um period_no de -1 foi usado como o argumento de deslocamento na função weekname(), a função primeiro identifica a semana em que as transações ocorrem. Em seguida, ela procura uma semana antes e identifica o primeiro milissegundo daquela semana.
A transação 8192 ocorreu em 5 de janeiro de 2022. A função weekname() procura uma semana antes, 30 de dezembro de 2021, e retorna o número da semana e o ano dessa data: 2021/53.
Exemplo 3: first_week_day
Visão geral
São usados o mesmo conjunto de dados e cenário do primeiro exemplo.
No entanto, neste exemplo, a política da empresa é que a semana de trabalho comece na terça-feira.
Abra o Editor de carregamento de dados e adicione o script de carregamento a seguir a uma nova guia.
Script de carregamento
SET BrokenWeeks=1;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
weekday(date) as week_day,
weekname(date,0,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Seg | 2021/52 |
8184 | 12/28/2021 | Ter | 2021/53 |
8185 | 12/29/2021 | Qua | 2021/53 |
8186 | 12/30/2021 | Qui | 2021/53 |
8187 | 12/31/2021 | Sex | 2021/53 |
8188 | 01/01/2022 | Sáb | 2022/01 |
8189 | 01/02/2022 | Dom | 2022/01 |
8190 | 01/03/2022 | Seg | 2022/01 |
8191 | 01/04/2022 | Ter | 2022/02 |
8192 | 01/05/2022 | Qua | 2022/02 |
8193 | 01/06/2022 | Qui | 2022/02 |
8194 | 01/07/2022 | Sex | 2022/02 |
8195 | 01/08/2022 | Sáb | 2022/02 |
8196 | 01/09/2022 | Dom | 2022/02 |
8197 | 01/10/2022 | Seg | 2022/02 |
8198 | 01/11/2022 | Ter | 2022/03 |
8199 | 01/12/2022 | Qua | 2022/03 |
8200 | 01/13/2022 | Qui | 2022/03 |
8201 | 01/14/2022 | Sex | 2022/03 |
Como o argumento first_week_date de 1 é usado na função weekname(), ele usa a terça-feira como o primeiro dia da semana. Portanto, a função determina que a semana 53 de 2021 começa na terça-feira, 28 de dezembro e, devido ao uso de semanas quebradas pelo aplicativo, a semana 1 começa em 1º de janeiro de 2022 e termina no último milissegundo de segunda-feira, 3 de janeiro de 2022.
A transação 8192 ocorreu em 5 de janeiro de 2022. Portanto, usando um parâmetro first_week_day de terça-feira, a função weekname() retorna o valor 2022/02 para o campo "week_number".
Exemplo 4: Exemplo de objeto de gráfico
Visão geral
São usados o mesmo conjunto de dados e cenário do primeiro exemplo.
No entanto, neste exemplo, o conjunto de dados permanece inalterado e é carregado no aplicativo. O cálculo que retorna o número do ano da semana para quando as transações ocorreram é criado como uma medida em um objeto de gráfico do aplicativo.
Script de carregamento
SET BrokenWeeks=1;
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2021,58.27
8184,12/28/2021,67.42
8185,12/29/2021,23.80
8186,12/30/2021,82.06
8187,12/31/2021,40.56
8188,01/01/2022,37.23
8189,01/02/2022,17.17
8190,01/03/2022,88.27
8191,01/04/2022,57.42
8192,01/05/2022,53.80
8193,01/06/2022,82.06
8194,01/07/2022,40.56
8195,01/08/2022,53.67
8196,01/09/2022,26.63
8197,01/10/2022,72.48
8198,01/11/2022,18.37
8199,01/12/2022,45.26
8200,01/13/2022,58.23
8201,01/14/2022,18.52
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
id
-
date
-
=week_day (date)
Para calcular o início da semana em que uma transação ocorre, crie a seguinte medida:
=weekname(date)
id | date | =weekday(date) | =weekname(date) |
---|---|---|---|
8183 | 12/27/2021 | Seg | 2021/53 |
8184 | 12/28/2021 | Ter | 2021/53 |
8185 | 12/29/2021 | Qua | 2021/53 |
8186 | 12/30/2021 | Qui | 2021/53 |
8187 | 12/31/2021 | Sex | 2021/53 |
8188 | 01/01/2022 | Sáb | 2022/01 |
8189 | 01/02/2022 | Dom | 2022/02 |
8190 | 01/03/2022 | Seg | 2022/02 |
8191 | 01/04/2022 | Ter | 2022/02 |
8192 | 01/05/2022 | Qua | 2022/02 |
8193 | 01/06/2022 | Qui | 2022/02 |
8194 | 01/07/2022 | Sex | 2022/02 |
8195 | 01/08/2022 | Sáb | 2022/02 |
8196 | 01/09/2022 | Dom | 2022/03 |
8197 | 01/10/2022 | Seg | 2022/03 |
8198 | 01/11/2022 | Ter | 2022/03 |
8199 | 01/12/2022 | Qua | 2022/03 |
8200 | 01/13/2022 | Qui | 2022/03 |
8201 | 01/14/2022 | Sex | 2022/03 |
O campo "week_number" é criado como uma medida no objeto de gráfico usando a função weekname() e transmitindo o campo de data como argumento dessa função.
A função weekname() identifica inicialmente em qual semana o valor da data cai e retorna a contagem do número da semana e o ano em que ocorre a transação.
A variável de sistema FirstWeekDay define o domingo como o primeiro dia da semana. A variável de sistema BrokenWeeks define o aplicativo para usar semanas quebradas, o que significa que a semana 1 começa em 1º de janeiro.
Como o aplicativo está usando semanas quebradas, e o primeiro dia da semana é domingo, as transações que ocorrerem de 2 a 8 de janeiro retornarão o valor 2022/02, a semana número 2 em 2022. Observe que a transação 8192 ocorreu em 5 de janeiro e retorna o valor 2022/02 para o campo "week_number".
Exemplo 5: Cenário
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:
-
Um conjunto de dados contendo um conjunto de transações para a última semana de 2019 e as duas primeiras semanas de 2020 é carregado em uma tabela chamada "Transactions".
-
A variável de sistema BrokenWeeks que é definida como 0.
-
A variável de sistema ReferenceDay que é definida como 2.
-
A variável de sistema DateFormat que é definida como o formato MM/DD/YYYY.
Script de carregamento
SET BrokenWeeks=0;
SET ReferenceDay=2;
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2019,58.27
8184,12/28/2019,67.42
8185,12/29/2019,23.80
8186,12/30/2019,82.06
8187,12/31/2019,40.56
8188,01/01/2020,37.23
8189,01/02/2020,17.17
8190,01/03/2020,88.27
8191,01/04/2020,57.42
8192,01/05/2020,53.80
8193,01/06/2020,82.06
8194,01/07/2020,40.56
8195,01/08/2020,53.67
8196,01/09/2020,26.63
8197,01/10/2020,72.48
8198,01/11/2020,18.37
8199,01/12/2020,45.26
8200,01/13/2020,58.23
8201,01/14/2020,18.52
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela.
Crie uma dimensão calculada usando a seguinte expressão:
=weekname(date)
Para calcular o total de vendas, crie a seguinte medida de agregação:
=sum(amount)
Defina o Formato numérico da medida como Dinheiro.
weekname(date) | =sum(amount) |
---|---|
2019/52 | $125.69 |
2020/01 | $346.51 |
2020/02 | $347.57 |
2020/03 | $122.01 |
Para demonstrar os resultados do uso da função weekname() nesse cenário, adicione o seguinte campo como uma dimensão:
date
weekname(date) | date | =sum(amount) |
---|---|---|
2019/52 | 12/27/2019 | $58.27 |
2019/52 | 12/28/2019 | $67.42 |
2020/01 | 12/29/2019 | $23.80 |
2020/01 | 12/30/2019 | $82.06 |
2020/01 | 12/31/2019 | $40.56 |
2020/01 | 01/01/2020 | $37.23 |
2020/01 | 01/02/2020 | $17.17 |
2020/01 | 01/03/2020 | $88.27 |
2020/01 | 01/04/2020 | $57.42 |
2020/02 | 01/05/2020 | $53.80 |
2020/02 | 01/06/2020 | $82.06 |
2020/02 | 01/07/2020 | $40.56 |
2020/02 | 01/08/2020 | $53.67 |
2020/02 | 01/09/2020 | $26.63 |
2020/02 | 01/10/2020 | $72.48 |
2020/02 | 01/11/2020 | $18.37 |
2020/03 | 01/12/2020 | $45.26 |
2020/03 | 01/13/2020 | $58.23 |
2020/03 | 01/14/2020 | $18.52 |
Como o aplicativo usa semanas não quebradas, e a semana 1 exige no mínimo dois dias em janeiro devido à variável de sistema ReferenceDay, a semana 1 de 2020 inclui transações de 29 de dezembro de 2019.