# Only - função de gráfico

Only() retorna um valor se houver um e somente um resultado possível a partir dos dados agregados. Por exemplo, procurar o único produto em que o preço unitário =9 retornará NULL se mais de um produto tiver um preço unitário de 9.

Sintaxe:

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

Tipo de dados de retorno: dual

Argumentos

| Argumento | Descrição |
| --- | --- |
| expr | A expressão ou campo que contém os dados a serem medidos. |
| SetExpression | Por padrão, a função de agregação agregará um conjunto de registros possíveis definidos pela seleção. Um conjunto de registros alternativos pode ser definido por uma expressão de análise. |
| TOTAL | Se a palavra TOTAL ocorrer antes dos argumentos da função, o cálculo será feito sobre todos os valores possíveis, dadas as seleções atuais, e não apenas sobre os pertinentes ao valor dimensional atual, isto é, desconsiderando as dimensões do gráfico.<br><br>Usando TOTAL [&lt;fld {.fld}&gt;], em que o qualificador TOTAL é seguido por uma lista de um ou mais nomes de campo como um subconjunto das variáveis de dimensão de gráfico, você cria um subconjunto dos valores possíveis totais.<br><br>[Definindo o escopo de agregação](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

Nota de dicaUse Only() quando desejar obter um resultado NULL, se houver vários valores possíveis nos dados de exemplo.

Exemplo: expressão de gráfico

| Exemplo | Resultado |
| --- | --- |
| `Only(Category)` | Exibe a `Category`, desde que seja exclusivo dentro do contexto. |

## Exemplo - Fundamentos de Only

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

#### Expressão de gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `Customer`

  * `Product`

  * `UnitSales`

  * `UnitPrice`

Script de carregamento

```
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

Carregue os dados e abra uma pasta. Crie uma nova tabela com as seguintes medidas:

* `=Only({<UnitPrice={9}>} Product)` para calcular o único `Product` que tem um `UnitPrice` de `9`.

* `=Only({<Product={DD}>} Customer)` para calcular o único `Customer` que vende um `Product` chamado `DD`.

* `=Only({<UnitPrice={20}>} UnitSales)` para calcular o número de `UnitSales` em que `UnitPrice` é `20`.

* `=Only({<UnitPrice={15}>} UnitSales)` para calcular os valores de `UnitSales` em que o `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 | - |

Nesse exemplo, observe o seguinte:

* A primeira coluna retorna o valor `BB` porque esse é o único `Product` que tem um `UnitPrice` de `9`.

* A segunda coluna retorna `Betacab` porque é o único `Customer` que vende um `Product` chamado `DD`.

* A terceira coluna retorna `2` porque esse é o único valor de `UnitSales` em que `UnitPrice = 20`.

* A quarta coluna retorna `NULL` porque não há um único resultado em que `UnitPrice = 15`. Nesse conjunto de dados, há dois valores de `UnitSales` em que o `UnitPrice =15`.

## Exemplo - Cenário de Only

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

#### Expressão de gráfico

Visão geral

Um conjunto de dados contém vendas de produtos por período. A empresa quer determinar se um produto é vendido em uma única loja ou em várias lojas.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `Date`

  * `RecordID`

  * `StoreProduct`

  * `Sales`

Script de carregamento

```
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

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* `StoreProduct`

Crie as seguintes medidas:

* `=Only(Store)` para calcular a loja exclusiva onde o produto é vendido.

* `=If(IsNull(Only(Store)), 'Multiple Stores', 'Single Store')` para calcular se o produto é vendido em uma única loja ou em várias lojas.

* `=Sum(Sales)` para calcular o total de vendas do produto.

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 |

Os resultados indicam que `Apples` e `Bananas` são vendidos em apenas uma loja, enquanto `Carrots` é vendido em várias lojas.

## Exemplo - Cenário avançado para criar uma tabela de registros de um único mês

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

#### Expressão de gráfico

Visão geral

Este exemplo usa a função `Only` para mostrar uma tabela linha por linha de registros de um único mês. Para isso, a análise de conjunto é usada para delimitar o conjunto de registros desejado. A análise de conjunto requer pelo menos uma medida, porém, como não precisamos agregar o conjunto de registros, podemos usar efetivamente a função de agregação `Only` para hospedar o escopo da análise de conjunto.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Uma instrução de LOAD anterior que deriva o campo `MonthYear` do campo `Date` truncando o dia do mês, usando a função `MonthStart` e retornando uma representação de data do dia 1º de cada mês. Esse resultado é fornecido à função `Date` para definir o formato de exibição para `MMM YY`, por exemplo, `Jan 24`.

* Os campos a seguir na tabela de dados:

  * `Date`

  * `RecordID`

  * `StoreProduct`

  * `Sales`

  * `Store`

Script de carregamento

```
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

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `MonthYear`

* `RecordID`

* `Date`

* `StoreProduct`

* `Store`

Crie as seguintes medidas:

* `=Only({$<MonthYear={'$(=MaxString(MonthYear))'}>} Sales)` para avaliar o valor de `Sales` e retornar somente aqueles em que `MonthYear` é o último (mais recente) `MonthYear` disponível, com base nas seleções atuais da tabela. A expansão de sinal de dólar ($) realiza um cálculo em linha usando a função `MaxString`, `$(=MaxString(MonthYear))`, que retorna a representação de texto do último valor de `MonthYear`.

Nota informativaA tentativa de filtrar `MonthYear` com base na representação numérica, por exemplo, usando a função ` Max  `, `Max(MonthYear)`, não produziria nenhum resultado. A análise de conjunto aplica seleções de filtros com base apenas na representação de texto de qualquer tipo de dado duplo; um tipo de dado com uma representação numérica e 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 |

A saída da função `Only` produz uma tabela de registros cujo padrão é apresentar o valor de venda para o `MonthYear` mais recente disponível nos dados. Se você selecionar um mês anterior na coluna `MonthYear`, como `Feb 24`, aparecerá o valor de vendas mais recente desse mês.

## Saiba mais

* [Análise de conjunto](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* [Definindo o escopo de agregação](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm)