week – função de script e gráfico
Essa função retorna um número inteiro representando o número da semana correspondente à data inserida.
Sintaxe:
week(timestamp [, first_week_day [, broken_weeks [, reference_day]]])
Tipo de dados de retorno: inteiro
Argumento | Descrição |
---|---|
timestamp | A data ou o carimbo de data/hora a ser avaliado. |
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 de sistema, consulte FirstWeekDay. |
broken_weeks |
Se você não especificar broken_weeks, o valor de BrokenWeeks variável será usado para definir se as semanas são quebradas ou não. Para obter mais informações sobre a variável de sistema, consulte BrokenWeeks |
reference_day |
Se você não especificar reference_day, o valor da variável ReferenceDay será usado para definir qual dia em janeiro será definido como dia de referência para definir a semana 1. Por padrão, as funções Qlik Sense usam 4 como o dia de referência. Isso significa que a semana 1 deve conter 4 de janeiro, ou dito de outra forma, que a semana 1 deve sempre ter pelo menos 4 dias em janeiro. Para obter mais informações sobre a variável de sistema, consulte ReferenceDay |
A função week() determina em qual semana a data cai e retorna o número da semana.
No Qlik Sense, as configurações regionais são obtidas quando o aplicativo é criado, e as configurações correspondentes são armazenadas no script como variáveis de ambiente. Elas são usados para determinar o número da semana.
Isso significa que a maioria dos desenvolvedores de aplicativos europeus obtém as seguintes variáveis de ambiente, correspondentes à definição ISO 8601:
Um desenvolvedor de aplicativos norte-americano geralmente recebe as seguintes variáveis de ambiente:
O primeiro dia da semana é determinado pela variável de sistema FirstWeekDay. Você também pode alterar o primeiro dia da semana usando o argumento first_week_day na função week().
Se seu aplicativo usar semanas interrompidas, a contagem de números de semana começará em 1º de janeiro e terminará no dia anterior à variável do sistema FirstWeekDay, independentemente de quantos dias tenham ocorrido.
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 ambiente FirstWeekDay e ReferenceDay.
Quando usar
A função The week() é útil quando você deseja comparar agregações por semanas. Por exemplo, ela pode ser usada se você deseja ver o total de vendas de produtos por semana. A função week() é escolhida no lugar de weekname() quando o usuário deseja que o cálculo não use necessariamente as variáveis de sistema BrokenWeeks, FirstWeekDay ou ReferenceDay do aplicativo.
Por exemplo, se você quiser ver o total de vendas de produtos por semana.
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.
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.
Os exemplos abaixo pressupõem
Exemplo | Resultado |
---|---|
week('12/28/2021') |
Retorna 52. |
week(44614) | Retorna 8, já que esse é o número de série de 22/02/2022. |
week('01/03/2021') | Retorna 53. |
week('01/03/2021',6) | Returna 1. |
Exemplo 1: Variáveis padrão do sistema
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 da última semana de 2021 e das primeiras duas semanas de 2022. Esse conjunto é 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, week_number, que retorna o número do ano e da semana em que as transações ocorreram.
-
A criação de um campo chamado week_day, mostrando o valor do dia da semana de cada data da transação.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(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 | 53 |
8184 | 12/28/2021 | Ter | 53 |
8185 | 12/29/2021 | Qua | 53 |
8186 | 12/30/2021 | Qui | 53 |
8187 | 12/31/2021 | Sex | 53 |
8188 | 01/01/2022 | Sáb | 1 |
8189 | 01/02/2022 | Dom | 2 |
8190 | 01/03/2022 | Seg | 2 |
8191 | 01/04/2022 | Ter | 2 |
8192 | 01/05/2022 | Qua | 2 |
8193 | 01/06/2022 | Qui | 2 |
8194 | 01/07/2022 | Sex | 2 |
8195 | 01/08/2022 | Sáb | 2 |
8196 | 01/09/2022 | Dom | 3 |
8197 | 01/10/2022 | Seg | 3 |
8198 | 01/11/2022 | Ter | 3 |
8199 | 01/12/2022 | Qua | 3 |
8200 | 01/13/2022 | Qui | 3 |
8201 | 01/14/2022 | Sex | 3 |
O campo week_number é criado na instrução de carregamento anterior usando a função week() e transmitindo o campo date como o argumento da função.
Nenhum outro parâmetro é informado para a função e, portanto, as seguintes variáveis padrão que afetam a função week() estão em vigor:
-
BrokenWeeks: A contagem semanal começa em 1º de janeiro
-
FirstWeekDay: O primeiro dia da semana é domingo
Como o aplicativo está usando a variável de sistema BrokenWeeks padrão, a semana 1 começa em 1º de janeiro, um sábado.
Por causa da variável de sistema FirstWeekDay padrão, as semanas começam em um domingo. O primeiro domingo após 1º de janeiro ocorre em 2 de janeiro, que é quando começa a semana 2.
Exemplo 2: first_week_day
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:
-
A criação de um campo, week_number, que retorna o número do ano e da semana em que as transações ocorreram.
-
A criação de um campo chamado week_day, mostrando o valor do dia da semana de cada data da transação.
Neste exemplo, gostaríamos de definir o início da semana de trabalho como terça-feira.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,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 | 52 |
8184 | 12/28/2021 | Ter | 53 |
8185 | 12/29/2021 | Qua | 53 |
8186 | 12/30/2021 | Qui | 53 |
8187 | 12/31/2021 | Sex | 53 |
8188 | 01/01/2022 | Sáb | 1 |
8189 | 01/02/2022 | Dom | 1 |
8190 | 01/03/2022 | Seg | 1 |
8191 | 01/04/2022 | Ter | 2 |
8192 | 01/05/2022 | Qua | 2 |
8193 | 01/06/2022 | Qui | 2 |
8194 | 01/07/2022 | Sex | 2 |
8195 | 01/08/2022 | Sáb | 2 |
8196 | 01/09/2022 | Dom | 2 |
8197 | 01/10/2022 | Seg | 2 |
8198 | 01/11/2022 | Ter | 3 |
8199 | 01/12/2022 | Qua | 3 |
8200 | 01/13/2022 | Qui | 3 |
8201 | 01/14/2022 | Sex | 3 |
O aplicativo ainda está usando semanas interrompidas. No entanto, o argumento first_week_day foi definido como 1 na função week(). Isso define o primeiro dia da semana como uma terça-feira.
O aplicativo está usando a variável de sistema BrokenWeeks padrão e, portanto, a semana 1 começa em 1º de janeiro, um sábado.
O argumento first_week_day da função week() define o primeiro dia da semana como uma terça-feira. Portanto, a semana 53 começa em 28 de dezembro de 2021.
No entanto, como a função ainda está usando semanas interrompidas, a semana 1 durará apenas dois dias, pois a primeira terça-feira após 1º de janeiro ocorre em 3 de janeiro.
Exemplo 3: unbroken_weeks
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.
Neste exemplo, usamos semanas ininterruptas.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,6,0) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,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 | 52 |
8184 | 12/28/2021 | Ter | 52 |
8185 | 12/29/2021 | Qua | 52 |
8186 | 12/30/2021 | Qui | 52 |
8187 | 12/31/2021 | Sex | 52 |
8188 | 01/01/2022 | Sáb | 52 |
8189 | 01/02/2022 | Dom | 1 |
8190 | 01/03/2022 | Seg | 1 |
8191 | 01/04/2022 | Ter | 1 |
8192 | 01/05/2022 | Qua | 1 |
8193 | 01/06/2022 | Qui | 1 |
8194 | 01/07/2022 | Sex | 1 |
8195 | 01/08/2022 | Sáb | 1 |
8196 | 01/09/2022 | Dom | 2 |
8197 | 01/10/2022 | Seg | 2 |
8198 | 01/11/2022 | Ter | 2 |
8199 | 01/12/2022 | Qua | 2 |
8200 | 01/13/2022 | Qui | 2 |
8201 | 01/14/2022 | Sex | 2 |
O parâmetro first_week_date está definido como 1, tornando terça-feira o primeiro dia da semana. O parâmetro broken_weeks está definido como 0, forçando a função a usar semanas ininterruptas. Por fim, o terceiro parâmetro define reference_day como 2.
O parâmetro first_week_date está definido como 6, tornando o domingo o primeiro dia da semana. O parâmetro broken_weeks está definido como 0, forçando a função a usar semanas ininterruptas.
Ao usar semanas ininterruptas, a semana 1 não começa necessariamente em 1º de janeiro. Em vez disso, ela deve ter no mínimo quatro dias. Portanto, no conjunto de dados, a semana 52 termina no sábado, 1º de janeiro de 2022. A semana 1 então começa na variável de sistema FirstWeekDay, que é domingo, 2 de janeiro. Essa semana terminará no sábado seguinte, 8 de janeiro.
Exemplo 4: reference_day
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 terceiro exemplo.
-
A criação de um campo, week_number, que retorna o número do ano e da semana em que as transações ocorreram.
-
A criação de um campo chamado week_day, mostrando o valor do dia da semana de cada data da transação.
Além disso, as seguintes condições devem ser atendidas:
-
A semana de trabalho começa na terça-feira.
-
A empresa usa semanas ininterruptas.
-
O valor de reference_day é 2. Em outras palavras, o número mínimo de dias em janeiro na semana 1 será 2.
Script de carregamento
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
Transactions:
Load
*,
WeekDay(date) as week_day,
Week(date,1,0,2) as week_number
;
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,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 | 52 |
8184 | 12/28/2021 | Ter | 1 |
8185 | 12/29/2021 | Qua | 1 |
8186 | 12/30/2021 | Qui | 1 |
8187 | 12/31/2021 | Sex | 1 |
8188 | 01/01/2022 | Sáb | 1 |
8189 | 01/02/2022 | Dom | 1 |
8190 | 01/03/2022 | Seg | 1 |
8191 | 01/04/2022 | Ter | 2 |
8192 | 01/05/2022 | Qua | 2 |
8193 | 01/06/2022 | Qui | 2 |
8194 | 01/07/2022 | Sex | 2 |
8195 | 01/08/2022 | Sáb | 2 |
8196 | 01/09/2022 | Dom | 2 |
8197 | 01/10/2022 | Seg | 2 |
8198 | 01/11/2022 | Ter | 3 |
8199 | 01/12/2022 | Qua | 3 |
8200 | 01/13/2022 | Qui | 3 |
8201 | 01/14/2022 | Sex | 3 |
O parâmetro first_week_date está definido como 1, tornando terça-feira o primeiro dia da semana. O parâmetro broken_weeks está definido como 0, forçando a função a usar semanas ininterruptas. Por fim, o terceiro parâmetro define o parâmetro reference_day como 2.
Com a função usando semanas ininterruptas e um valor reference_day de 2 usado como parâmetro, a semana 1 só precisa incluir dois dias em janeiro. Como o primeiro dia da semana é terça-feira, a semana 1 começa em 28 de dezembro de 2021 e termina na segunda-feira, 3 de janeiro de 2022.
Exemplo 5: Exemplo de objeto 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 o número da semana é criado como uma medida em um objeto de gráfico.
Script de carregamento
Transactions:
Load
*
Inline
[
id,date,amount
8183,12/27/2022,58.27
8184,12/28/2022,67.42
8185,12/29/2022,23.80
8186,12/30/2022,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
Faça o seguinte:
-
Carregue os dados e abra uma pasta. Crie uma nova tabela.
-
Adicione os seguintes campos como dimensões:
-
id
-
date
-
-
Em seguida, crie a seguinte medida:
=week (date)
-
Crie uma medida, week_day para mostrar o valor do dia da semana de cada data de transação:
=weekday(date)
id | date | =week(date) | =weekday(date) |
---|---|---|---|
8183 | 12/27/2021 | 53 | Seg |
8184 | 12/28/2021 | 53 | Ter |
8185 | 12/29/2021 | 53 | Qua |
8186 | 12/30/2021 | 53 | Qui |
8187 | 12/31/2021 | 53 | Sex |
8188 | 01/01/2022 | 1 | Sáb |
8189 | 01/02/2022 | 2 | Dom |
8190 | 01/03/2022 | 2 | Seg |
8191 | 01/04/2022 | 2 | Ter |
8192 | 01/05/2022 | 2 | Qua |
8193 | 01/06/2022 | 2 | Qui |
8194 | 01/07/2022 | 2 | Sex |
8195 | 01/08/2022 | 2 | Sáb |
8196 | 01/09/2022 | 3 | Dom |
8197 | 01/10/2022 | 3 | Seg |
8198 | 01/11/2022 | 3 | Ter |
8199 | 01/12/2022 | 3 | Qua |
8200 | 01/13/2022 | 3 | Qui |
8201 | 01/14/2022 | 3 | Sex |
O campo week_number é criado na instrução de carregamento anterior usando a função week() e transmitindo o campo date como o argumento da função.
Nenhum outro parâmetro é informado para a função e, portanto, as seguintes variáveis padrão que afetam a função week() estão em vigor:
-
BrokenWeeks: A contagem semanal começa em 1º de janeiro
-
FirstWeekDay: O primeiro dia da semana é domingo
Como o aplicativo está usando a variável de sistema BrokenWeeks padrão, a semana 1 começa em 1º de janeiro, um sábado.
Por causa da variável de sistema FirstWeekDay padrão, as semanas começam em um domingo. O primeiro domingo após 1º de janeiro ocorre em 2 de janeiro, que é quando começa a semana 2.
Exemplo 6: 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. Esse conjunto é carregado em uma tabela denominada Transactions.
- O campo de data fornecido no formato da variável de sistema DateFormat (MM/DD/AAAA).
O aplicativo usa principalmente semanas interrompidas em seu painel. No entanto, o usuário final deseja um objeto de gráfico que apresentasse o total de vendas por semana usando semanas ininterruptas. O dia de referência deve ser 2 de janeiro, com semanas começando em uma terça-feira. Isso pode ser alcançado mesmo quando essa dimensão não está disponível no modelo de dados. Para isso, use a função week() como uma dimensão calculada no gráfico.
Script de carregamento
SET BrokenWeeks=1;
SET ReferenceDay=0;
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
Faça o seguinte:
-
Carregue os dados e abra uma pasta. Crie uma nova tabela.
-
Crie a seguinte dimensão calculada:
=week(date)
-
Em seguida, crie a seguinte medida de agregação:
=sum(amount)
-
Defina o Formato numérico da medida como Dinheiro.
-
Selecione o menu Classificação e, para a dimensão calculada, remova a classificação personalizada.
-
Desmarque as opções Classificar numericamente e Classificar alfabeticamente.
week(date) | sum(amount) |
---|---|
52 | $125.69 |
53 | $146.42 |
1 | $200.09 |
2 | $347.57 |
3 | $122.01 |