# Only - función de gráfico

Only() devuelve un valor si hay un solo resultado posible de los datos agregados. Por ejemplo, buscar el único producto en el que el precio por unidad sea 9 devolverá NULL si más de un producto tiene un precio por unidad de 9.

Sintaxis:

Only([{SetExpression}] [TOTAL [&lt;fld {,fld}&gt;]] expr)

Tipo de datos que devuelve: dual

Argumentos

| Argumento | Descripción |
| --- | --- |
| expr | La expresión o el campo que contiene los datos que se han de medir. |
| SetExpression | De forma predeterminada, la función de agregación agregará sobre el conjunto de registros posibles definidos por la selección. Se puede definir un conjunto alternativo de registros mediante una expresión de análisis de conjuntos. |
| TOTAL | Si la palabra TOTAL aparece antes de los argumentos de la función, el cálculo se realiza sobre todos los valores posibles dadas las selecciones actuales y no solo aquellas que pertenecen al valor dimensional actual, es decir, no tiene en cuenta las dimensiones del gráfico.<br><br>Usar TOTAL [&lt;fld {.fld}&gt;], donde al cualificador TOTAL le sigue una lista de uno o más nombres de campo como un subconjunto de las variables de dimensión del gráfico, crea un subconjunto de los valores totales posibles.<br><br>[Definir el ámbito de agregación](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Nota de sugerenciaUtilice Only() cuando desee un resultado NULL si existen múltiples valores posibles en los datos de muestra.

Ejemplo: expresión de gráfico

| Ejemplo | Resultado |
| --- | --- |
| `Only(Category)` | Muestra la `Category` siempre que sea única dentro del contexto. |

## Ejemplo: fundamentos de Only

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/only.htm)

#### Expresión de gráfico

Descripción

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 de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `Customer`

  * `Product`

  * `UnitSales`

  * `UnitPrice`

Script de carga

```
Example:
LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD||25
Canutility|AA|8|15
Canutility|CC||19
] (delimiter is '|');
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla con las siguientes medidas:

* `=Only({<UnitPrice={9}>} Product)`, para calcular el único `Product` que tiene un `UnitPrice` de `9`.

* `=Only({<Product={DD}>} Customer)`, para calcular el único `Customer` que vende un `Product` llamado `DD`.

* `=Only({<UnitPrice={20}>} UnitSales)`, para calcular el número de `UnitSales` donde `UnitPrice` es `20`.

* `=Only({<UnitPrice={15}>} UnitSales)`, para calcular los valores de `UnitSales` donde `UnitPrice = 15`.

Results table

| Only({&lt;UnitPrice={9}&gt;} Product) | Only({&lt;Product={DD}&gt;} Customer) | Only({&lt;UnitPrice={20}&gt;} UnitSales) | Only({&lt;UnitPrice={15}&gt;} UnitSales) |
| --- | --- | --- | --- |
| BB | Betacab | 2 | - |

En este ejemplo, observe lo siguiente:

* La primera columna devuelve el valor `BB` porque este es el único `Product` que tiene un `UnitPrice` de `9`.

* La segunda columna devuelve `Betacab` porque es el único `Customer` que vende un `Product` llamado `DD`.

* La tercera columna devuelve `2` porque este es el único valor de `UnitSales` donde `UnitPrice = 20`.

* La cuarta columna devuelve `NULL` porque no hay ningún resultado en el que `UnitPrice = 15`. En este conjunto de datos, hay dos valores de `UnitSales` en los que `UnitPrice =15`.

## Ejemplo: escenario de Only

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/only.htm)

#### Expresión de gráfico

Descripción

Un conjunto de datos contiene las ventas de productos por periodo. La empresa quiere determinar si un producto se vende en una sola tienda o en varias.

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 de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `Date`

  * `RecordID`

  * `StoreProduct`

  * `Sales`

Script de carga

```
Example:
Load * inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
```

Resultados

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

* `StoreProduct`

Cree las siguientes medidas:

* `=Only(Store)`, para calcular la única tienda en la que se vende el producto.

* `=If(IsNull(Only(Store)), 'Multiple Stores', 'Single Store')`, para calcular si el producto se vende en una sola tienda o en varias.

* `=Sum(Sales)`, para calcular el total de ventas del producto.

Results table

| StoreProduct | Only(Store) | If(IsNull(Only(Store)), 'Multiple Stores', 'Single Store') | Sum(Sales) |
| --- | --- | --- | --- |
| Apple | A | Single Store | 330 |
| Banana | B | Single Store | 255 |
| Carrot | - | Multiple Stores | 165 |

Los resultados indican que `Apples` y `Bananas` se venden en una sola tienda, mientras que `Carrots` se vende en varias tiendas.

## Ejemplo: escenario avanzado para crear una tabla de registros de un solo mes

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/BasicAggregationFunctions/only.htm)

#### Expresión de gráfico

Descripción

Este ejemplo utiliza la función `Only` para mostrar una tabla línea por línea de los registros de un solo mes. Para lograrlo, se utiliza el análisis de conjuntos para delimitar el conjunto de registros deseado. El análisis de conjuntos requiere al menos una medida, aunque como en realidad no necesitamos agregar el conjunto de registros, podemos utilizar eficazmente la función de agregación `Only` para albergar el ámbito del análisis de conjuntos.

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 de datos denominada `Example`.

* Una sentencia LOAD precedente que deriva el campo `MonthYear` del campo `Date` truncando el día del mes, utilizando la función `MonthStart`, y devolviendo una representación de fecha del día 1 de cada mes. Este resultado se proporciona a la función `Date` para ajustar el formato de visualización a `MMM YY`, por ejemplo, `Jan 24`.

* Los siguientes campos de la tabla de datos:

  * `Date`

  * `RecordID`

  * `StoreProduct`

  * `Sales`

  * `Store`

Script de carga

```
Example:
Load
*,
date(MonthStart (Date),'MMM YY') AS MonthYear
inline [
Date, RecordID, StoreProduct, Sales, Store
2024-01-01, 1, Apple, 100, A
2024-01-15, 2, Banana, 80, B
2024-01-30, 3, Carrot, 50, C
2024-02-05, 4, Apple, 120, A
2024-02-20, 5, Banana, 90, B
2024-02-28, 6, Carrot, 60, D
2024-03-10, 7, Apple, 110, A
2024-03-22, 8, Banana, 85, B
2024-03-31, 9, Carrot, 55, C
];
```

Resultados

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

* `MonthYear`

* `RecordID`

* `Date`

* `StoreProduct`

* `Store`

Cree las siguientes medidas:

* `=Only({$<MonthYear={'$(=MaxString(MonthYear))'}>} Sales)`, para evaluar el valor de `Sales` y devolver solo aquellos en los que `MonthYear` sea el último (más reciente) `MonthYear` disponible, basándose en las selecciones actuales de la tabla. La expansión de signo dólar ($) realiza un cálculo en línea utilizando la función `MaxString`, `$(=MaxString(MonthYear))`, que devuelve la representación en texto del último valor de `MonthYear`.

Nota informativaIntentar filtrar `MonthYear` basándose en la representación numérica, por ejemplo utilizando la función ` Max  `, `Max(MonthYear)`, no daría ningún resultado. El análisis de conjuntos aplica selecciones de filtros basadas únicamente en la representación textual de cualquier tipo de datos dual; un tipo de datos con una representación numérica y textual como `Date`.

Results table

| MonthYear | RecordID | Date | StoreProduct | Only({$&lt;MonthYear={‘$(=MaxString(MonthYear))’}&gt;} Sales) |
| --- | --- | --- | --- | --- |
| Mar 24 | 7 | 2024-03-10 | Apple | 110 |
| Mar 24 | 8 | 2024-03-22 | Banana | 85 |
| Mar 24 | 9 | 2024-03-31 | Carrot | 55 |

El resultado de salida de la función `Only` produce una tabla de registros que presenta por defecto el valor de venta para el último, o más reciente, `MonthYear` que esté disponible en los datos. Si selecciona un mes anterior en la columna `MonthYear`, como `Feb 24`, aparecerá el último valor de ventas de ese mes.

## Más información

* [Análisis de conjuntos](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [Definir el ámbito de agregación](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)