# inlunarweek - función de script y de gráfico

Esta función determina si timestamp se encuentra dentro de la semana lunar que contiene a base\_date. Las semanas lunares en Qlik Sense se definen contando el 1 de enero como el primer día de la semana. Aparte de la última semana del año, cada semana contendrá exactamente siete días.

Sintaxis:

InLunarWeek (timestamp, base\_date, period\_no[, first\_week\_day])

Tipo de datos que devuelve: Booleano

Nota informativa

En Qlik Sense, el valor booleano verdadero viene representado por -1 y el valor falso está representado por 0.

La función `inlunarweek()` determina en qué semana lunar cae `base_date`. Luego devuelve un resultado booleano una vez que ha determinado si cada valor de marca de tiempo ocurre durante la misma semana lunar que el `base_date`.

Diagrama de la función `inlunarweek()`

Diagrama de la función `inlunarweek()`

Diagrama de la función `inlunarweek()`inlunarweek() ![Diagrama de ejemplo de la función inlunarweek, que muestra las fechas para las que la función devolverá un valor de TRUE, dada la información de entrada.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-overview.png)

## Cuándo se utiliza

La función `inlunarweek()` devuelve un resultado booleano. Normalmente, este tipo de función se utiliza como condición en una expresión condicional. Esto devolvería una agregación o cálculo dependiendo de si la fecha evaluada ocurrió durante la semana lunar en cuestión.

Por ejemplo, la función `inlunarweek()` se puede utilizar para identificar todos los equipos fabricados en una determinada semana lunar.

Argumentos

| Argumento | Descripción |
| --- | --- |
| timestamp | La fecha que desea comparar con base\_date. |
| base\_date | La fecha que se utiliza para evaluar la semana lunar. |
| period\_no | La semana lunar puede desplazarse mediante period\_no; period\_no es un entero, en el que el valor 0 indica la semana lunar que contiene a base\_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. |

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `inlunarweek('01/12/2013', '01/14/2013',<br>0)` | Devuelve `TRUE`, porque el valor de `timestamp`, 01/12/2013, cae en la semana del 01/08/2013 al 01/14/2013. |
| `inlunarweek('01/12/2013', '01/07/2013',<br>0)` | Devuelve `FALSE`, porque la `base_date` 01/07/2013 está en la semana lunar definida como de 01/01/2013 a 01/07/2013. |
| `inlunarweek('01/12/2013', '01/14/2013',<br>-1)` | Devuelve `FALSE`. Especificar un valor de period\_no como -1 cambia la semana a la semana anterior, del 01/01/2013 al 01/07/2013. |
| `inlunarweek('01/07/2013', 01/14/2013',<br>-1)` | Devuelve `TRUE`. Comparado con el ejemplo anterior, la fecha-hora `timestamp` está en la semana posterior a tenerse en cuenta el desplazamiento hacia atrás. |
| `inlunarweek('01/11/2006', '01/08/2006',<br>0, 3)` | Devuelve `FALSE`. Especificar un valor de 3 para `first_week_day` significa que el inicio del año se calcula a partir del 01/04/2013. Por lo tanto, el valor de `base`\_date cae en la primera semana y el valor de `timestamp` cae en la semana del 01/11/2013 al 01/17/2013. |

La función `inlunarweek()` se utiliza a menudo en combinación con las siguientes funciones:

Funciones relacionadas

| Función | Interacción |
| --- | --- |
| [lunarweekname - función de script y de gráfico](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lunarweekname.htm) | Esta función sirve para indicar el número de semana lunar del año en el que ocurre una fecha de entrada. |

## 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 en su navegador.

## Ejemplo 1: sin argumentos adicionales

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos de transacciones en el mes de enero, que se carga en una tabla denominada `Transactions`.

* El campo de fecha se ha proporcionado en el formato (MM/DD/AAAA) de la variable del sistema `DateFormat`.

Cree un campo, `in_lunar_week`, que determine si las transacciones tuvieron lugar en la misma semana lunar que el 10 de enero.

Script de carga

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `date`

* `in_lunar_week`

Tabla de resultados

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

La función `inlunarweek()`, ejemplo básico

La función `inlunarweek()`, ejemplo básico

La función `inlunarweek()`inlunarweek(), ejemplo básico![Ejemplo de uso de la función inlunarweek, que muestra el rango de fechas para las que la función devolverá un valor de TRUE, dada la información de entrada.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-basic-example.png)

El campo `in_lunar_week` se crea en la instrucción load anterior utilizando la función `inlunarweek()` e insertando lo siguiente como argumentos de la función:

* El campo `date`

* Una fecha codificada para el 10 de enero como `base_date`

* Un `period_no` de 0

Como las semanas lunares comienzan el 1 de enero, el 10 de enero caería en la semana lunar que comienza el 8 de enero y finaliza el 14 de enero. Por lo tanto, cualquier transacción que ocurra entre esas dos fechas en enero devolvería un valor booleano de `TRUE`. Esto se valida en la tabla de resultados.

## Ejemplo 2: period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inlunarweek.htm)

#### Ejemplos y resultados:

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Se utilizan el mismo conjunto de datos y escenario que en el primer ejemplo.

* El campo de fecha se ha proporcionado en el formato de la variable del sistema `DateFormat` (MM/DD/AAAA).

Sin embargo, en este ejemplo, la tarea es crear un campo, `2_lunar_weeks_later`, que determine si las transacciones se realizaron o no dos semanas lunares después del 10 de enero.

Script de carga

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 2) as [2_lunar_weeks_later]
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `date`

* `2_lunar_weeks_later`

Tabla de resultados

| fecha | 2\_lunar\_weeks\_later |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | 0 |
| 1/9/2022 | 0 |
| 1/10/2022 | 0 |
| 1/11/2022 | 0 |
| 1/12/2022 | 0 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | -1 |
| 1/23/2022 | -1 |

La función `inlunarweek()`, ejemplo de period\_no

La función `inlunarweek()`, ejemplo de period\_no

La función `inlunarweek()`inlunarweek(), ejemplo de period\_no![La función inlunarweek, ejemplo de period_no](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-period-no.png)

En este caso, debido a que se utilizó un `period_no` de 2 como argumento del desplazamiento en la función `inlunarweek()`, la función define la semana que comienza el 22 de enero como la semana lunar con la que contrastar para validar las transacciones. Por lo tanto, cualquier transacción que ocurra entre el 22 de enero y el 28 de enero, devolverá un resultado booleano de `TRUE`.

## Ejemplo 3: first\_week\_day

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inlunarweek.htm)

#### Script de carga y resultados

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 utiliza el mismo conjunto de datos y escenario que el primer ejemplo. Sin embargo, en el ejemplo, establecimos que las semanas lunares comiencen el 6 de enero.

* Se utilizan el mismo conjunto de datos y escenario que en el primer ejemplo.

* Se utiliza la variable predefinida del sistema `DateFormat`: DD/MM/AAAA.

* Un argumento `first_week_day` de 5. Esto establece que las semanas lunares comiencen el 5 de enero.

Script de carga

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        inlunarweek(date,'01/10/2022', 0,5) as in_lunar_week
        ;
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `date`

* `in_lunar_week`

Tabla de resultados

| date | in\_lunar\_week |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | -1 |
| 1/7/2022 | -1 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | 0 |
| 1/14/2022 | 0 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

La función `inlunarweek()`, ejemplo de first\_week\_day

La función `inlunarweek()`, ejemplo de first\_week\_day

La función `inlunarweek()`inlunarweek(), ejemplo de first\_week\_day![Ejemplo de uso de la función inlunarweek, que muestra el rango de fechas para las que la función devolverá un valor de TRUE, dada la información de entrada.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inlunarweek-first-week-day.png)

En este caso, debido a que el argumento `first_week_date` de 5 se usa en la función `inlunarweek()`, se desplaza el inicio del calendario de la semana lunar al 6 de enero. Por lo tanto, el 10 de enero cae dentro de la semana lunar que comienza el 6 de enero y finaliza el 12 de enero. Cualquier transacción que se encuentre entre estas dos fechas devolverá un valor booleano de `TRUE`.

## Ejemplo 4: Objeto gráfico

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inlunarweek.htm)

#### Script de carga y expresión de gráfico:

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Se utilizan el mismo conjunto de datos y escenario que en el primer ejemplo.

* El campo de fecha se ha proporcionado en el formato de la variable del sistema DateFormat (MM/DD/AAAA).

Sin embargo, en este ejemplo, el conjunto de datos sin modificar se carga en la aplicación. El cálculo que determina si las transacciones tuvieron lugar en la misma semana lunar del 10 de enero se crea como una medida en un objeto gráfico de la aplicación.

Script de carga

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load
*
Inline 
[
id,date,amount
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión: date.

Para calcular si una transacción tiene lugar en la semana lunar que contiene el 10 de enero, cree la siguiente medida:

= inlunarweek(date,'01/10/2022', 0)

Tabla de resultados

| date | =inlunarweek(date,'01/10/2022', 0) |
| --- | --- |
| 1/5/2022 | 0 |
| 1/6/2022 | 0 |
| 1/7/2022 | 0 |
| 1/8/2022 | -1 |
| 1/9/2022 | -1 |
| 1/10/2022 | -1 |
| 1/11/2022 | -1 |
| 1/12/2022 | -1 |
| 1/13/2022 | -1 |
| 1/14/2022 | -1 |
| 1/15/2022 | 0 |
| 1/16/2022 | 0 |
| 1/17/2022 | 0 |
| 1/18/2022 | 0 |
| 1/19/2022 | 0 |
| 1/20/2022 | 0 |
| 1/21/2022 | 0 |
| 1/22/2022 | 0 |
| 1/23/2022 | 0 |

## Ejemplo 5: Escenario

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inlunarweek.htm)

#### Script de carga y expresión de gráfico:

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla denominada Products.

* Información que consiste en la identificación del producto, la fecha de fabricación y el precio de fabricación.

Se ha identificado que, debido a un error en el equipo, los productos que se fabricaron en la semana lunar que englobaba al 12 de enero eran defectuosos. Al usuario final le gustaría tener un objeto gráfico que muestre, por nombre de semana lunar, el estado de los productos fabricados, si eran "defectuosos" o "sin defectos" y el coste de los productos fabricados en ese mes.

Script de carga

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
8183,'1/5/2022',42.32
8184,'1/6/2022',68.22
8185,'1/7/2022',15.25
8186,'1/8/2022',25.26
8187,'1/9/2022',37.23
8188,'1/10/2022',37.23
8189,'1/11/2022',17.17
8190,'1/12/2022',88.27
8191,'1/13/2022',57.42
8192,'1/14/2022',53.80
8193,'1/15/2022',82.06
8194,'1/16/2022',87.21
8195,'1/17/2022',95.93
8196,'1/18/2022',45.89
8197,'1/19/2022',36.23
8198,'1/20/2022',25.66
8199,'1/21/2022',82.77
8200,'1/22/2022',69.98
8201,'1/23/2022',76.11
];
```

Resultados

Haga lo siguiente:

1. Cargue los datos y abra una hoja. Cree una nueva tabla.

2. Cree una dimensión para mostrar los nombres de los meses:

   =lunarweekname(manufacture\_date)

3. Cree una medida para identificar cuáles de los productos son defectuosos y cuáles no tienen defectos utilizando la función inlunarweek():

   =if(only(inlunarweek(manufacture\_date,makedate(2022,01,12),0)), 'Defective','Faultless')

4. Cree una medida para sumar el cost\_price de los productos:

   =sum(cost\_price)

5. Establezca el Formato numérico de la medida en Moneda.

6. En Aspecto, deshabilite los Totales.

Tabla de resultados

| lunarweekname(manufacture\_date) | =if(only(inlunarweek(manufacture\_date,makedate(2022,01,12),0)), 'Defectuoso','Sin defectos') | =sum(cost\_price) |
| --- | --- | --- |
| 2022/01 | Sin defectos | $125.79 |
| 2022/02 | Defectuoso | $316.38 |
| 2022/03 | Sin defectos | $455.75 |
| 2022/04 | Sin defectos | $146.09 |

La función inlunarweek() devuelve un valor booleano al evaluar las fechas de fabricación de cada uno de los productos. Para cualquier producto fabricado en la semana lunar que contiene el 10 de enero, la función inlunarweek() devuelve un valor booleano de TRUE y marca los productos como "defectuosos". Para cualquier producto que devuelva un valor de FALSE, y que por lo tanto no se haya fabricado en esa semana, marca los productos como "Sin defectos".