# ColumnNo - função de gráfico

ColumnNo() retorna o número da coluna atual dentro do segmento da linha atual na tabela dinâmica. A primeira coluna é a de número 1.

Sintaxe:

ColumnNo([total])

Argumentos

| Argumento | Descrição |
| --- | --- |
| TOTAL | Se a tabela for unidimensional ou se o qualificador TOTAL for usado como argumento, o segmento de coluna atual será sempre igual à coluna inteira.<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) |

Se a tabela dinâmica tiver várias dimensões horizontais, o segmento de linha atual incluirá somente colunas com os mesmos valores que a coluna atual em todas as linhas de dimensão, exceto na linha que mostrar a última dimensão horizontal na ordem de classificação entre os campos. A ordem de classificação entre os campos para as dimensões horizontais das tabelas dinâmicas é definida simplesmente pela ordem das dimensões de cima para baixo.

Nota informativaA classificação por valores y em gráficos ou por colunas de expressão em tabelas não é permitida quando essa função de gráfico é usada em qualquer uma das expressões do gráfico. Essas alternativas de classificação estão, portanto, automaticamente desabilitadas. Quando você usar essa função de gráfico em uma visualização ou tabela, a classificação da visualização será revertida para a entrada classificada dessa função.

Exemplo: expressão de gráfico

| Exemplo | Resultado |
| --- | --- |
| ` IF( ColumnNo()=1, 0, Sum(Sales) / Before(Sum(Sales)))  ` | Se o `ColumnNo` for igual a 1, o gráfico retornará zero. Caso contrário, retornará o resultado de `Sum(Sales) / Before(Sum(Sales)`. Nesse exemplo, o gráfico retornará os valores da coluna 2 em diante, enquanto a coluna 1 retornará zero. |

## Exemplo - Fundamentos de ColumnNo

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

#### Expressão de gráfico

Visão geral

Um conjunto de dados contém dados de vendas trimestrais. Esse exemplo multiplica o valor de vendas de cada período pelo número da coluna do período.

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:

  * `Period`

  * `Sales`

Script de carregamento

```
Example:
Load * inline [
Period, Sales
Q1, 1000
Q2, 2000
Q3, 3000
Q4, 4000
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela dinâmica e adicione esse campo como uma dimensão de coluna:

* `Period`

Crie a seguinte medida:

* `=Sum(Sales) * ColumnNo()` para calcular a soma dos valores de vendas multiplicados pelo número da coluna, que neste exemplo é o trimestre.

Tabela de resultados

| T1 | T2 | T3 | T4 |
| --- | --- | --- | --- |
| 1000 | 4000 | 9000 | 16000 |

A soma do valor das vendas de cada trimestre é multiplicada pelo resultado da função `ColumnNo`. Por exemplo, o valor das vendas em `Q4` é 4000, e a saída da função `ColumnNo` retorna `4` porque `Q4` é a quarta coluna. Portanto, a expressão da medida multiplica `4000` por `4` e retorna `16000`.

## Exemplo - Cenário de ColumnNo

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

#### Expressão de gráfico

Visão geral

Um conjunto de dados contém números de vendas trimestrais. Uma empresa deseja aumentar os dados de vendas para T1 e T3 (as colunas ímpares) em 5% e aumentar as vendas para as colunas restantes (T2 e T4) em 10%.

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:

  * `Period`

  * `Sales`

Script de carregamento

```
Example:
Load * inline [
Period, Sales
Q1, 1000
Q2, 2000
Q3, 3000
Q4, 4000
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela dinâmica e adicione esse campo como uma dimensão de coluna:

* `Period`

Crie as seguintes medidas:

* `=Sum(Sales)` para calcular a soma das vendas.

* `=If(Odd(ColumnNo()), Amount * 1.05, Amount * 1.10)` para aumentar os valores de vendas para as colunas ímpares em 5% e para as colunas restantes em 10%.

Tabela de resultados

| T1 | T2 | T3 | T4 |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) | Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) | Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) | Sum(Sales) | If(Odd(ColumnNo()), Amount \* 1.05, Amount \* 1.10) |
| 1000 | 1050 | 2000 | 2200 | 3000 | 3150 | 4000 | 4400 |

Os resultados mostram que os valores de venda das colunas ímpares, 1 e 3 (`Q1` e `Q3`), aumentaram em 5%, enquanto as colunas pares restantes, 2 e 4 (`Q2` e `Q4`), aumentaram em 10%.

## Exemplo - Cenário avançado de ColumnNo

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

#### Expressão de gráfico

Visão geral

Esse exemplo usa o mesmo conjunto de dados do cenário anterior para apresentar o total acumulado dos valores em cada período.

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:

  * `Period`

  * `Sales`

Script de carregamento

```
Example:
Load * inline [
Period, Sales
Q1, 1000
Q2, 2000
Q3, 3000
Q4, 4000
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela dinâmica e adicione esse campo como uma dimensão de coluna:

* `Period`

Crie a seguinte medida:

* `=RangeSum(Before(Sum(Sales), 0, ColumnNo()))` para calcular o total acumulado.

Tabela de resultados

| T1 | T2 | T3 | T4 |
| --- | --- | --- | --- |
| 1000 | 3000 | 6000 | 10000 |

Este exemplo mostra como usar a função `ColumnNo` para gerar um total corrente. A explicação a seguir fornece mais detalhes sobre a expressão da medida: `RangeSum(Before(Sum(Sales), 0, ColumnNo()))`.

`Sum(Sales)`: calcula a soma das vendas para a célula atual na tabela dinâmica.

`Before(Sum(Sales), 0, ColumnNo())`: a função `Before` recupera os valores das colunas anteriores na tabela dinâmica.

* O argumento `Sum(Sales)` garante que a função recupere a soma de `Sales` para as células anteriores.

* O valor de deslocamento de `0` especifica o deslocamento da coluna (restante no segmento de linha atual da coluna atual).

* `ColumnNo()` determina quantas colunas devem ser retrocedidas ao recuperar os dados. Representa dinamicamente a posição da coluna atual (por exemplo, para a coluna 3, `ColumnNo()` é igual a `3`, então a função consulta três colunas para trás).

`RangeSum()`: a função `RangeSum` calcula a soma do intervalo de valores fornecidos. Ela lida com valores nulos, tratando-os como zero. Nessa expressão, `RangeSum` gera efetivamente um total cumulativo ao somar todos os valores anteriores de `Sales` recuperados pela função `Before()`, e também as vendas da célula atual.