weekname - función de script y de gráfico
Esta función devuelve un valor que muestra el número de año y de semana con un valor numérico subyacente correspondiente a una marca de tiempo del primer milisegundo del primer día de la semana que contiene a date.
Sintaxis:
WeekName(date[, period_no[,first_week_day]])
La función weekname() determina en qué semana cae la fecha y devuelve el número de semana y el año de esa semana. El primer día de la semana viene determinado por la variable de sistema FirstWeekDay. No obstante, también puede cambiar el primer día de la semana usando el argumento first_week_day en la función weekname().
De forma predeterminada, las aplicaciones de Qlik Sense utilizan semanas segmentadas o divididas (definidas por la variable del sistema BrokenWeeks) y, por lo tanto, 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.
Sin embargo, si su aplicación usa 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 del sistema ReferenceDay y FirstWeekDay.
Cuándo se utiliza
La función weekname() es útil cuando desea comparar agregaciones por semanas.
Por ejemplo, si desea ver el total de ventas de productos por semana. Para mantener la coherencia con la variable de entorno BrokenWeeks en la aplicación, utilice weekname() en vez de lunarweekname(). 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 segmentadas, la semana 1 puede contener menos de siete días.
Tipo de datos que devuelve: dual
Argumento | Descripción |
---|---|
date | La fecha o marca de tiempo para evaluar. |
period_no | shift es un entero, donde el valor 0 indica la semana que contiene a date. Los valores negativos en el desplazamiento indican semanas precedentes y los valores positivos indican semanas subsiguientes. |
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. |
Puede utilizar los siguientes valores para establecer el día en que comienza la semana en el argumento first_week_day:
Día | Valor |
---|---|
Lunes | 0 |
Martes | 1 |
Miércoles | 2 |
Jueves | 3 |
Viernes | 4 |
Sábado | 5 |
Domingo | 6 |
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.
Ejemplo | Resultado |
---|---|
weekname('01/12/2013') | Devuelve 2013/02. |
weekname('01/12/2013', -1) | Returns 2013/01. |
weekname('01/12/2013', 0, 1) | Devuelve 2013/02. |
Ejemplo 1: Fecha sin argumentos adicionales
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 se carga en una tabla llamada "Transactions".
-
La variable de sistema DateFormat configurada en el formato MM/DD/YYYY.
-
La variable de sistema BrokenWeeks configurada en el formato 1.
-
La variable de sistema FirstWeekDay configurada en el formato 6.
-
Un load precedente que contiene lo siguiente:
-
La función weekday() que se establece como el campo, ''week_number", que devuelve el año y el número de semana en que se realizaron las transacciones.
-
La función weekname() que se establece como el campo denominado "week_day", para mostrar el valor del día de la semana de cada fecha de transacción.
-
Script de carga
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
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 | 2021/53 |
8184 | 12/28/2021 | Mar | 2021/53 |
8185 | 12/29/2021 | Mié | 2021/53 |
8186 | 12/30/2021 | Jue | 2021/53 |
8187 | 12/31/2021 | Vie | 2021/53 |
8188 | 01/01/2022 | Sáb | 2022/01 |
8189 | 01/02/2022 | Dom | 2022/02 |
8190 | 01/03/2022 | Lun | 2022/02 |
8191 | 01/04/2022 | Mar | 2022/02 |
8192 | 01/05/2022 | Mié | 2022/02 |
8193 | 01/06/2022 | Jue | 2022/02 |
8194 | 01/07/2022 | Vie | 2022/02 |
8195 | 01/08/2022 | Sáb | 2022/02 |
8196 | 01/09/2022 | Dom | 2022/03 |
8197 | 01/10/2022 | Lun | 2022/03 |
8198 | 01/11/2022 | Mar | 2022/03 |
8199 | 01/12/2022 | Mié | 2022/03 |
8200 | 01/13/2022 | Jue | 2022/03 |
8201 | 01/14/2022 | Vie | 2022/03 |
El campo week_number se crea en la instrucción load anterior utilizando la función weekname() e introduciendo el campo de fecha como argumento de la función.
La función weekname() inicialmente identifica en qué semana cae el valor de la fecha y devuelve el recuento del número de semana y el año en que se lleva a cabo la transacción.
La variable de sistema FirstWeekDay establece el domingo como el primer día de la semana. La variable de sistema BrokenWeeks establece que la aplicación utilice semanas divididas, lo que significa que la semana 1 comenzará el 1 de enero.
La semana 1 comienza el 1 de enero, que es sábado y, por lo tanto, las transacciones que ocurren en esta fecha devuelven el valor 2022/01 (el año y el número de semana).
Debido a que la aplicación usa semanas divididas y el primer día de la semana es el domingo, las transacciones que ocurren del 2 al 8 de enero devuelven el valor 2022/02 (semana número 2 de 2022). Un ejemplo de esto sería la transacción 8192 que tuvo lugar el 5 de enero y devuelve el valor 2022/02 para el campo "week_number".
Ejemplo 2: period_no
Vista general
Se utilizan el mismo conjunto de datos y el mismo escenario que en el primer ejemplo.
Sin embargo, en este ejemplo, la tarea es crear un campo, "previous_week_number", que devuelva el año y el número de semana anteriores a que se realizaran las transacciones.
Abra el Editor de carga de datos y agregue el siguiente script de carga en una nueva pestaña.
Script de carga
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
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 | 2021/52 |
8184 | 12/28/2021 | Mar | 2021/52 |
8185 | 12/29/2021 | Mié | 2021/52 |
8186 | 12/30/2021 | Jue | 2021/52 |
8187 | 12/31/2021 | Vie | 2021/52 |
8188 | 01/01/2022 | Sáb | 2021/52 |
8189 | 01/02/2022 | Dom | 2021/53 |
8190 | 01/03/2022 | Lun | 2021/53 |
8191 | 01/04/2022 | Mar | 2021/53 |
8192 | 01/05/2022 | Mié | 2021/53 |
8193 | 01/06/2022 | Jue | 2021/53 |
8194 | 01/07/2022 | Vie | 2021/53 |
8195 | 01/08/2022 | Sáb | 2022/01 |
8196 | 01/09/2022 | Dom | 2022/02 |
8197 | 01/10/2022 | Lun | 2022/02 |
8198 | 01/11/2022 | Mar | 2022/02 |
8199 | 01/12/2022 | Mié | 2022/02 |
8200 | 01/13/2022 | Jue | 2022/02 |
8201 | 01/14/2022 | Vie | 2022/02 |
En este caso, debido a que se usó un valor period_no de -1 como argumento de desplazamiento en la función weekname(), la función primero identifica la semana en la que se realizan las transacciones. Luego busca una semana antes e identifica el primer milisegundo de esa semana.
La transacción 8192 tuvo lugar el 5 de enero de 2022. La función weekname() busca una semana antes, el 30 de diciembre de 2021, y devuelve el número de semana y el año de esa fecha: 2021/53.
Ejemplo: first_week_day
Vista general
Se utilizan el mismo conjunto de datos y el mismo escenario que en el primer ejemplo.
Sin embargo, en este ejemplo, la política de la empresa es que la semana laboral comience el martes.
Abra el Editor de carga de datos y agregue el siguiente script de carga en una nueva pestaña.
Script de carga
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
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 | 2021/52 |
8184 | 12/28/2021 | Mar | 2021/53 |
8185 | 12/29/2021 | Mié | 2021/53 |
8186 | 12/30/2021 | Jue | 2021/53 |
8187 | 12/31/2021 | Vie | 2021/53 |
8188 | 01/01/2022 | Sáb | 2022/01 |
8189 | 01/02/2022 | Dom | 2022/01 |
8190 | 01/03/2022 | Lun | 2022/01 |
8191 | 01/04/2022 | Mar | 2022/02 |
8192 | 01/05/2022 | Mié | 2022/02 |
8193 | 01/06/2022 | Jue | 2022/02 |
8194 | 01/07/2022 | Vie | 2022/02 |
8195 | 01/08/2022 | Sáb | 2022/02 |
8196 | 01/09/2022 | Dom | 2022/02 |
8197 | 01/10/2022 | Lun | 2022/02 |
8198 | 01/11/2022 | Mar | 2022/03 |
8199 | 01/12/2022 | Mié | 2022/03 |
8200 | 01/13/2022 | Jue | 2022/03 |
8201 | 01/14/2022 | Vie | 2022/03 |
Como el argumento first_week_date de 1 se usa en la función weekname(), utiliza el martes como primer día de la semana. La función por tanto determina que la semana 53 de 2021 comience el martes 28 de diciembre; y, debido a que la aplicación utiliza semanas divididas, la semana 1 comienza el 1 de enero de 2022 y finaliza el último milisegundo del lunes 3 de enero de 2022.
La transacción 8192 tuvo lugar el 5 de enero de 2022. Por lo tanto, utilizando un parámetro first_week_day de martes, la función weekname() devuelve el valor 2022/02 del campo "week_number".
Ejemplo 4: ejemplo de objeto gráfico
Vista general
Se utilizan el mismo conjunto de datos y el mismo escenario que en 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 año de la semana en que se realizaron las transacciones se crea como una medida en un objeto gráfico de la aplicación.
Script de carga
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
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
id
-
date
-
=week_day (date)
Para calcular el inicio de la semana en que se realiza una transacción, cree la siguiente medida:
=weekname(date)
id | date | =weekday(date) | =weekname(date) |
---|---|---|---|
8183 | 12/27/2021 | Lun | 2021/53 |
8184 | 12/28/2021 | Mar | 2021/53 |
8185 | 12/29/2021 | Mié | 2021/53 |
8186 | 12/30/2021 | Jue | 2021/53 |
8187 | 12/31/2021 | Vie | 2021/53 |
8188 | 01/01/2022 | Sáb | 2022/01 |
8189 | 01/02/2022 | Dom | 2022/02 |
8190 | 01/03/2022 | Lun | 2022/02 |
8191 | 01/04/2022 | Mar | 2022/02 |
8192 | 01/05/2022 | Mié | 2022/02 |
8193 | 01/06/2022 | Jue | 2022/02 |
8194 | 01/07/2022 | Vie | 2022/02 |
8195 | 01/08/2022 | Sáb | 2022/02 |
8196 | 01/09/2022 | Dom | 2022/03 |
8197 | 01/10/2022 | Lun | 2022/03 |
8198 | 01/11/2022 | Mar | 2022/03 |
8199 | 01/12/2022 | Mié | 2022/03 |
8200 | 01/13/2022 | Jue | 2022/03 |
8201 | 01/14/2022 | Vie | 2022/03 |
El campo "week_number" se crea como una medida en el objeto gráfico utilizando la función weekname() e introduciendo el campo de fecha como el argumento de la función.
La función weekname() identifica inicialmente en qué semana cae el valor de la fecha y devuelve el recuento del número de semana y el año en que se lleva a cabo la transacción.
La variable de sistema FirstWeekDay establece el domingo como el primer día de la semana. La variable de sistema BrokenWeeks configura la aplicación para usar semanas divididas, lo que significa que la semana 1 comienza el 1 de enero.
Debido a que la aplicación utiliza semanas divididas y el primer día de la semana es el domingo, las transacciones que ocurren del 2 al 8 de enero devuelven el valor 2022/02, la semana número 2 en 2022. Observe que la transacción 8192 tuvo lugar el 5 de enero y devuelve el valor 2022/02 para el campo "week_number".
Ejemplo 5: 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 un conjunto de transacciones de la última semana de 2019 y las primeras dos semanas de 2020 en una tabla llamada "Transactions".
-
La variable de sistema BrokenWeeks configurada en el formato 0.
-
La variable de sistema ReferenceDay configurada en el formato 2.
-
La variable de sistema DateFormat configurada en el formato MM/DD/YYYY.
Script de carga
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
Cargue los datos y abra una hoja. Cree una nueva tabla.
Cree una dimensión calculada usando la siguiente expresión:
=weekname(date)
Para calcular el total de ventas, cree la siguiente medida de agregación:
=sum(amount)
Establezca el Formato numérico de la medida en Moneda.
weekname(date) | =sum(amount) |
---|---|
2019/52 | $125.69 |
2020/01 | $346.51 |
2020/02 | $347.57 |
2020/03 | $122.01 |
Para demostrar los resultados de usar la función weekname() en este escenario, agregue el siguiente campo como una dimensión:
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 la aplicación utiliza semanas ininterrumpidas y la semana 1 requiere un mínimo de dos días en enero debido a la variable de sistema ReferenceDay, la semana 1 de 2020 incluye transacciones desde el 29 de diciembre de 2019.