week - función de script y de gráfico
Esta función devuelve un entero que representa el número de semana correspondiente a la fecha introducida.
Sintaxis:
week(timestamp [, first_week_day [, broken_weeks [, reference_day]]])
Tipo de datos que devuelve: Entero
Argumento | Descripción |
---|---|
timestamp | La fecha o marca de tiempo para evaluar. |
first_week_day |
Especifica el día en el que se inicia la semana. Si se omite, se utiliza el valor de la variable FirstWeekDay. Los valores posibles de first_week_day son 0 para el lunes, 1 para el martes, 2 para el miércoles, 3 para el jueves, 4 para el viernes, 5 para el sábado y 6 para el domingo. Para más información sobre la variable del sistema, vea FirstWeekDay. |
broken_weeks |
Si no especifica broken_weeks, el valor de la variable BrokenWeeks se usará para definir si las semanas se rompen o no. Para más información sobre la variable del sistema, vea BrokenWeeks |
reference_day |
Si no especifica reference_day, el valor de la variable ReferenceDay se usará para definir qué día de enero debe configurarse como día de referencia para definir la semana 1. De forma predeterminada, las funciones Qlik Sense usan 4 como día de referencia. Esto significa que la semana 1 debe incluir el 4 de enero o, dicho de otro modo, que la semana 1 siempre debe incluir 4 días de enero como mínimo. Para más información sobre la variable del sistema, vea ReferenceDay |
La función week() determina en qué semana cae la fecha y devuelve el número de semana.
En Qlik Sense, la configuración regional se obtiene cuando se crea la aplicación y la configuración correspondiente se almacena en el script como variables de entorno. Estos se utilizan para determinar el número de semana.
Esto significa que la mayoría de los desarrolladores de aplicaciones europeos obtienen las siguientes variables de entorno, correspondientes a la definición ISO 8601:
Un desarrollador de aplicaciones norteamericano a menudo obtiene las siguientes variables de entorno:
El primer día de la semana viene determinado por la variable del sistema FirstWeekDay. También puede cambiar el primer día de la semana usando el argumento first_week_day en la función week().
Si su aplicación utiliza semanas interrumpidas, el número de semanas comienza el 1 de enero y finaliza el día anterior a la variable del sistema FirstWeekDay, independientemente de cuántos días hayan transcurrido.
Si su aplicación utiliza semanas ininterrumpidas, la semana 1 puede comenzar en el año anterior o en los primeros días de enero. Esto depende de cómo use las variables de entorno FirstWeekDay y ReferenceDay.
Cuándo se utiliza
La función The week() es útil cuando se desea comparar agregaciones por semanas. Por ejemplo, si desea ver el total de ventas de productos por semana. La función week() se elige por encima de weekname() cuando el usuario desea que el cálculo no utilice necesariamente las variables del sistema, BrokenWeeks, FirstWeekDay o ReferenceDay de la aplicación.
Por ejemplo, si desea ver el total de ventas de productos por semana.
Si la aplicación utiliza semanas ininterrumpidas, la semana 1 puede contener fechas de diciembre del año anterior o excluir fechas de enero del año en curso. Si la aplicación utiliza semanas interrumpidas, la semana 1 puede contener menos de siete días.
Configuraciones regionales
A menos que se especifique algo distinto, los ejemplos de este tema utilizan el siguiente formato de fecha: MM/DD/YYYY. El formato de fecha se especifica en la sentencia SET DateFormat de su script de carga de datos. El formato de fecha predeterminado puede ser diferente en su sistema, debido a su configuración regional y otros factores. Puede cambiar el formato en los ejemplos a continuación para ajustarlo a sus necesidades. O puede cambiar los formatos en su script de carga para que coincidan con estos ejemplos.
La configuración regional predeterminada en las aps se basa en la configuración del sistema regional de la computadora o servidor donde esté instalado Qlik Sense. Si el servidor de Qlik Sense al que está accediendo está configurado en Suecia, el editor de carga de datos utilizará la configuración regional sueca para las fechas, la hora y la moneda. Estos ajustes de formato regional no están relacionados con el idioma mostrado en la interfaz de usuario de Qlik Sense. Qlik Sense se mostrará en el mismo idioma que esté utilizando su navegador.
Los siguientes ejemplos suponen
Ejemplo | Resultado |
---|---|
week('12/28/2021') |
Devuelve 52. |
week(44614) | Devuelve 8, ya que este es el número de serie del 22/02/2022. |
week('01/03/2021') | Devuelve 53. |
week('01/03/2021',6) | Devuelve 1. |
Ejemplo 1: variables predeterminadas del sistema
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
-
Un conjunto de datos que contiene un conjunto de transacciones de la última semana de 2021 y las primeras dos semanas de 2022 y que se carga en una tabla llamada "Transactions".
-
El campo de fecha proporcionado en el formato de la variable del sistema DateFormat (MM/DD/AAAA).
-
La creación de un campo, week_number, que devuelve el año y el número de semana en que se realizaron las transacciones.
-
La creación de un campo denominado week_day, que muestra el valor del día de la semana de cada fecha de transacción.
Script de carga
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
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Lun | 53 |
8184 | 12/28/2021 | Mar | 53 |
8185 | 12/29/2021 | Mié | 53 |
8186 | 12/30/2021 | Jue | 53 |
8187 | 12/31/2021 | Vie | 53 |
8188 | 01/01/2022 | Sáb | 1 |
8189 | 01/02/2022 | Dom | 2 |
8190 | 01/03/2022 | Lun | 2 |
8191 | 01/04/2022 | Mar | 2 |
8192 | 01/05/2022 | Mié | 2 |
8193 | 01/06/2022 | Jue | 2 |
8194 | 01/07/2022 | Vie | 2 |
8195 | 01/08/2022 | Sáb | 2 |
8196 | 01/09/2022 | Dom | 3 |
8197 | 01/10/2022 | Lun | 3 |
8198 | 01/11/2022 | Mar | 3 |
8199 | 01/12/2022 | Mié | 3 |
8200 | 01/13/2022 | Jue | 3 |
8201 | 01/14/2022 | Vie | 3 |
El campo week_number se crea en la instrucción load anterior utilizando la función week() e introduciendo el campo date como argumento de la función.
No se indica ningún otro parámetro en la función y, por lo tanto, las siguientes variables predeterminadas que afectan a la función week() siguen vigentes:
-
BrokenWeeks: El recuento de semanas comienza el 1 de enero
-
FirstWeekDay: El primer día de la semana es domingo
Debido a que la aplicación utiliza la variable del sistema predeterminada BrokenWeeks, la semana 1 comienza el 1 de enero, un sábado.
Debido a la variable del sistema predeterminada FirstWeekDay, las semanas comienzan en domingo. El primer domingo después del 1 de enero ocurre el 2 de enero, que es cuando comienza la semana 2.
Ejemplo 2: first_week_day
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
-
La creación de un campo, week_number, que devuelve el año y el número de semana en que se realizaron las transacciones.
-
La creación de un campo denominado week_day, que muestra el valor del día de la semana de cada fecha de transacción.
En este ejemplo, nos gustaría configurar el martes como inicio de la semana laboral.
Script de carga
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
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Lun | 52 |
8184 | 12/28/2021 | Mar | 53 |
8185 | 12/29/2021 | Mié | 53 |
8186 | 12/30/2021 | Jue | 53 |
8187 | 12/31/2021 | Vie | 53 |
8188 | 01/01/2022 | Sáb | 1 |
8189 | 01/02/2022 | Dom | 1 |
8190 | 01/03/2022 | Lun | 1 |
8191 | 01/04/2022 | Mar | 2 |
8192 | 01/05/2022 | Mié | 2 |
8193 | 01/06/2022 | Jue | 2 |
8194 | 01/07/2022 | Vie | 2 |
8195 | 01/08/2022 | Sáb | 2 |
8196 | 01/09/2022 | Dom | 2 |
8197 | 01/10/2022 | Lun | 2 |
8198 | 01/11/2022 | Mar | 3 |
8199 | 01/12/2022 | Mié | 3 |
8200 | 01/13/2022 | Jue | 3 |
8201 | 01/14/2022 | Vie | 3 |
La aplicación sigue utilizando semanas interrumpidas. Sin embargo, el argumento de first_week_day se ha definido en 1 en la función week(). Esto establece el primer día de la semana en martes.
La aplicación utiliza la variable de sistema predeterminada BrokenWeeks, por lo que la semana 1 comienza el 1 de enero, un sábado.
El argumento de first_week_day de la función week() establece el primer día de la semana en martes. Por lo tanto, la semana 53 comienza el 28 de diciembre de 2021.
Sin embargo, debido a que la función todavía utiliza semanas interrumpidas, la semana 1 solo durará dos días, debido a que el primer martes después del 1 de enero se produce el 3 de enero.
Ejemplo 3: unbroken_weeks
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación en una nueva pestaña.
El script de carga contiene el mismo conjunto de datos y escenario que el primer ejemplo.
En este ejemplo, usamos semanas no interrumpidas.
Script de carga
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
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Lun | 52 |
8184 | 12/28/2021 | Mar | 52 |
8185 | 12/29/2021 | Mié | 52 |
8186 | 12/30/2021 | Jue | 52 |
8187 | 12/31/2021 | Vie | 52 |
8188 | 01/01/2022 | Sáb | 52 |
8189 | 01/02/2022 | Dom | 1 |
8190 | 01/03/2022 | Lun | 1 |
8191 | 01/04/2022 | Mar | 1 |
8192 | 01/05/2022 | Mié | 1 |
8193 | 01/06/2022 | Jue | 1 |
8194 | 01/07/2022 | Vie | 1 |
8195 | 01/08/2022 | Sáb | 1 |
8196 | 01/09/2022 | Dom | 2 |
8197 | 01/10/2022 | Lun | 2 |
8198 | 01/11/2022 | Mar | 2 |
8199 | 01/12/2022 | Mié | 2 |
8200 | 01/13/2022 | Jue | 2 |
8201 | 01/14/2022 | Vie | 2 |
El parámetro de first_week_date está definido en 1, lo que hace que el martes sea el primer día de la semana. El parámetro de broken_weeks está establecido en 0, lo que obliga a la función a utilizar semanas ininterrumpidas. Por último, el tercer parámetro establece el día de referencia "reference_day" en 2.
El parámetro de first_week_date se establece en 6, lo que hace que el domingo sea el primer día de la semana. El parámetro de broken_weeks se establece en 0, lo que obliga a la función a utilizar semanas ininterrumpidas.
Al usar semanas continuas, ininterrumpidas, la semana 1 no necesariamente comienza el 1 de enero; en cambio, se requiere tener un mínimo de cuatro días. Por lo tanto, en el conjunto de datos, la semana 52 concluye el sábado 1 de enero de 2022. Luego, la semana 1 comienza en la variable del sistema FirstWeekDay, que es el domingo 2 de enero. Esta semana concluirá el siguiente sábado, 8 de enero.
Ejemplo 4: reference_day
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
-
Se utilizan el mismo conjunto de datos y escenario que en el tercer ejemplo.
-
La creación de un campo, week_number, que devuelve el año y el número de semana en que se realizaron las transacciones.
-
La creación de un campo denominado week_day, que muestra el valor del día de la semana de cada fecha de transacción.
Además, se deben cumplir las siguientes condiciones:
-
La semana laboral comienza un martes.
-
La empresa utiliza semanas no interrumpidas.
-
El valor de reference_day es 2. En otras palabras, el número mínimo de días en enero en la semana 1 será de 2.
Script de carga
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
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
id
-
date
-
week_day
-
week_number
id | date | week_day | week_number |
---|---|---|---|
8183 | 12/27/2021 | Lun | 52 |
8184 | 12/28/2021 | Mar | 1 |
8185 | 12/29/2021 | Mié | 1 |
8186 | 12/30/2021 | Jue | 1 |
8187 | 12/31/2021 | Vie | 1 |
8188 | 01/01/2022 | Sáb | 1 |
8189 | 01/02/2022 | Dom | 1 |
8190 | 01/03/2022 | Lun | 1 |
8191 | 01/04/2022 | Mar | 2 |
8192 | 01/05/2022 | Mié | 2 |
8193 | 01/06/2022 | Jue | 2 |
8194 | 01/07/2022 | Vie | 2 |
8195 | 01/08/2022 | Sáb | 2 |
8196 | 01/09/2022 | Dom | 2 |
8197 | 01/10/2022 | Lun | 2 |
8198 | 01/11/2022 | Mar | 3 |
8199 | 01/12/2022 | Mié | 3 |
8200 | 01/13/2022 | Jue | 3 |
8201 | 01/14/2022 | Vie | 3 |
El parámetro de first_week_date está establecido en 1, lo que hace que el martes sea el primer día de la semana. El parámetro de broken_weeks está establecido en 0, lo que obliga a la función a utilizar semanas no interrumpidas. Por último, el tercer parámetro establece el parámetro de reference_day en 2.
Con la función utilizando semanas no interrumpidas y un valor de reference_day de 2 como parámetro, la semana 1 solo necesita incluir dos días en enero. Debido a que el primer día de la semana es martes, la semana 1 comienza el 28 de diciembre de 2021 y concluye el lunes 3 de enero de 2022.
Ejemplo 5: ejemplo de objeto gráfico
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación en una nueva pestaña.
El script de carga contiene el mismo conjunto de datos y escenario que el primer ejemplo.
Sin embargo, en este ejemplo, el conjunto de datos sin modificar se carga en la aplicación. El cálculo que devuelve el número de la semana se crea como una medida en un objeto gráfico.
Script de carga
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
Haga lo siguiente:
-
Cargue los datos y abra una hoja.Cree una nueva tabla.
-
Agregue los siguientes campos como dimensiones:
-
id
-
date
-
-
A continuación, cree la siguiente medida:
=week (date)
-
Cree una medida , week_day, para mostrar el valor del día de la semana de cada fecha de transacción:
=weekday(date)
id | date | =week(date) | =weekday(date) |
---|---|---|---|
8183 | 12/27/2021 | 53 | Lun |
8184 | 12/28/2021 | 53 | Mar |
8185 | 12/29/2021 | 53 | Mié |
8186 | 12/30/2021 | 53 | Jue |
8187 | 12/31/2021 | 53 | Vie |
8188 | 01/01/2022 | 1 | Sáb |
8189 | 01/02/2022 | 2 | Dom |
8190 | 01/03/2022 | 2 | Lun |
8191 | 01/04/2022 | 2 | Mar |
8192 | 01/05/2022 | 2 | Mié |
8193 | 01/06/2022 | 2 | Jue |
8194 | 01/07/2022 | 2 | Vie |
8195 | 01/08/2022 | 2 | Sáb |
8196 | 01/09/2022 | 3 | Dom |
8197 | 01/10/2022 | 3 | Lun |
8198 | 01/11/2022 | 3 | Mar |
8199 | 01/12/2022 | 3 | Mié |
8200 | 01/13/2022 | 3 | Jue |
8201 | 01/14/2022 | 3 | Vie |
El campo week_number se crea en la instrucción load anterior utilizando la función week() e introduciendo el campo date como argumento de la función.
No se indica ningún otro parámetro en la función y, por lo tanto, las siguientes variables predeterminadas que afectan a la función week() siguen vigentes:
-
BrokenWeeks: El recuento de semanas comienza el 1 de enero
-
FirstWeekDay: El primer día de la semana es domingo
Debido a que la aplicación utiliza la variable del sistema predeterminada BrokenWeeks, la semana 1 comienza el 1 de enero, un sábado.
Debido a la variable del sistema predeterminada FirstWeekDay, las semanas comienzan en domingo. El primer domingo después del 1 de enero ocurre el 2 de enero, que es cuando comienza la semana 2.
Ejemplo 6: Escenario
Vista general
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
-
Se carga un conjunto de datos que contiene una serie de transacciones de la última semana de 2019 y las primeras dos semanas de 2020 en una tabla llamada Transactions.
- El campo de fecha proporcionado en el formato de la variable del sistema DateFormat (MM/DD/AAAA).
La aplicación utiliza principalmente semanas interrumpidas en su tablero. Sin embargo, al usuario final le gustaría tener un objeto gráfico que presente el total de ventas por semana utilizando semanas no interrumpidas. El día de referencia debe ser el 2 de enero y las semanas comienzan en martes. Esto podría lograrse incluso cuando esta dimensión no esté disponible en el modelo de datos, utilizando la función week() como una dimensión calculada en el gráfico.
Script de carga
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
Haga lo siguiente:
-
Cargue los datos y abra una hoja.Cree una nueva tabla.
-
Cree la siguiente dimensión calculada:
=week(date)
-
A continuación, cree la siguiente medida de agregación:
=sum(amount)
-
Establezca el Formato numérico de la medida en Moneda.
-
Seleccione el menú Ordenar y, para la dimensión calculada, elimine la ordenación personalizada.
-
Desmarque las opciones Ordenar numéricamente y Ordenar alfabéticamente.
=week(date) | sum(amount) |
---|---|
52 | $125.69 |
53 | $146.42 |
1 | $200.09 |
2 | $347.57 |
3 | $122.01 |