lunarweekend - función de script y de gráfico
Esta función devuelve un valor correspondiente a una marca de tiempo del último milisegundo del último día de la semana lunar que contiene a date. Las semanas lunares en Qlik Sense se definen contando el 1 de enero como el primer día de la semana y, aparte de la última semana del año, contendrán exactamente siete días.
Sintaxis:
LunarweekEnd(date[, period_no[, first_week_day]])
Tipo de datos que devuelve: dual
La función lunarweekend() determina en qué semana lunar cae date. Luego devuelve una marca de tiempo, en formato de fecha, del último milisegundo de esa semana.
Argumento | Descripción |
---|---|
date | La fecha o marca de tiempo para evaluar. |
period_no | period_no es un entero o expresión que devuelve un entero, donde el valor 0 indica la semana lunar que contiene a date. Los valores negativos en period_no indican semanas lunares precedentes y los valores positivos indican semanas lunares subsiguientes. |
first_week_day | Un desplazamiento que puede ser mayor que o menor que cero. Esto cambia el comienzo del año por el número especificado de días y/o fracciones de un día. |
Cuándo se utiliza
La función lunarweekend() se suele utilizar como parte de una expresión cuando el usuario desea que el cálculo utilice la fracción del día que aún no ha transcurrido. A diferencia de la función weekend(), la última semana lunar de cada año natural finalizará el 31 de diciembre. Por ejemplo, la función lunarweekend() se puede utilizar para calcular los intereses que aún no se han devengado durante la semana.
Ejemplo | Resultado |
---|---|
lunarweekend('01/12/2013') | Devuelve 01/14/2013 23:59:59. |
lunarweekend('01/12/2013', -1) | Devuelve 01/07/2013 23:59:59. |
lunarweekend('01/12/2013', 0, 1) | Devuelve 01/15/2013 23:59:59. |
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 1: 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 2022, 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, end_of_week, que devuelve una marca de tiempo del final de la semana lunar en que las transacciones tuvieron lugar.
Script de carga
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekend(date) as end_of_week,
timestamp(lunarweekend(date)) as end_of_week_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
date
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
2/28/2022 | 03/04/2022 | 3/4/2022 11:59:59 PM |
3/16/2022 | 03/18/2022 | 3/18/2022 11:59:59 PM |
4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
5/7/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
5/16/2022 | 05/20/2022 | 5/20/2022 11:59:59 PM |
6/15/2022 | 06/17/2022 | 6/17/2022 11:59:59 PM |
6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
7/9/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
7/22/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
7/23/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
7/27/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
8/19/2022 | 08/19/2022 | 8/19/2022 11:59:59 PM |
9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
10/14/2022 | 10/14/2022 | 10/14/2022 11:59:59 PM |
10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |
El campo end_of_week se crea en la instrucción load anterior utilizando la función lunarweekend() e introduciendo el campo date como argumento de la función.
La función lunarweekend() identifica en qué semana lunar cae el valor de la fecha y devuelve una marca de tiempo del último milisegundo de esa semana.
La transacción 8189 tuvo lugar el 19 de enero. La función lunarweekend() identifica que la semana lunar comienza el 15 de enero. Por lo tanto, el valor end_of_week de esa transacción devuelve el último milisegundo de la semana lunar, que es el 21 de enero a las 23:59:59.
Ejemplo 2: period_no
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 primer ejemplo.
-
La creación de un campo, previous_lunar_week_end, que devuelve la marca de tiempo del final de la semana lunar anterior a la transacción.
Script de carga
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekend(date,-1) as previous_lunar_week_end,
timestamp(lunarweekend(date,-1)) as previous_lunar_week_end_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
date
-
previous_lunar_week_end
-
previous_lunar_week_end_timestamp
date | previous_lunar_week_end | previous_lunar_week_end_timestamp |
---|---|---|
1/7/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
1/19/2022 | 01/14/2022 | 1/14/2022 11:59:59 PM |
2/5/2022 | 02/04/2022 | 2/4/2022 11:59:59 PM |
2/28/2022 | 02/25/2022 | 2/25/2022 11:59:59 PM |
3/16/2022 | 03/11/2022 | 3/18/2022 11:59:59 PM |
4/1/2022 | 03/25/2022 | 3/25/2022 11:59:59 PM |
5/7/2022 | 05/06/2022 | 5/6/2022 11:59:59 PM |
5/16/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
6/15/2022 | 06/10/2022 | 6/10/2022 11:59:59 PM |
6/26/2022 | 06/24/2022 | 6/24/2022 11:59:59 PM |
7/9/2022 | 07/08/2022 | 7/8/2022 11:59:59 PM |
7/22/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
7/23/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
7/27/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
8/2/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
8/8/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
8/19/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
9/26/2022 | 09/23/2022 | 9/23/2022 11:59:59 PM |
10/14/2022 | 10/07/2022 | 10/7/2022 11:59:59 PM |
10/29/2022 | 10/28/2022 | 10/28/2022 11:59:59 PM |
En este caso, debido a que se usó un period_no de -1 como argumento del desplazamiento en la función lunarweekend(), la función primero identifica la semana lunar en la que se realizaron las transacciones. Luego se desplaza a una semana antes e identifica el último milisegundo de esa semana.
La transacción 8189 tuvo lugar el 19 de enero. La función lunarweekend() identifica que la semana lunar comienza el 15 de enero. Por lo tanto, la semana lunar anterior comenzó el 8 de enero y finalizó el 14 de enero a las 23:59:59; este es el valor que devuelve para el campo previous_lunar_week_end.
Ejemplo: first_week_day
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, establecemos que las semanas lunares comiencen el 5 de enero.
Script de carga
SET DateFormat='MM/DD/YYYY';
Transactions:
Load
*,
lunarweekend(date,0,4) as end_of_week,
timestamp(lunarweekend(date,0,4)) as end_of_week_timestamp
;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
-
date
-
end_of_week
-
end_of_week_timestamp
date | end_of_week | end_of_week_timestamp |
---|---|---|
1/7/2022 | 01/11/2022 | 1/11/2022 11:59:59 PM |
1/19/2022 | 01/25/2022 | 1/25/2022 11:59:59 PM |
2/5/2022 | 02/08/2022 | 2/8/2022 11:59:59 PM |
2/28/2022 | 03/01/2022 | 3/1/2022 11:59:59 PM |
3/16/2022 | 03/22/2022 | 3/22/2022 11:59:59 PM |
4/1/2022 | 04/05/2022 | 4/5/2022 11:59:59 PM |
5/7/2022 | 05/10/2022 | 5/10/2022 11:59:59 PM |
5/16/2022 | 05/17/2022 | 5/17/2022 11:59:59 PM |
6/15/2022 | 06/21/2022 | 6/21/2022 11:59:59 PM |
6/26/2022 | 06/28/2022 | 6/28/2022 11:59:59 PM |
7/9/2022 | 07/12/2022 | 7/12/2022 11:59:59 PM |
7/22/2022 | 07/26/2022 | 7/26/2022 11:59:59 PM |
7/23/2022 | 07/26/2022 | 7/26/2022 11:59:59 PM |
7/27/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
8/2/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
8/8/2022 | 08/09/2022 | 8/9/2022 11:59:59 PM |
8/19/2022 | 08/23/2022 | 8/23/2022 11:59:59 PM |
9/26/2022 | 09/27/2022 | 9/27/2022 11:59:59 PM |
10/14/2022 | 10/18/2022 | 10/18/2022 11:59:59 PM |
10/29/2022 | 11/01/2022 | 11/1/2022 11:59:59 PM |
En este caso, como el argumento first_week_date de 4 se usa en la función lunarweekend(), desplaza el inicio del año del 1 de enero al 5 de enero.
La transacción 8189 tuvo lugar el 19 de enero. Debido a que las semanas lunares comienzan el 5 de enero, la función lunarweekend() identifica que la semana lunar que contiene el 19 de enero también comienza el 19 de enero. Por lo tanto, el final de esa semana lunar se produce el 25 de enero a las 23:59:59; este es el valor que devuelve para el campo end_of_week.
Ejemplo 4: 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 una marca de tiempo con el final de la semana lunar en que se realizaron las transacciones, se crea como una medida en un objeto gráfico de la aplicación.
Script de carga
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión: date.
Agregue las siguientes medidas:
=lunarweekend(date)
=timestamp(lunarweekend(date))
date | =lunarweekend(date) | =timestamp(lunarweekend(date)) |
---|---|---|
1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
2/28/2022 | 03/04/2022 | 3/4/2022 11:59:59 PM |
3/16/2022 | 03/18/2022 | 3/18/2022 11:59:59 PM |
4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
5/7/2022 | 05/13/2022 | 5/13/2022 11:59:59 PM |
5/16/2022 | 05/20/2022 | 5/20/2022 11:59:59 PM |
6/15/2022 | 06/17/2022 | 6/17/2022 11:59:59 PM |
6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
7/9/2022 | 07/15/2022 | 7/15/2022 11:59:59 PM |
7/22/2022 | 07/22/2022 | 7/22/2022 11:59:59 PM |
7/23/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
7/27/2022 | 07/29/2022 | 7/29/2022 11:59:59 PM |
8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
8/19/2022 | 08/19/2022 | 8/19/2022 11:59:59 PM |
9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
10/14/2022 | 10/14/2022 | 10/14/2022 11:59:59 PM |
10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |
La medida end_of_week se crea en el objeto gráfico utilizando la función lunarweekend() e introduciendo el campo date como argumento de la función.
La función lunarweekend() identifica en qué semana lunar cae el valor de la fecha y devuelve una marca de tiempo del último milisegundo de esa semana.
La transacción 8189 tuvo lugar el 19 de enero. La función lunarweekend() identifica que la semana lunar comienza el 15 de enero. Por lo tanto, el valor end_of_week de esa transacción devuelve el último milisegundo de la semana lunar, que es el 21 de enero a las 23:59:59.
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:
-
Un conjunto de datos que se carga en una tabla denominada Employee_Expenses.
-
Las ID de los empleados, los nombres de empleado y las reclamaciones o declaraciones de gastos diarios promedio de cada empleado.
Al usuario final le gustaría tener un objeto gráfico que muestre, por ID de empleado y nombre de empleado, las reclamaciones de gastos estimados que faltan por presentar durante el resto de la semana lunar.
Script de carga
Employee_Expenses:
Load
*
Inline
[
employee_id,employee_name,avg_daily_claim
182,Mark, $15
183,Deryck, $12.5
184,Dexter, $12.5
185,Sydney,$27
186,Agatha,$18
];
Resultados
Haga lo siguiente:
-
Cargue los datos y abra una hoja. Cree una nueva tabla.
-
Agregue los siguientes campos como dimensiones.
-
employee_id
-
employee_name
-
-
A continuación, cree la siguiente medida para calcular el interés acumulado:
=(lunarweekend(today(1))-today(1))*avg_daily_claim
-
Establezca el Formato numérico de la medida en Moneda.
employee_id | employee_name | =(lunarweekend(today(1))-today(1))*avg_daily_claim |
---|---|---|
182 | Mark | $75.00 |
183 | Deryck | $62.50 |
184 | Dexter | $62.50 |
185 | Sydney | $135.00 |
186 | Agatha | $90.00 |
Al utilizar la fecha de hoy como único argumento, la función lunarkweekend() devuelve la fecha de finalización de la semana lunar actual. Luego, al restar la fecha de hoy de la fecha de finalización de la semana lunar, la expresión devuelve el número de días que quedan de esta semana.
A continuación, este valor se multiplica por la reclamación de gastos diarios promedio de cada empleado para calcular el valor estimado de las reclamaciones que se espera que haga cada empleado en la semana lunar restante.