> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-home-button.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação da categoria "Outras funções"

# Outras funções

export const DeprecatedBadge = () => {
  return <div className="deprecatedBadge">
            <div className="deprecatedIcon">
            <svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M13 0H1C0.734784 0 0.48043 0.105357 0.292893 0.292893C0.105357 0.48043 0 0.734784 0 1V2.5C0 2.76522 0.105357 3.01957 0.292893 3.20711C0.48043 3.39464 0.734784 3.5 1 3.5V9C1 9.26522 1.10536 9.51957 1.29289 9.70711C1.48043 9.89464 1.73478 10 2 10H12C12.2652 10 12.5196 9.89464 12.7071 9.70711C12.8946 9.51957 13 9.26522 13 9V3.5C13.2652 3.5 13.5196 3.39464 13.7071 3.20711C13.8946 3.01957 14 2.76522 14 2.5V1C14 0.734784 13.8946 0.48043 13.7071 0.292893C13.5196 0.105357 13.2652 0 13 0ZM12 9H2V3.5H12V9ZM13 2.5H1V1H13V2.5ZM5 5.5C5 5.36739 5.05268 5.24021 5.14645 5.14645C5.24021 5.05268 5.36739 5 5.5 5H8.5C8.63261 5 8.75979 5.05268 8.85355 5.14645C8.94732 5.24021 9 5.36739 9 5.5C9 5.63261 8.94732 5.75979 8.85355 5.85355C8.75979 5.94732 8.63261 6 8.5 6H5.5C5.36739 6 5.24021 5.94732 5.14645 5.85355C5.05268 5.75979 5 5.63261 5 5.5Z" fill="currentColor" />
            </svg>
        </div>
            Deprecated feature
        </div>;
};

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Experimental feature. <u><a href="/docs/beta-and-experimental-features#experimental-features">Learn more.</a></u>
        </div>;
};

<Note>
  A documentação das funções abaixo é gerada a partir da system table `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

<div id="FQDN">
  ## FQDN
</div>

Introduzido em: v20.1.0

Retorna o nome de domínio totalmente qualificado do servidor ClickHouse.

**Sintaxe**

```sql theme={null}
FQDN()
```

**Aliases**: `fullHostName`

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o nome de domínio totalmente qualificado do servidor ClickHouse. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT fqdn()
```

```response title=Response theme={null}
┌─FQDN()──────────────────────────┐
│ clickhouse.us-east-2.internal │
└─────────────────────────────────┘
```

<div id="MACNumToString">
  ## MACNumToString
</div>

Introduzido em: v1.1.0

Interpreta um número [`UInt64`](/pt-BR/reference/data-types/int-uint) como um endereço MAC no formato big-endian.
Retorna o endereço MAC correspondente no formato `AA:BB:CC:DD:EE:FF` (números hexadecimais separados por dois-pontos) como string.

**Sintaxe**

```sql theme={null}
MACNumToString(num)
```

**Argumentos**

* `num` — número UInt64. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna um endereço MAC no formato AA:BB:CC:DD:EE:FF. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT MACNumToString(149809441867716) AS mac_address;
```

```response title=Response theme={null}
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘
```

<div id="MACStringToNum">
  ## MACStringToNum
</div>

Introduzida em: v1.1.0

A função inversa de MACNumToString. Se o endereço MAC estiver em um formato inválido, retorna 0.

**Sintaxe**

```sql theme={null}
MACStringToNum(s)
```

**Argumentos**

* `s` — Endereço MAC em formato de string. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna um número do tipo UInt64. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;
```

```response title=Response theme={null}
1108152157446
```

<div id="MACStringToOUI">
  ## MACStringToOUI
</div>

Introduzido em: v1.1.0

Dado um endereço MAC no formato AA:BB:CC:DD:EE:FF (números hexadecimais separados por dois-pontos), retorna os três primeiros octetos como um número UInt64. Se o endereço MAC tiver um formato inválido, retorna 0.

**Sintaxe**

```sql theme={null}
MACStringToOUI(s)
```

**Argumentos**

* `s` — endereço MAC em formato de string. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Os três primeiros octetos como um número UInt64. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;
```

```response title=Response theme={null}
20566
```

<div id="authenticatedUser">
  ## authenticatedUser
</div>

Introduzido em: v25.11.0

Se o usuário da sessão tiver sido alterado com o comando EXECUTE AS, esta função retorna o nome do usuário original usado para autenticação e criação da sessão.
Alias: authUser()

**Sintaxe**

```sql theme={null}
authenticatedUser()
```

**Aliases**: `authUser`

**Argumentos**

* Nenhum.

**Valor retornado**

O nome do usuário autenticado. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
EXECUTE as u1;
            SELECT currentUser(), authenticatedUser();
```

```response title=Response theme={null}
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘
```

<div id="bar">
  ## bar
</div>

Introduzido em: v1.1.0

Cria um gráfico de barras.
Desenha uma faixa com largura proporcional a (x - min) e igual a width caracteres quando x = max.
A faixa é desenhada com precisão de um oitavo de caractere.

**Sintaxe**

```sql theme={null}
bar(x, min, max[, width])
```

**Argumentos**

* `x` — Tamanho a exibir. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)
* `min` — O valor mínimo. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)
* `max` — O valor máximo. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)
* `width` — Opcional. A largura da barra em caracteres. O padrão é `80`. [`const (U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`const Float*`](/pt-BR/reference/data-types/float) ou [`const Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

Retorna uma barra em arte Unicode como string. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
toHour(EventTime) AS h,
count() AS c,
bar(c, 0, 600000, 20) AS bar
FROM test.hits
GROUP BY h
ORDER BY h ASC
```

```response title=Response theme={null}
┌──h─┬──────c─┬─bar────────────────┐
│  0 │ 292907 │ █████████▋         │
│  1 │ 180563 │ ██████             │
│  2 │ 114861 │ ███▋               │
│  3 │  85069 │ ██▋                │
│  4 │  68543 │ ██▎                │
│  5 │  78116 │ ██▌                │
│  6 │ 113474 │ ███▋               │
│  7 │ 170678 │ █████▋             │
│  8 │ 278380 │ █████████▎         │
│  9 │ 391053 │ █████████████      │
│ 10 │ 457681 │ ███████████████▎   │
│ 11 │ 493667 │ ████████████████▍  │
│ 12 │ 509641 │ ████████████████▊  │
│ 13 │ 522947 │ █████████████████▍ │
│ 14 │ 539954 │ █████████████████▊ │
│ 15 │ 528460 │ █████████████████▌ │
│ 16 │ 539201 │ █████████████████▊ │
│ 17 │ 523539 │ █████████████████▍ │
│ 18 │ 506467 │ ████████████████▊  │
│ 19 │ 520915 │ █████████████████▎ │
│ 20 │ 521665 │ █████████████████▍ │
│ 21 │ 542078 │ ██████████████████ │
│ 22 │ 493642 │ ████████████████▍  │
│ 23 │ 400397 │ █████████████▎     │
└────┴────────┴────────────────────┘
```

<div id="blockNumber">
  ## blockNumber
</div>

Introduzido em: v1.1.0

Retorna um número de sequência monotonicamente crescente do [bloco](/pt-BR/resources/develop-contribute/introduction/architecture#block) que contém a linha.
O número do bloco retornado é atualizado na medida do possível, ou seja, pode não ser totalmente preciso.

**Sintaxe**

```sql theme={null}
blockNumber()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Número de sequência do bloco de dados em que a linha se encontra. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT blockNumber()
FROM
(
    SELECT *
    FROM system.numbers
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─blockNumber()─┐
│             7 │
│             7 │
└───────────────┘
┌─blockNumber()─┐
│             8 │
│             8 │
└───────────────┘
┌─blockNumber()─┐
│             9 │
│             9 │
└───────────────┘
┌─blockNumber()─┐
│            10 │
│            10 │
└───────────────┘
┌─blockNumber()─┐
│            11 │
│            11 │
└───────────────┘
```

<div id="blockSerializedSize">
  ## blockSerializedSize
</div>

Introduzido em: v20.3.0

Retorna o tamanho não comprimido, em bytes, de um bloco de valores em disco.

**Sintaxe**

```sql theme={null}
blockSerializedSize(x1[, x2[, ...]])
```

**Argumentos**

* `x1[, x2, ...]` — Qualquer quantidade de valores dos quais se deseja obter o tamanho não comprimido do bloco. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna o número de bytes que serão gravados em disco para um bloco de valores sem compressão. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT blockSerializedSize(maxState(1)) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

<div id="blockSize">
  ## blockSize
</div>

Introduzido em: v1.1.0

No ClickHouse, as consultas são processadas em [blocos](/pt-BR/resources/develop-contribute/introduction/architecture#block) (fragmentos).
Esta função retorna o tamanho (número de linhas) do bloco em que a função é chamada.

**Sintaxe**

```sql theme={null}
blockSize()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o número de linhas do bloco atual. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT blockSize()
FROM system.numbers LIMIT 5
```

```response title=Response theme={null}
┌─blockSize()─┐
│           5 │
│           5 │
│           5 │
│           5 │
│           5 │
└─────────────┘
```

<div id="buildId">
  ## buildId
</div>

Introduzido em: v20.5.0

Retorna o ID de compilação gerado por um compilador para o binário do servidor ClickHouse em execução.
Se for executada no contexto de uma tabela distribuída, essa função gera uma coluna comum com valores correspondentes a cada shard.
Caso contrário, produz um valor constante.

**Sintaxe**

```sql theme={null}
buildId()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o ID da compilação. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT buildId()
```

```response title=Response theme={null}
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘
```

<div id="byteSize">
  ## byteSize
</div>

Introduzido em: v21.1.0

Retorna uma estimativa do tamanho em bytes descomprimido de seus argumentos na memória.
Para argumentos `String`, a função retorna o comprimento da string + 8 (comprimento).
Se a função tiver vários argumentos, ela acumula seus tamanhos em bytes.

**Sintaxe**

```sql theme={null}
byteSize(arg1[, arg2, ...])
```

**Argumentos**

* `arg1[, arg2, ...]` — Valores de qualquer tipo de dado cujos tamanhos em bytes não comprimidos devem ser estimados. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna uma estimativa do tamanho em bytes dos argumentos na memória. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT byteSize('string')
```

```response title=Response theme={null}
┌─byteSize('string')─┐
│                 15 │
└────────────────────┘
```

**Vários argumentos**

```sql title=Query theme={null}
SELECT byteSize(NULL, 1, 0.3, '')
```

```response title=Response theme={null}
┌─byteSize(NULL, 1, 0.3, '')─┐
│                         19 │
└────────────────────────────┘
```

<div id="catboostEvaluate">
  ## catboostEvaluate
</div>

Introduzido em: v22.9.0

Avalia um modelo CatBoost externo. [CatBoost](https://catboost.ai) é uma biblioteca de gradient boosting de código aberto desenvolvida pela Yandex para aprendizado de máquina.
Aceita um caminho para um modelo CatBoost e argumentos do modelo (`features`).

**Pré-requisitos**

1. Compile a biblioteca de avaliação do CatBoost

Antes de avaliar modelos CatBoost, a biblioteca `libcatboostmodel.<so|dylib>` deve estar disponível. Consulte a [documentação do CatBoost](https://catboost.ai/docs/concepts/c-plus-plus-api_dynamic-c-pluplus-wrapper.html) para saber como compilá-la.

Em seguida, especifique o caminho para `libcatboostmodel.<so|dylib>` na configuração do ClickHouse:

```xml theme={null}
<clickhouse>
...
    <catboost_lib_path>/path/to/libcatboostmodel.so</catboost_lib_path>
...
</clickhouse>
```

Por motivos de segurança e isolamento, a avaliação do modelo não é executada no processo do servidor, mas no processo clickhouse-library-bridge.
Na primeira execução de `catboostEvaluate()`, o servidor inicia o processo clickhouse-library-bridge, caso ele ainda não esteja em execução. Ambos os processos
se comunicam por meio de uma interface HTTP. Por padrão, a porta `9012` é usada. Uma porta diferente pode ser especificada da seguinte forma - isso é útil se a porta
`9012` já estiver atribuída a outro serviço.

```xml theme={null}
<library_bridge>
    <port>9019</port>
</library_bridge>
```

2. Treine um modelo catboost usando a libcatboost

Consulte [Training and applying models](https://catboost.ai/docs/features/training.html#training) para saber como treinar modelos catboost com base em um conjunto de dados de treinamento.

**Sintaxe**

```sql theme={null}
catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])
```

**Argumentos**

* `path_to_model` — Caminho para o modelo CatBoost. [`const String`](/pt-BR/reference/data-types/string)
* `feature` — Um ou mais atributos/argumentos do modelo. [`Float*`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna o resultado da avaliação do modelo. [`Float64`](/pt-BR/reference/data-types/float)

**Exemplos**

**catboostEvaluate**

```sql title=Query theme={null}
SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
```

```response title=Response theme={null}
4.695691092573497
```

<div id="colorOKLABToSRGB">
  ## colorOKLABToSRGB
</div>

Introduzido em: v26.2.0

Converte uma cor do espaço de cores perceptual OKLab para o espaço de cores sRGB.

A cor de entrada é especificada no espaço de cores OKLab. Se os valores de entrada estiverem fora
das faixas típicas do OKLab, o resultado dependerá da implementação.

O OKLab usa três componentes:

* L: luminosidade perceptual (normalmente no intervalo \[0..1])
  * a: eixo oponente verde-vermelho
  * b: eixo oponente azul-amarelo

Os componentes a e b são teoricamente ilimitados, mas, na prática, ficam entre -0.4 e 0.4.
O OKLab foi projetado para ser perceptualmente uniforme
e, ao mesmo tempo, ter baixo custo computacional.

A conversão foi concebida para ser o inverso de colorSRGBToOKLAB e consiste em
os seguintes estágios:

1. Conversão de OKLab para Linear sRGB.
   2\) Conversão de Linear sRGB para sRGB com codificação gama.

O argumento opcional gamma especifica o expoente usado ao converter de Linear sRGB
para valores RGB com codificação gama. Se não for especificado, será usado um valor gamma padrão
para manter a consistência com colorSRGBToOKLAB.

Para mais informações sobre o espaço de cores OKLab e sua relação com sRGB, consulte [https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color\&#95;value/oklab](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color\&#95;value/oklab)
.

**Sintaxe**

```sql theme={null}
colorOKLABToSRGB(tuple [, gamma])
```

**Argumentos**

* `tuple` — Uma tupla de três valores numéricos `L`, `a`, `b`, em que `L` está no intervalo `[0...1]`. [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)
* `gamma` — Opcional. O expoente usado para converter o Linear sRGB de volta para sRGB, aplicando `(x ^ (1 / gamma)) * 255` a cada canal `x`. O padrão é `2.2`. [`Float64`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna uma tupla (R, G, B) que representa valores de cor sRGB. [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)

**Exemplos**

**Converta OKLAB para sRGB (Float)**

```sql title=Query theme={null}
SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;
```

```response title=Response theme={null}
┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘
```

**Converter OKLAB para sRGB (UInt8)**

```sql title=Query theme={null}
WITH colorOKLABToSRGB((0.7, 0.1, 0.54)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (255,0,0)    │
└──────────────┘
```

<div id="colorOKLCHToSRGB">
  ## colorOKLCHToSRGB
</div>

Introduzido em: v25.7.0

Converte uma cor do espaço de cores perceptivo **OKLCH** para o conhecido espaço de cores **sRGB**.

Se `L` estiver fora do intervalo `[0...1]`, `C` for negativo ou `H` estiver fora do intervalo `[0...360]`, o resultado será definido pela implementação.

<Note>
  **OKLCH** é uma versão cilíndrica do espaço de cores OKLab.
  Suas três coordenadas são `L` (a luminosidade no intervalo `[0...1]`), `C` (croma `>= 0`) e `H` (matiz em graus no intervalo `[0...360]`).
  OKLab/OKLCH foi projetado para ser perceptualmente uniforme, mantendo baixo custo computacional.
</Note>

A conversão é a inversa de [`colorSRGBToOKLCH`](#colorSRGBToOKLCH):

1. OKLCH para OKLab.
   2\) OKLab para Linear sRGB
   3\) Linear sRGB para sRGB

O segundo argumento, gamma, é usado na última etapa.

Para referências de cores no espaço OKLCH e como elas correspondem às cores sRGB, consulte [https://oklch.com/](https://oklch.com/).

**Sintaxe**

```sql theme={null}
colorOKLCHToSRGB(tuple [, gamma])
```

**Argumentos**

* `tuple` — Uma tupla de três valores numéricos `L`, `C`, `H`, em que `L` está no intervalo `[0...1]`, `C >= 0` e `H` está no intervalo `[0...360]`. [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)
* `gamma` — Opcional. O expoente usado para converter Linear sRGB de volta para sRGB, aplicando `(x ^ (1 / gamma)) * 255` a cada canal `x`. O padrão é `2.2`. [`Float64`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna uma tupla (R, G, B) que representa valores de cor sRGB. [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)

**Exemplos**

**Converter OKLCH para sRGB**

```sql title=Query theme={null}
SELECT colorOKLCHToSRGB((0.6, 0.12, 40)) AS rgb;
```

```response title=Response theme={null}
┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘
```

**Converter OKLCH em sRGB (UInt8)**

```sql title=Query theme={null}
WITH colorOKLCHToSRGB((0.6, 0.12, 40)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘
```

<div id="colorSRGBToOKLAB">
  ## colorSRGBToOKLAB
</div>

Introduzido em: v26.2.0

Converte uma cor codificada no espaço de cores **sRGB** para o espaço de cores **OKLAB**, perceptualmente uniforme.

Se algum canal de entrada estiver fora de `[0...255]` ou se o valor de gamma não for positivo, o comportamento depende da implementação.

<Note>
  **OKLAB** é um espaço de cores perceptualmente uniforme.
  Suas três coordenadas são `L` (a luminosidade no intervalo `[0...1]`), `a (eixo Verde-Vermelho)` e `b (eixo Azul-Amarelo)`.
  O OKLab foi projetado para ser perceptualmente uniforme, mantendo baixo custo computacional.
</Note>

A conversão consiste em duas etapas:

1. sRGB para Linear sRGB
   2\) Linear sRGB para OKLab

**Sintaxe**

```sql theme={null}
colorSRGBToOKLAB(tuple[, gamma])
```

**Argumentos**

* `tuple` — Tupla de três valores R, G, B no intervalo `[0...255]`. [`Tuple(UInt8, UInt8, UInt8)`](/pt-BR/reference/data-types/tuple)
* `gamma` — Opcional. Expoente usado para linearizar o sRGB, aplicando `(x / 255)^gamma` a cada canal `x`. O padrão é `2.2`. [`Float64`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna uma tupla (L, a, b) que representa os valores no espaço de cores OKLAB. [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)

**Exemplos**

**Converta sRGB para OKLAB**

```sql title=Query theme={null}
SELECT colorSRGBToOKLAB((128, 64, 32), 2.2) AS lab;
```

```response title=Response theme={null}
┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘
```

<div id="colorSRGBToOKLCH">
  ## colorSRGBToOKLCH
</div>

Introduzido em: v25.7.0

Converte uma cor codificada no espaço de cores **sRGB** para o espaço de cores **OKLCH**, que é perceptualmente uniforme.

Se algum canal de entrada estiver fora de `[0...255]` ou se o valor de gamma não for positivo, o comportamento é definido pela implementação.

<Note>
  **OKLCH** é uma versão cilíndrica do espaço de cores OKLab.
  Suas três coordenadas são `L` (a luminosidade no intervalo `[0...1]`), `C` (croma `>= 0`) e `H` (a matiz em graus no intervalo `[0...360]`).
  OKLab/OKLCH foi projetado para ser perceptualmente uniforme, mantendo baixo custo computacional.
</Note>

A conversão consiste em três etapas:

1. sRGB para Linear sRGB
   2\) Linear sRGB para OKLab
   3\) OKLab para OKLCH.

Para ver referências de cores no espaço OKLCH e como elas correspondem às cores sRGB, consulte [https://OKLCH.com/](https://OKLCH.com/).

**Sintaxe**

```sql theme={null}
colorSRGBToOKLCH(tuple[, gamma])
```

**Argumentos**

* `tuple` — `Tuple` de três valores R, G, B no intervalo `[0...255]`. [`Tuple(UInt8, UInt8, UInt8)`](/pt-BR/reference/data-types/tuple)
* `gamma` — Opcional. Expoente usado para linearizar o sRGB, aplicando `(x / 255)^gamma` a cada canal `x`. O padrão é `2.2`. [`Float64`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna uma tupla (L, C, H) que representa os valores do espaço de cores OKLCH. [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)

**Exemplos**

**Converter sRGB em OKLCH**

```sql title=Query theme={null}
SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch;
```

```response title=Response theme={null}
┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘
```

<div id="connectionId">
  ## connectionId
</div>

Introduzido em: v21.3.0

Retorna o ID da conexão do cliente que enviou a consulta atual.
Esta função é mais útil em cenários de depuração.
Ela foi criada para manter a compatibilidade com a função `CONNECTION_ID` do MySQL.
Ela normalmente não é usada em consultas em produção.

**Sintaxe**

```sql theme={null}
connectionId()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o ID da conexão do cliente atual. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT connectionId();
```

```response title=Response theme={null}
┌─connectionId()─┐
│              0 │
└────────────────┘
```

<div id="countDigits">
  ## countDigits
</div>

Introduzido em: v20.8.0

Retorna o número de dígitos decimais necessários para representar um valor.

<Note>
  Esta função leva em conta as escalas dos valores decimais, ou seja, calcula o resultado com base no tipo inteiro subjacente, que é `(value * scale)`.

  Por exemplo:

  * `countDigits(42) = 2`
  * `countDigits(42.000) = 5`
  * `countDigits(0.04200) = 4`
</Note>

<Tip>
  Você pode verificar se há overflow em `Decimal64` com `countDigits(x) > 18`,
  embora isso seja mais lento do que [`isDecimalOverflow`](#isDecimalOverflow).
</Tip>

**Sintaxe**

```sql theme={null}
countDigits(x)
```

**Argumentos**

* `x` — Um valor inteiro ou decimal. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

Retorna o número de dígitos necessários para representar `x`. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT countDigits(toDecimal32(1, 9)), countDigits(toDecimal32(-1, 9)),
       countDigits(toDecimal64(1, 18)), countDigits(toDecimal64(-1, 18)),
       countDigits(toDecimal128(1, 38)), countDigits(toDecimal128(-1, 38));
```

```response title=Response theme={null}
┌─countDigits(toDecimal32(1, 9))─┬─countDigits(toDecimal32(-1, 9))─┬─countDigits(toDecimal64(1, 18))─┬─countDigits(toDecimal64(-1, 18))─┬─countDigits(toDecimal128(1, 38))─┬─countDigits(toDecimal128(-1, 38))─┐
│                             10 │                              10 │                              19 │                               19 │                               39 │                                39 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘
```

<div id="currentDatabase">
  ## currentDatabase
</div>

Introduzido em: v1.1.0

Retorna o nome do banco de dados atual.
Útil nos parâmetros do mecanismo de tabela em consultas `CREATE TABLE` nas quais você precisa especificar o banco de dados.

Veja também a [instrução `SET`](/pt-BR/reference/statements/use).

**Sintaxe**

```sql theme={null}
currentDatabase()
```

**Aliases**: `current_database`, `SCHEMA`, `DATABASE`

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o nome do banco de dados atual. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT currentDatabase()
```

```response title=Response theme={null}
┌─currentDatabase()─┐
│ default           │
└───────────────────┘
```

**Sintaxe SQL padrão sem parênteses**

```sql title=Query theme={null}
SELECT CURRENT_DATABASE
```

```response title=Response theme={null}
┌─CURRENT_DATABASE─┐
│ default          │
└──────────────────┘
```

<div id="currentProfiles">
  ## currentProfiles
</div>

Introduzido em: v21.9.0

Retorna um array com os perfis de configuração do usuário atual.

**Sintaxe**

```sql theme={null}
currentProfiles()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna um array de perfis de configuração do usuário atual. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT currentProfiles();
```

```response title=Response theme={null}
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘
```

<div id="currentQueryID">
  ## currentQueryID
</div>

Introduzido em: v25.2.0

Retorna o ID da consulta atual.

**Sintaxe**

```sql theme={null}
currentQueryID()
```

**Aliases**: `current_query_id`

**Argumentos**

* Nenhum.

**Valor retornado**

**Exemplos**

**Exemplo**

```sql title=Query theme={null}
SELECT currentQueryID();
```

```response title=Response theme={null}
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘
```

<div id="currentRoles">
  ## currentRoles
</div>

Introduzido em: v21.9.0

Retorna um array com as funções atribuídas ao usuário atual.

**Sintaxe**

```sql theme={null}
currentRoles()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna um array das funções atribuídas ao usuário atual. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT currentRoles();
```

```response title=Response theme={null}
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

<div id="currentSchemas">
  ## currentSchemas
</div>

Introduzido em: v23.7.0

Igual à função [`currentDatabase`](#currentDatabase), mas

* aceita um argumento booleano que é ignorado
* retorna o nome do banco de dados como um Array com um único valor.

A função `currentSchemas` existe apenas para compatibilidade com o PostgreSQL.
Use `currentDatabase`.

Veja também a [instrução `SET`](/pt-BR/reference/statements/use).

**Sintaxe**

```sql theme={null}
currentSchemas(bool)
```

**Aliases**: `current_schemas`

**Argumentos**

* `bool` — Um valor booleano, que é ignorado. [`Bool`](/pt-BR/reference/data-types/boolean)

**Valor retornado**

Retorna um array com um único elemento contendo o nome do banco de dados atual. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT currentSchemas(true)
```

```response title=Response theme={null}
┌─currentSchemas(true)─┐
│ ['default']          │
└──────────────────────┘
```

<div id="currentUser">
  ## currentUser
</div>

Introduzido em: v20.1.0

Retorna o nome do usuário atual.
Em uma consulta distribuída, retorna o nome do usuário que iniciou a consulta.

**Sintaxe**

```sql theme={null}
currentUser()
```

**Aliases**: `current_user`, `user`

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o nome do usuário atual ou, alternativamente, o login do usuário que iniciou a consulta. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT currentUser()
```

```response title=Response theme={null}
┌─currentUser()─┐
│ default       │
└───────────────┘
```

**Sintaxe SQL padrão sem parênteses**

```sql title=Query theme={null}
SELECT CURRENT_USER
```

```response title=Response theme={null}
┌─CURRENT_USER─┐
│ default      │
└──────────────┘
```

<div id="defaultProfiles">
  ## defaultProfiles
</div>

Introduzido em: v21.9.0

Retorna um array com os nomes dos perfis de configuração padrão do usuário atual.

**Sintaxe**

```sql theme={null}
defaultProfiles()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna um array com os nomes dos perfis de configuração padrão do usuário atual. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT defaultProfiles();
```

```response title=Response theme={null}
┌─defaultProfiles()─┐
│ ['default']       │
└───────────────────┘
```

<div id="defaultRoles">
  ## defaultRoles
</div>

Introduzido em: v21.9.0

Retorna um array com as funções padrão do usuário atual.

**Sintaxe**

```sql theme={null}
defaultRoles()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna um array de funções padrão do usuário atual. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT defaultRoles();
```

```response title=Response theme={null}
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

<div id="defaultValueOfArgumentType">
  ## defaultValueOfArgumentType
</div>

Introduzido em: v1.1.0

Retorna o valor padrão de um determinado tipo de dado.
Não inclui os valores padrão de colunas personalizadas definidas pelo usuário.

**Sintaxe**

```sql theme={null}
defaultValueOfArgumentType(expression)
```

**Argumentos**

* `expression` — Tipo arbitrário de valor ou uma expressão que resulta em um valor de tipo arbitrário. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna `0` para números, uma string vazia para Strings ou `NULL` para tipos Nullable. [`UInt8`](/pt-BR/reference/data-types/int-uint) ou [`String`](/pt-BR/reference/data-types/string) ou [`NULL`](/pt-BR/reference/syntax#null)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Int8));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│                                           0 │
└─────────────────────────────────────────────┘
```

**Exemplo de Nullable**

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Nullable(Int8)));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│                                                  ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘
```

<div id="defaultValueOfTypeName">
  ## defaultValueOfTypeName
</div>

Introduzido em: v1.1.0

Retorna o valor padrão para o nome de tipo fornecido.

**Sintaxe**

```sql theme={null}
defaultValueOfTypeName(type)
```

**Argumentos**

* `type` — Uma string que representa um nome de tipo. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor padrão para o nome de tipo especificado: `0` para números, uma string vazia para strings, ou `NULL` para [`UInt8`](/pt-BR/reference/data-types/int-uint) Nullable, [`String`](/pt-BR/reference/data-types/string) Nullable ou [`NULL`](/pt-BR/reference/syntax#null)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Int8');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Int8')─┐
│                              0 │
└────────────────────────────────┘
```

**Exemplo de Nullable**

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Nullable(Int8)');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│                                     ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘
```

<div id="displayName">
  ## displayName
</div>

Introduzido em: v22.11.0

Retorna o valor de `display_name` de [config](/pt-BR/concepts/features/configuration/server-config/configuration-files) ou o Fully Qualified Domain Name (FQDN) do servidor, caso não esteja definido.

**Sintaxe**

```sql theme={null}
displayName()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o valor de `display_name` da config ou o FQDN do servidor, caso não esteja definido. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT displayName();
```

```response title=Response theme={null}
┌─displayName()─┐
│ production    │
└───────────────┘
```

<div id="dumpColumnStructure">
  ## dumpColumnStructure
</div>

Introduzido em: v1.1.0

Exibe uma descrição detalhada da estrutura interna de uma coluna e do seu tipo de dados.

**Sintaxe**

```sql theme={null}
dumpColumnStructure(x)
```

**Argumentos**

* `x` — Valor do qual se deseja obter a descrição. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna uma descrição da estrutura de coluna usada para representar o valor. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'));
```

```response title=Response theme={null}
┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1))                  │
└──────────────────────────────────────────────────────────────┘
```

<div id="enabledProfiles">
  ## enabledProfiles
</div>

Introduzido em: v21.9.0

Retorna um array com os nomes dos perfis de configuração habilitados para o usuário atual.

**Sintaxe**

```sql theme={null}
enabledProfiles()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna um array com os nomes dos perfis de configuração habilitados para o usuário atual. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT enabledProfiles();
```

```response title=Response theme={null}
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘
```

<div id="enabledRoles">
  ## enabledRoles
</div>

Introduzido em: v21.9.0

Retorna um array das funções habilitadas para o usuário atual.

**Sintaxe**

```sql theme={null}
enabledRoles()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna um array com os nomes das funções habilitadas para o usuário atual. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT enabledRoles();
```

```response title=Response theme={null}
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────────────────────┘
```

<div id="errorCodeToName">
  ## errorCodeToName
</div>

Introduzido em: v20.12.0

Retorna o nome textual de um código de erro numérico do ClickHouse.
O mapeamento de códigos de erro numéricos para nomes de erro está disponível [aqui](https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/ErrorCodes.cpp).

**Sintaxe**

```sql theme={null}
errorCodeToName(error_code)
```

**Argumentos**

* `error_code` — Código de erro do ClickHouse. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

Retorna o nome textual de `error_code`. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT errorCodeToName(252);
```

```response title=Response theme={null}
┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS       │
└──────────────────────┘
```

<div id="file">
  ## file
</div>

Introduzido em: v21.3.0

Lê um arquivo como string e carrega os dados na coluna especificada.
O conteúdo do arquivo não é interpretado.

Veja também a função de tabela [`file`](/pt-BR/reference/functions/table-functions/file).

**Sintaxe**

```sql theme={null}
file(path[, default])
```

**Argumentos**

* `path` — O caminho do arquivo em relação a `user_files_path`. Suporta curingas `*`, `**`, `?`, `{abc,def}` e `{N..M}`, em que `N` e `M` são números e `'abc'` e `'def'` são strings. [`String`](/pt-BR/reference/data-types/string)
* `default` — O valor retornado se o arquivo não existir ou não puder ser acessado. [`String`](/pt-BR/reference/data-types/string) ou [`NULL`](/pt-BR/reference/syntax#null)

**Valor retornado**

Retorna o conteúdo do arquivo como string. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Inserir arquivos em uma tabela**

```sql title=Query theme={null}
INSERT INTO table SELECT file('a.txt'), file('b.txt');
```

```response title=Response theme={null}
```

<div id="filesystemAvailable">
  ## filesystemAvailable
</div>

Introduzido na versão: v20.1.0

Retorna a quantidade de espaço livre no sistema de arquivos que hospeda a persistência da database.
O valor retornado é sempre menor que o espaço livre total ([`filesystemUnreserved`](/pt-BR/reference/functions/regular-functions/other-functions#filesystemUnreserved)), porque parte do espaço é reservada para o sistema operacional.

**Sintaxe**

```sql theme={null}
filesystemAvailable([disk_name])
```

**Argumentos**

* `disk_name` — Opcional. O nome do disco para o qual encontrar a quantidade de espaço livre. Se omitido, usa o disco padrão. [`String`](/pt-BR/reference/data-types/string) ou [`FixedString`](/pt-BR/reference/data-types/fixedstring)

**Valor retornado**

Retorna a quantidade de espaço livre restante em bytes. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemAvailable()) AS "Available space";
```

```response title=Response theme={null}
┌─Available space─┐
│ 30.75 GiB       │
└─────────────────┘
```

<div id="filesystemCapacity">
  ## filesystemCapacity
</div>

Introduzido em: v20.1.0

Retorna a capacidade do sistema de arquivos em bytes.
É necessário que o [caminho](/pt-BR/reference/settings/server-settings/settings#path) para o diretório de dados esteja configurado.

**Sintaxe**

```sql theme={null}
filesystemCapacity([disk_name])
```

**Argumentos**

* `disk_name` — Opcional. O nome do disco cuja capacidade será obtida. Se omitido, usa o disco padrão. [`String`](/pt-BR/reference/data-types/string) ou [`FixedString`](/pt-BR/reference/data-types/fixedstring)

**Valor retornado**

Retorna a capacidade do sistema de arquivos em bytes. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";
```

```response title=Response theme={null}
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘
```

<div id="filesystemUnreserved">
  ## filesystemUnreserved
</div>

Introduzido na versão: v22.12.0

Retorna a quantidade total de espaço livre no sistema de arquivos que hospeda a persistência do banco de dados (anteriormente `filesystemFree`).
Veja também [`filesystemAvailable`](#filesystemAvailable).

**Sintaxe**

```sql theme={null}
filesystemUnreserved([disk_name])
```

**Argumentos**

* `disk_name` — Opcional. O nome do disco para o qual será buscada a quantidade total de espaço livre. Se omitido, usa o disco padrão. [`String`](/pt-BR/reference/data-types/string) ou [`FixedString`](/pt-BR/reference/data-types/fixedstring)

**Valor retornado**

Retorna a quantidade de espaço livre em bytes. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";
```

```response title=Response theme={null}
┌─Free space─┐
│ 32.39 GiB  │
└────────────┘
```

<div id="finalizeAggregation">
  ## finalizeAggregation
</div>

Introduzido em: v1.1.0

Dado um estado de agregação, esta função retorna o resultado da agregação (ou o estado finalizado ao usar o combinador [-State](/pt-BR/reference/functions/aggregate-functions/combinators#-state)).

**Sintaxe**

```sql theme={null}
finalizeAggregation(state)
```

**Argumentos**

* `state` — Estado da agregação. [`AggregateFunction`](/pt-BR/reference/data-types/aggregatefunction)

**Valor retornado**

Retorna o resultado final da agregação. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT finalizeAggregation(arrayReduce('maxState', [1, 2, 3]));
```

```response title=Response theme={null}
┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│                                                       3 │
└─────────────────────────────────────────────────────────┘
```

**Em combinação com initializeAggregation**

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

<div id="flipCoordinates">
  ## flipCoordinates
</div>

Introduzido em: v25.11.0

Inverte as coordenadas x e y de objetos geométricos. Essa operação troca latitude e longitude, o que é útil para converter entre diferentes sistemas de coordenadas ou corrigir a ordem das coordenadas.

Para um Point, troca as coordenadas x e y. Para geometrias complexas (LineString, Polygon, MultiPolygon, Ring, MultiLineString), aplica recursivamente a transformação a cada par de coordenadas.

A função oferece suporte tanto a tipos geométricos individuais (Point, Ring, Polygon, MultiPolygon, LineString, MultiLineString) quanto ao tipo Geometry Variant.

**Sintaxe**

```sql theme={null}
flipCoordinates(geometry)
```

**Argumentos**

* `geometry` — A geometria a ser transformada. Tipos suportados: Point (Tuple(Float64, Float64)), Ring (Array(Point)), Polygon (Array(Ring)), MultiPolygon (Array(Polygon)), LineString (Array(Point)), MultiLineString (Array(LineString)) ou Geometry (uma variante que contém qualquer um desses tipos).

**Valor retornado**

A geometria com as coordenadas invertidas. O tipo de retorno corresponde ao tipo de entrada. [`Point`](/pt-BR/reference/data-types/geo#point) ou [`Ring`](/pt-BR/reference/data-types/geo#ring) ou [`Polygon`](/pt-BR/reference/data-types/geo#polygon) ou [`MultiPolygon`](/pt-BR/reference/data-types/geo#multipolygon) ou [`LineString`](/pt-BR/reference/data-types/geo#linestring) ou [`MultiLineString`](/pt-BR/reference/data-types/geo#multilinestring) ou [`Geometry`](/pt-BR/reference/data-types/geo)

**Exemplos**

**basic\_point**

```sql title=Query theme={null}
SELECT flipCoordinates((1.0, 2.0));
```

```response title=Response theme={null}
(2.0, 1.0)
```

**anel**

```sql title=Query theme={null}
SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
```

```response title=Response theme={null}
[(2.0, 1.0), (4.0, 3.0)]
```

**polygon**

```sql title=Query theme={null}
SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
```

```response title=Response theme={null}
[[(2.0, 1.0), (4.0, 3.0)], [(6.0, 5.0), (8.0, 7.0)]]
```

**geometry\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POINT(10 20)'));
```

```response title=Response theme={null}
(20, 10)
```

**geometry\_polygon\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'));
```

```response title=Response theme={null}
[[(0, 0), (0, 5), (5, 5), (5, 0), (0, 0)]]
```

<div id="formatQuery">
  ## formatQuery
</div>

Introduzido em: v23.10.0

Retorna uma versão formatada, possivelmente multilinha, da consulta SQL fornecida. Gera uma exceção em caso de erro de parsing.
\[example:multiline]

**Sintaxe**

```sql theme={null}
formatQuery(query)
```

**Argumentos**

* `query` — A consulta SQL a ser formatada. [String](/pt-BR/reference/data-types/string)

**Valor retornado**

A consulta formatada [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**multilinha**

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

<div id="formatQueryOrNull">
  ## formatQueryOrNull
</div>

Introduzido em: v23.11.0

Retorna uma versão formatada, possivelmente em várias linhas, da consulta SQL fornecida. Retorna NULL em caso de erro de parsing.
\[exemplo:multilinha]

**Sintaxe**

```sql theme={null}
formatQueryOrNull(query)
```

**Argumentos**

* `query` — A consulta SQL a ser formatada. [String](/pt-BR/reference/data-types/string)

**Valor retornado**

A consulta formatada [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**múltiplas linhas**

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

<div id="formatQuerySingleLine">
  ## formatQuerySingleLine
</div>

Introduzido em: v23.10.0

Como `formatQuery()`, mas a string formatada retornada não contém quebras de linha. Lança uma exceção em caso de erro de parsing.
\[example:multiline]

**Sintaxe**

```sql theme={null}
formatQuerySingleLine(query)
```

**Argumentos**

* `query` — A consulta SQL a ser formatada. [String](/pt-BR/reference/data-types/string)

**Valor retornado**

A consulta formatada [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**múltiplas linhas**

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

<div id="formatQuerySingleLineOrNull">
  ## formatQuerySingleLineOrNull
</div>

Introduzido em: v23.11.0

Como formatQuery(), mas a string formatada retornada não contém nenhuma quebra de linha. Retorna NULL em caso de erro de parsing.
\[example:multiline]

**Sintaxe**

```sql theme={null}
formatQuerySingleLineOrNull(query)
```

**Argumentos**

* `query` — A consulta SQL a ser formatada. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

A consulta formatada [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**múltiplas linhas**

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

<div id="formatReadableDecimalSize">
  ## formatReadableDecimalSize
</div>

Introduzido em: v22.11.0

Dado um tamanho (número de bytes), esta função retorna um valor de tamanho legível e arredondado com sufixo (KB, MB etc.), como string.

A operação oposta desta função é [`parseReadableSize`](#parseReadableSize).

**Sintaxe**

```sql theme={null}
formatReadableDecimalSize(x)
```

**Argumentos**

* `x` — Tamanho em bytes. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna um tamanho legível e arredondado, com sufixo, na forma de uma [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Formatar tamanhos de arquivo**

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableDecimalSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.02 KB    │
│        1048576 │ 1.05 MB    │
│      192851925 │ 192.85 MB  │
└────────────────┴────────────┘
```

<div id="formatReadableQuantity">
  ## formatReadableQuantity
</div>

Introduzido em: v20.10.0

Dado um número, esta função retorna uma string com o número arredondado e um sufixo (mil, milhão, bilhão etc.).

Esta função aceita qualquer tipo numérico como entrada, mas, internamente, converte os valores para `Float64`.
Os resultados podem não ser ideais com valores grandes.

**Sintaxe**

```sql theme={null}
formatReadableQuantity(x)
```

**Argumentos**

* `x` — Um número a ser formatado. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna um número arredondado com sufixo na forma de string. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Formatar números com sufixos**

```sql title=Query theme={null}
SELECT
    arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number,
    formatReadableQuantity(number) AS number_for_humans
```

```response title=Response theme={null}
┌─────────number─┬─number_for_humans─┐
│           1024 │ 1.02 thousand     │
│        1234000 │ 1.23 million      │
│     4567000000 │ 4.57 billion      │
│ 98765432101234 │ 98.77 trillion    │
└────────────────┴───────────────────┘
```

<div id="formatReadableSize">
  ## formatReadableSize
</div>

Introduzido em: v1.1.0

Dado um tamanho (número de bytes), esta função retorna um tamanho legível e arredondado com sufixo (KiB, MiB etc.) como string.

As operações inversas desta função são [`parseReadableSize`](#parseReadableSize), [`parseReadableSizeOrZero`](#parseReadableSizeOrZero) e [`parseReadableSizeOrNull`](#parseReadableSizeOrNull).
Esta função aceita qualquer tipo numérico como entrada, mas internamente os converte para `Float64`. Os resultados podem não ser ideais com valores grandes.

**Sintaxe**

```sql theme={null}
formatReadableSize(x)
```

**Aliases**: `FORMAT_BYTES`

**Argumentos**

* `x` — Tamanho em bytes. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna um tamanho legível e arredondado com sufixo, como string. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Formatar tamanhos de arquivos**

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.00 KiB   │
│        1048576 │ 1.00 MiB   │
│      192851925 │ 183.92 MiB │
└────────────────┴────────────┘
```

<div id="formatReadableTimeDelta">
  ## formatReadableTimeDelta
</div>

Introduzido em: v20.12.0

Dado um intervalo de tempo (delta) em segundos, esta função retorna esse delta como uma string em ano/mês/dia/hora/minuto/segundo/milissegundo/microssegundo/nanosegundo.

Esta função aceita qualquer tipo numérico como entrada, mas internamente converte esses valores para `Float64`. Os resultados podem não ser ideais com valores altos.

**Sintaxe**

```sql theme={null}
formatReadableTimeDelta(column[, maximum_unit, minimum_unit])
```

**Argumentos**

* `column` — Uma coluna com uma diferença de tempo numérica. [`Float64`](/pt-BR/reference/data-types/float)
* `maximum_unit` — Opcional. Unidade máxima a ser exibida. Valores aceitos: `nanoseconds`, `microseconds`, `milliseconds`, `seconds`, `minutes`, `hours`, `days`, `months`, `years`. Valor padrão: `years`. [`const String`](/pt-BR/reference/data-types/string)
* `minimum_unit` — Opcional. Unidade mínima a ser exibida. Todas as unidades menores são truncadas. Valores aceitos: `nanoseconds`, `microseconds`, `milliseconds`, `seconds`, `minutes`, `hours`, `days`, `months`, `years`. Se o valor especificado explicitamente for maior que `maximum_unit`, uma exceção será lançada. Valor padrão: `seconds` se `maximum_unit` for `seconds` ou maior; caso contrário, `nanoseconds`. [`const String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna uma diferença de tempo como string. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed) AS time_delta
```

```response title=Response theme={null}
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                        │
│      12345 │ 3 hours, 25 minutes and 45 seconds                             │
│  432546534 │ 13 years, 8 months, 17 days, 7 hours, 48 minutes and 54 seconds│
└────────────┴────────────────────────────────────────────────────────────────┘
```

**Com a unidade máxima**

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
```

```response title=Response theme={null}
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                         │
│      12345 │ 205 minutes and 45 seconds                                      │
│  432546534 │ 7209108 minutes and 54 seconds                                  │
└────────────┴─────────────────────────────────────────────────────────────────┘
```

<div id="fuzzQuery">
  ## fuzzQuery
</div>

Introduzido em: v26.2.0

Analisa a string de consulta fornecida e aplica mutações aleatórias na AST (fuzzing). Retorna a consulta com fuzzing como string. Não determinística: cada chamada pode produzir um resultado diferente. Requer `allow_fuzz_query_functions = 1`.

**Sintaxe**

```sql theme={null}
fuzzQuery(query)
```

**Argumentos**

* `query` — A consulta SQL a ser submetida a fuzzing. [String](/pt-BR/reference/data-types/string)

**Valor retornado**

A string da consulta após o fuzzing [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**básico**

```sql title=Query theme={null}
SET allow_fuzz_query_functions = 1; SELECT fuzzQuery('SELECT 1');
```

```response title=Response theme={null}
```

<div id="generateRandomStructure">
  ## generateRandomStructure
</div>

Introduzido em: v23.5.0

Gera uma estrutura aleatória de tabela no formato `column1_name column1_type, column2_name column2_type, ...`.

**Sintaxe**

```sql theme={null}
generateRandomStructure([number_of_columns, seed])
```

**Argumentos**

* `number_of_columns` — O número desejado de colunas na estrutura da tabela resultante. Se definido como 0 ou `Null`, o número de colunas será aleatório, entre 1 e 128. Valor padrão: `Null`. [`UInt64`](/pt-BR/reference/data-types/int-uint)
* `seed` — Semente aleatória para gerar resultados estáveis. Se `seed` não for especificado ou for definido como `Null`, será gerado aleatoriamente. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Estrutura de tabela gerada aleatoriamente. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT generateRandomStructure()
```

```response title=Response theme={null}
c1 Decimal32(5), c2 Date, c3 Tuple(LowCardinality(String), Int128, UInt64, UInt16, UInt8, IPv6), c4 Array(UInt128), c5 UInt32, c6 IPv4, c7 Decimal256(64), c8 Decimal128(3), c9 UInt256, c10 UInt64, c11 DateTime
```

**com o número de colunas especificado**

```sql title=Query theme={null}
SELECT generateRandomStructure(1)
```

```response title=Response theme={null}
c1 Map(UInt256, UInt16)
```

**com seed definida**

```sql title=Query theme={null}
SELECT generateRandomStructure(NULL, 33)
```

```response title=Response theme={null}
c1 DateTime, c2 Enum8('c2V0' = 0, 'c2V1' = 1, 'c2V2' = 2, 'c2V3' = 3), c3 LowCardinality(Nullable(FixedString(30))), c4 Int16, c5 Enum8('c5V0' = 0, 'c5V1' = 1, 'c5V2' = 2, 'c5V3' = 3), c6 Nullable(UInt8), c7 String, c8 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(70)))
```

<div id="generateSerialID">
  ## generateSerialID
</div>

Introduzido em: v25.1.0

Gera e retorna números sequenciais a partir do valor anterior do contador.
Esta função recebe um argumento string — um identificador de série — e um valor inicial opcional.
O servidor deve ser configurado com Keeper.
As séries são armazenadas em nós do Keeper no caminho, que pode ser configurado em [`series_keeper_path`](/pt-BR/reference/settings/server-settings/settings#series_keeper_path) na configuração do servidor.

**Sintaxe**

```sql theme={null}
generateSerialID(series_identifier[, start_value])
```

**Argumentos**

* `series_identifier` — Identificador da série [`const String`](/pt-BR/reference/data-types/string)
* `start_value` — Opcional. Valor inicial do contador. O padrão é 0. Observação: esse valor só é usado ao criar uma nova série e é ignorado se a série já existir [`UInt*`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna números sequenciais a partir do valor anterior do contador. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**primeira chamada**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        1 │
└──────────────────────────┘
```

**segunda chamada**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        2 │
└──────────────────────────┘
```

**chamada da coluna**

```sql title=Query theme={null}
SELECT *, generateSerialID('id1') FROM test_table
```

```response title=Response theme={null}
┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')──┐
│         1 │      3 │   3 │                        3 │
│         1 │      1 │   1 │                        4 │
│         1 │      2 │   2 │                        5 │
│         1 │      5 │   5 │                        6 │
│         1 │      4 │   4 │                        7 │
└───────────┴────────┴─────┴──────────────────────────┘
```

**com valor inicial**

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           100 │
└───────────────────────────────┘
```

**com valor inicial na segunda chamada**

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           101 │
└───────────────────────────────┘
```

<div id="getClientHTTPHeader">
  ## getClientHTTPHeader
</div>

Introduzido em: v24.5.0

Obtém o valor de um cabeçalho HTTP.
Se esse cabeçalho não existir ou se a solicitação atual não for feita pela interface HTTP, a função retornará uma string vazia.
Alguns cabeçalhos HTTP (por exemplo, `Authentication` e `X-ClickHouse-*`) são restritos.

<Info>
  **A configuração `allow_get_client_http_header` é obrigatória**

  A função exige que a configuração `allow_get_client_http_header` esteja habilitada.
  Por motivos de segurança, essa configuração não vem habilitada por padrão, pois alguns cabeçalhos, como `Cookie`, podem conter informações sensíveis.
</Info>

Os cabeçalhos HTTP diferenciam maiúsculas de minúsculas nesta função.
Se a função for usada no contexto de uma consulta distribuída, ela retornará um resultado não vazio apenas no nó iniciador.

**Sintaxe**

```sql theme={null}
getClientHTTPHeader(name)
```

**Argumentos**

* `name` — O nome do cabeçalho HTTP. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor do cabeçalho. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getClientHTTPHeader('Content-Type');
```

```response title=Response theme={null}
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded   │
└─────────────────────────────────────┘
```

<div id="getMacro">
  ## getMacro
</div>

Introduzido em: v20.1.0

Retorna o valor de uma macro do arquivo de configuração do servidor.
As macros são definidas na seção [`<macros>`](/pt-BR/reference/settings/server-settings/settings#macros) do arquivo de configuração e podem ser usadas para diferenciar servidores por nomes convenientes, mesmo que tenham hostname complexos.
Se a função for executada no contexto de uma tabela distribuída, ela gerará uma coluna normal com valores correspondentes a cada shard.

**Sintaxe**

```sql theme={null}
getMacro(name)
```

**Argumentos**

* `name` — O nome da macro a ser obtida. [`const String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor da macro especificada. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT getMacro('test');
```

```response title=Response theme={null}
┌─getMacro('test')─┐
│ Value            │
└──────────────────┘
```

<div id="getMaxTableNameLengthForDatabase">
  ## getMaxTableNameLengthForDatabase
</div>

Introduzido na versão: v25.1.0

Retorna o comprimento máximo do nome da tabela no banco de dados especificado.

**Sintaxe**

```sql theme={null}
getMaxTableNameLengthForDatabase(database_name)
```

**Argumentos**

* `database_name` — O nome do banco de dados especificado. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o comprimento do maior nome de tabela, um Integer

**Exemplos**

**típico**

```sql title=Query theme={null}
SELECT getMaxTableNameLengthForDatabase('default');
```

```response title=Response theme={null}
┌─getMaxTableNameLengthForDatabase('default')─┐
            │                                         206 │
            └─────────────────────────────────────────────┘
```

<div id="getMergeTreeSetting">
  ## getMergeTreeSetting
</div>

Introduzido em: v25.6.0

Retorna o valor atual de uma configuração do MergeTree.

**Sintaxe**

```sql theme={null}
getMergeTreeSetting(setting_name)
```

**Argumentos**

* `setting_name` — O nome da configuração. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor atual da configuração do MergeTree.

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getMergeTreeSetting('index_granularity');
```

```response title=Response theme={null}
┌─getMergeTreeSetting('index_granularity')─┐
│                                     8192 │
└──────────────────────────────────────────┘
```

<div id="getOSKernelVersion">
  ## getOSKernelVersion
</div>

Introduzido em: v21.11.0

Retorna uma string com a versão do kernel do sistema operacional.

**Sintaxe**

```sql theme={null}
getOSKernelVersion()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna a versão atual do kernel do sistema operacional. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getOSKernelVersion();
```

```response title=Response theme={null}
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘
```

<div id="getServerPort">
  ## getServerPort
</div>

Introduzido em: v21.10.0

Retorna o número da porta do servidor para um determinado protocolo.

**Sintaxe**

```sql theme={null}
getServerPort(port_name)
```

**Argumentos**

* `port_name` — Nome da porta. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o número da porta do servidor. [`UInt16`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getServerPort('tcp_port');
```

```response title=Response theme={null}
┌─getServerPort('tcp_port')─┐
│                      9000 │
└───────────────────────────┘
```

<div id="getServerSetting">
  ## getServerSetting
</div>

Introduzido em: v25.6.0

Retorna o valor definido no momento para a configuração do servidor informada.

**Sintaxe**

```sql theme={null}
getServerSetting(setting_name')
```

**Argumentos**

* `setting_name` — O nome da configuração do servidor. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor atual da configuração do servidor. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getServerSetting('allow_use_jemalloc_memory');
```

```response title=Response theme={null}
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true                                          │
└───────────────────────────────────────────────┘
```

<div id="getSetting">
  ## getSetting
</div>

Introduzido em: v20.7.0

Retorna o valor atual de uma configuração.

**Sintaxe**

```sql theme={null}
getSetting(setting_name)
```

**Argumentos**

* `setting_Name` — O nome da configuração. [`const String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor atual da configuração. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');
```

```response title=Response theme={null}
┌─getSetting('⋯_analyzer')─┐
│ true                     │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false                    │
└──────────────────────────┘
```

<div id="getSettingOrDefault">
  ## getSettingOrDefault
</div>

Introduzido em: v24.10.0

Retorna o valor atual de uma configuração ou, caso ela não esteja definida no perfil atual, o valor padrão especificado no segundo argumento.

**Sintaxe**

```sql theme={null}
getSettingOrDefault(setting_name, default_value)
```

**Argumentos**

* `setting_name` — O nome da configuração. [`String`](/pt-BR/reference/data-types/string)
* `default_value` — Valor a ser retornado caso custom\_setting não esteja definida. O valor pode ser de qualquer tipo de dado ou Null.

**Valor retornado**

Retorna o valor atual da configuração especificada ou `default_value` caso a configuração não esteja definida.

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);
```

```response title=Response theme={null}
my_value
100
NULL
```

<div id="getSizeOfEnumType">
  ## getSizeOfEnumType
</div>

Introduzido em: v1.1.0

Retorna o número de campos no [`Enum`](/pt-BR/reference/data-types/enum) fornecido.

**Sintaxe**

```sql theme={null}
getSizeOfEnumType(x)
```

**Argumentos**

* `x` — Valor do tipo `Enum`. [`Enum`](/pt-BR/reference/data-types/enum)

**Valor retornado**

Retorna o número de campos cujos valores de entrada são do tipo `Enum`. [`UInt8/16`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

<div id="getSubcolumn">
  ## getSubcolumn
</div>

Introduzido em: v23.3.0

Recebe uma expressão ou identificador e uma string constante com o nome da subcoluna.

Retorna a subcoluna solicitada, extraída da expressão.

**Sintaxe**

```sql theme={null}
getSubcolumn(nested_value, subcolumn_name)
```

**Argumentos**

* Nenhum.

**Valor retornado**

**Exemplos**

**getSubcolumn**

```sql title=Query theme={null}
SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')
```

```response title=Response theme={null}
```

<div id="getTypeSerializationStreams">
  ## getTypeSerializationStreams
</div>

Introduzido em: v22.6.0

Enumera os caminhos de stream de um tipo de dado.
Esta função se destina a uso em desenvolvimento.

**Sintaxe**

```sql theme={null}
getTypeSerializationStreams(col)
```

**Argumentos**

* `col` — Coluna ou representação textual de um tipo de dado a partir do qual o tipo de dado será detectado. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna um array com todos os caminhos dos substreams de serialização. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**tuple**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams(tuple('a', 1, 'b', 2))
```

```response title=Response theme={null}
['{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']
```

**map**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams('Map(String, Int64)')
```

```response title=Response theme={null}
['{ArraySizes}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']
```

<div id="globalVariable">
  ## globalVariable
</div>

Introduzido em: v20.5.0

Recebe um argumento String constante e retorna o valor da variável global com esse nome. Esta função é destinada à compatibilidade com o MySQL e não é necessária nem útil para a operação normal do ClickHouse. Apenas algumas variáveis globais fictícias estão definidas.

**Sintaxe**

```sql theme={null}
globalVariable(name)
```

**Argumentos**

* `name` — Nome da variável global. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor da variável `name`. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**globalVariable**

```sql title=Query theme={null}
SELECT globalVariable('max_allowed_packet')
```

```response title=Response theme={null}
67108864
```

<div id="hasColumnInTable">
  ## hasColumnInTable
</div>

Introduzido em: v1.1.0

Verifica se uma coluna específica existe em uma tabela de um banco de dados.
Para elementos em uma estrutura de dados aninhada, a função verifica a existência de uma coluna.
Para a própria estrutura de dados aninhada, a função retorna `0`.

**Sintaxe**

```sql theme={null}
hasColumnInTable([hostname[, username[, password]],]database, table, column)
```

**Argumentos**

* `database` — Nome do banco de dados. [`const String`](/pt-BR/reference/data-types/string)
* `table` — Nome da tabela. [`const String`](/pt-BR/reference/data-types/string)
* `column` — Nome da coluna. [`const String`](/pt-BR/reference/data-types/string)
* `hostname` — Opcional. Nome do servidor remoto em que a verificação será realizada. [`const String`](/pt-BR/reference/data-types/string)
* `username` — Opcional. Nome de usuário do servidor remoto. [`const String`](/pt-BR/reference/data-types/string)
* `password` — Opcional. Senha do servidor remoto. [`const String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna `1` se a coluna informada existir, `0` caso contrário. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Verificar uma coluna existente**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','metric')
```

```response title=Response theme={null}
1
```

**Verifique uma coluna inexistente**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','non-existing_column')
```

```response title=Response theme={null}
0
```

<div id="hasThreadFuzzer">
  ## hasThreadFuzzer
</div>

Introduzido em: v20.6.0

Retorna se o thread fuzzer está habilitado.
Esta função só é útil para testes e depuração.

**Sintaxe**

```sql theme={null}
hasThreadFuzzer()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Indica se o Thread Fuzzer está ativo. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Verificar o status do Thread Fuzzer**

```sql title=Query theme={null}
SELECT hasThreadFuzzer()
```

```response title=Response theme={null}
┌─hasThreadFuzzer()─┐
│                 0 │
└───────────────────┘
```

<div id="highlightQuery">
  ## highlightQuery
</div>

Introduzido em: v26.5.0

Analisa uma string de consulta em ClickHouse SQL e retorna um array de faixas destacadas para realce de sintaxe.
Cada faixa é uma tupla nomeada com a posição inicial (em bytes), a posição final e o tipo de destaque.
Os tipos de destaque descrevem o papel sintático do fragmento (palavra-chave, identificador, função etc.)
e podem ser usados para atribuir cores na UI. Em padrões de string de LIKE e REGEXP, metacaracteres
e caracteres de escape são destacados separadamente.

**Sintaxe**

```sql theme={null}
highlightQuery(query)
```

**Argumentos**

* `query` — Uma string de consulta em ClickHouse SQL. String.

**Valor retornado**

Um array de tuplas nomeadas `(begin UInt64, end UInt64, type Enum8(...))` que representa intervalos destacados. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/pt-BR/reference/data-types/array)

**Exemplos**

**simples**

```sql title=Query theme={null}
SELECT highlightQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'keyword'),(7,8,'number')]
```

<div id="hostName">
  ## hostName
</div>

Introduzido em: v20.5.0

Retorna o nome do host em que esta função foi executada.
Se a função for executada em um servidor remoto (processamento distribuído), o nome desse servidor remoto será retornado.
Se a função for executada no contexto de uma tabela distribuída, ela gera uma coluna normal com valores correspondentes a cada shard.
Caso contrário, produz um valor constante.

**Sintaxe**

```sql theme={null}
hostName()
```

**Aliases**: `hostname`

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o nome do host. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT hostName()
```

```response title=Response theme={null}
┌─hostName()─┐
│ clickhouse │
└────────────┘
```

<div id="icebergBucket">
  ## icebergBucket
</div>

Introduzido em: v25.5.0

Implementa a lógica da [transformação de bucket do Iceberg](https://iceberg.apache.org/spec/#bucket-transform-details.)

**Sintaxe**

```sql theme={null}
icebergBucket(N, value)
```

**Argumentos**

* `N` — O número de buckets, módulo. [`const (U)Int*`](/pt-BR/reference/data-types/int-uint)
* `value` — O valor de entrada a ser transformado. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Bool`](/pt-BR/reference/data-types/boolean) ou [`Decimal`](/pt-BR/reference/data-types/decimal) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`String`](/pt-BR/reference/data-types/string) ou [`FixedString`](/pt-BR/reference/data-types/fixedstring) ou [`UUID`](/pt-BR/reference/data-types/uuid) ou [`Date`](/pt-BR/reference/data-types/date) ou [`Time`](/pt-BR/reference/data-types/time) ou [`DateTime`](/pt-BR/reference/data-types/datetime)

**Valor retornado**

Retorna um hash de 32 bits do valor de entrada. [`Int32`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo**

```sql title=Query theme={null}
SELECT icebergBucket(5, 1.0 :: Float32)
```

```response title=Response theme={null}
4
```

<div id="icebergTruncate">
  ## icebergTruncate
</div>

Introduzido em: v25.3.0

Implementa a lógica da transformação truncate do Iceberg: [https://iceberg.apache.org/spec/#truncate-transform-details](https://iceberg.apache.org/spec/#truncate-transform-details).

**Sintaxe**

```sql theme={null}
icebergTruncate(N, value)
```

**Argumentos**

* `value` — O valor a ser transformado. [`String`](/pt-BR/reference/data-types/string) ou [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

O mesmo tipo que o argumento

**Exemplos**

**Exemplo**

```sql title=Query theme={null}
SELECT icebergTruncate(3, 'iceberg')
```

```response title=Response theme={null}
ice
```

<div id="identity">
  ## identity
</div>

Introduzido em: v1.1.0

Esta função retorna o argumento que você passa a ela, o que é útil para depuração e testes. Ela permite evitar o uso de índices para observar o desempenho de uma varredura completa. O analisador de consultas ignora tudo o que estiver dentro de funções `identity` ao procurar índices para usar e também desabilita a dobra de constantes.

**Sintaxe**

```sql theme={null}
identity(x)
```

**Argumentos**

* `x` — Valor de entrada. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna o valor de entrada inalterado. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT identity(42)
```

```response title=Response theme={null}
42
```

<div id="ignore">
  ## ignore
</div>

Introduzido em: v1.1.0

Aceita argumentos arbitrários e retorna `0` incondicionalmente.

**Sintaxe**

```sql theme={null}
ignore(x)
```

**Argumentos**

* `x` — Um valor de entrada que não é usado e é passado apenas para evitar um erro de sintaxe. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Sempre retorna `0`. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT ignore(0, 'ClickHouse', NULL)
```

```response title=Response theme={null}
┌─ignore(0, 'ClickHouse', NULL)─┐
│                             0 │
└───────────────────────────────┘
```

<div id="indexHint">
  ## indexHint
</div>

Introduzido em: v1.1.0

Esta função se destina à depuração e à introspecção.
Ela ignora o argumento e sempre retorna 1.
Os argumentos não são avaliados.

Durante a análise do índice, considera-se que o argumento desta função não esteja encapsulado em `indexHint`.
Isso permite selecionar dados em intervalos do índice pela condição correspondente, mas sem aplicar filtragem adicional por essa condição.
O índice no ClickHouse é esparso, e usar `indexHint` retornará mais dados do que especificar a mesma condição diretamente.

<Accordion title="Explicação">
  Quando você executa:

  ```sql theme={null}
  SELECT * FROM test WHERE key = 123;
  ```

  O ClickHouse faz duas coisas:

  1. Usa o índice para encontrar quais grânulos (blocos de \~8192 linhas) podem conter `key = 123`
  2. Lê esses grânulos e filtra suas linhas para retornar apenas aquelas em que `key = 123`

  Assim, mesmo que ele leia 8.192 linhas do disco, retorna apenas a 1 linha que realmente corresponde.

  Com `indexHint`, quando você executa:

  ```sql theme={null}
  SELECT * FROM test WHERE indexHint(key = 123);
  ```

  O ClickHouse faz apenas uma coisa:

  1. Usa o índice para encontrar quais grânulos podem conter `key = 123` e retorna todas as linhas desses grânulos **sem** filtrá-las.

  Ele retorna todas as 8.192 linhas, incluindo linhas em que `key = 456`, `key = 789` etc. (Tudo o que, por acaso, estava armazenado no mesmo grânulo.)
  `indexHint()` não serve para melhorar o desempenho. Ele serve para depuração e para entender como o índice do ClickHouse funciona:

  * Quais grânulos a minha condição seleciona?
  * Quantas linhas há nesses grânulos?
  * Meu índice está sendo usado de forma eficaz?
</Accordion>

Observação: não é possível otimizar uma consulta com a função `indexHint`. A função `indexHint` não otimiza a consulta, pois não fornece nenhuma informação adicional para a análise da consulta. Ter uma expressão dentro da função `indexHint` não é, de forma alguma, melhor do que não usar a função `indexHint`. A função `indexHint` pode ser usada apenas para fins de introspecção e depuração e não melhora o desempenho. Se você vir o uso de `indexHint` por alguém que não seja um colaborador do ClickHouse, provavelmente é um erro, e você deve removê-lo.

**Sintaxe**

```sql theme={null}
indexHint(expression)
```

**Argumentos**

* `expression` — Qualquer expressão para seleção de intervalo de índice. [`Expression`](/pt-BR/reference/data-types/special-data-types/expression)

**Valor retornado**

Retorna `1` em todos os casos. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso com filtro por data**

```sql title=Query theme={null}
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
```

```response title=Response theme={null}
┌──────────k─┬─count()─┐
│ 2025-09-14 │    7071 │
│ 2025-09-15 │   16428 │
│ 2025-09-16 │    1077 │
│ 2025-09-30 │    8167 │
└────────────┴─────────┘
```

<div id="initialQueryID">
  ## initialQueryID
</div>

Introduzido em: v1.1.0

Retorna o ID da consulta inicial atual.
Outros parâmetros de uma consulta podem ser extraídos do campo `initial_query_id` em [`system.query_log`](/pt-BR/reference/system-tables/query_log).

Ao contrário da função [`queryID`](/pt-BR/reference/functions/regular-functions/other-functions#queryID), `initialQueryID` retorna os mesmos resultados em diferentes shards.

**Sintaxe**

```sql theme={null}
initialQueryID()
```

**Aliases**: `initial_query_id`

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o ID da consulta inicial da consulta atual. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

<div id="initialQueryStartTime">
  ## initialQueryStartTime
</div>

Introduzido em: v25.4.0

Retorna o horário de início da consulta inicial atual.
`initialQueryStartTime` retorna os mesmos resultados em diferentes shards.

**Sintaxe**

```sql theme={null}
initialQueryStartTime()
```

**Aliases**: `initial_query_start_time`

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o horário de início da consulta inicial atual. [`DateTime`](/pt-BR/reference/data-types/datetime)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryStartTime() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

<div id="initializeAggregation">
  ## initializeAggregation
</div>

Introduzido em: v20.6.0

Calcula o resultado de uma função de agregação com base em um único valor.
Esta função pode ser usada para inicializar funções de agregação com o combinador [-State](/pt-BR/reference/functions/aggregate-functions/combinators#-state).
Você pode criar estados de funções de agregação e inseri-los em colunas do tipo [`AggregateFunction`](/pt-BR/reference/data-types/aggregatefunction) ou usar agregados inicializados como valores padrão.

**Sintaxe**

```sql theme={null}
initializeAggregation(aggregate_function, arg1[, arg2, ...])
```

**Argumentos**

* `aggregate_function` — Nome da função de agregação a ser inicializada. [`String`](/pt-BR/reference/data-types/string)
* `arg1[, arg2, ...]` — Argumentos da função de agregação. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna o resultado da agregação para cada linha passada à função. O tipo de retorno é o mesmo da função que `initializeAggregation` recebe como primeiro argumento. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Uso básico com uniqState**

```sql title=Query theme={null}
SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));
```

```response title=Response theme={null}
┌─uniqMerge(state)─┐
│                3 │
└──────────────────┘
```

**Uso de sumState e finalizeAggregation**

```sql title=Query theme={null}
SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));
```

```response title=Response theme={null}
┌─finalizeAggregation(state)─┬─toTypeName(state)─────────────┐
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
│                          2 │ AggregateFunction(sum, UInt8) │
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
└────────────────────────────┴───────────────────────────────┘
```

<div id="isConstant">
  ## isConstant
</div>

Introduzido em: v20.3.0

Retorna se o argumento é uma expressão constante.
Uma expressão constante é uma expressão cujo resultado é conhecido durante a análise da consulta, isto é, antes da execução.
Por exemplo, expressões com [literais](/pt-BR/reference/syntax#literals) são expressões constantes.
Esta função se destina principalmente a desenvolvimento, depuração e demonstração.

**Sintaxe**

```sql theme={null}
isConstant(x)
```

**Argumentos**

* `x` — Uma expressão a ser verificada. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna `1` se `x` for constante e `0` se `x` não for constante. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Expressão constante**

```sql title=Query theme={null}
SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)
```

```response title=Response theme={null}
┌─isConstant(plus(x, 1))─┐
│                      1 │
└────────────────────────┘
```

**Constante com função**

```sql title=Query theme={null}
WITH 3.14 AS pi
SELECT isConstant(cos(pi))
```

```response title=Response theme={null}
┌─isConstant(cos(pi))─┐
│                   1 │
└─────────────────────┘
```

**Expressão não constante**

```sql title=Query theme={null}
SELECT isConstant(number)
FROM numbers(1)
```

```response title=Response theme={null}
┌─isConstant(number)─┐
│                  0 │
└────────────────────┘
```

**Comportamento da função now()**

```sql title=Query theme={null}
SELECT isConstant(now())
```

```response title=Response theme={null}
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘
```

<div id="isDecimalOverflow">
  ## isDecimalOverflow
</div>

Introduzido em: v20.8.0

Verifica se um número decimal tem dígitos demais para caber corretamente em um tipo de dado Decimal com a precisão especificada.

**Sintaxe**

```sql theme={null}
isDecimalOverflow(value[, precision])
```

**Argumentos**

* `value` — Valor do tipo Decimal a ser verificado. [`Decimal`](/pt-BR/reference/data-types/decimal)
* `precision` — Opcional. A precisão do tipo Decimal. Se omitida, será usada a precisão inicial do primeiro argumento. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna `1` se o valor decimal tiver mais dígitos do que o permitido pela sua precisão e `0` se o valor decimal atender à precisão especificada. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT isDecimalOverflow(toDecimal32(1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(1000000000, 0)),
       isDecimalOverflow(toDecimal32(-1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(-1000000000, 0));
```

```response title=Response theme={null}
┌─isDecimalOverflow(toDecimal32(1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(1000000000, 0))─┬─isDecimalOverflow(toDecimal32(-1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(-1000000000, 0))─┐
│                                                1 │                                             1 │                                                 1 │                                              1 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘
```

<div id="joinGet">
  ## joinGet
</div>

Introduzido em: v18.16.0

Permite extrair dados de uma tabela da mesma forma que de um Dicionário.
Obtém dados de tabelas Join usando a chave de junção especificada.

<Note>
  Compatível apenas com tabelas criadas com a instrução `ENGINE = Join(ANY, LEFT, <join_keys>)` [instrução](/pt-BR/reference/engines/table-engines/special/join).
</Note>

**Sintaxe**

```sql theme={null}
joinGet(join_storage_table_name, value_column, join_keys)
```

**Argumentos**

* `join_storage_table_name` — Um identificador que indica onde realizar a busca. O identificador é procurado no banco de dados padrão (consulte o parâmetro `default_database` no arquivo de configuração). Para substituir o banco de dados padrão, use a consulta `USE database_name` ou especifique o banco de dados e a tabela com um ponto, como em `database_name.table_name`. [`String`](/pt-BR/reference/data-types/string)
* `value_column` — O nome da coluna da tabela que contém os dados necessários. [`const String`](/pt-BR/reference/data-types/string)
* `join_keys` — Uma lista de chaves de junção. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna uma lista de valores correspondente à lista de chaves. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGet(db_test.id_val, 'val', toUInt32(1));
```

```response title=Response theme={null}
┌─joinGet(db_test.id_val, 'val', toUInt32(1))─┐
│                                          11 │
└─────────────────────────────────────────────┘
```

**Uso com tabela do banco de dados atual**

```sql title=Query theme={null}
USE db_test;
SELECT joinGet(id_val, 'val', toUInt32(2));
```

```response title=Response theme={null}
┌─joinGet(id_val, 'val', toUInt32(2))─┐
│                                  12 │
└─────────────────────────────────────┘
```

**Usar arrays como chaves de junção**

```sql title=Query theme={null}
CREATE TABLE some_table (id1 UInt32, id2 UInt32, name String) ENGINE = Join(ANY, LEFT, id1, id2);
INSERT INTO some_table VALUES (1, 11, 'a') (2, 12, 'b') (3, 13, 'c');

SELECT joinGet(some_table, 'name', 1, 11);
```

```response title=Response theme={null}
┌─joinGet(some_table, 'name', 1, 11)─┐
│ a                                  │
└────────────────────────────────────┘
```

<div id="joinGetOrNull">
  ## joinGetOrNull
</div>

Introduzido em: v20.4.0

Permite extrair dados de uma tabela da mesma forma que de um Dicionário.
Obtém dados de tabelas Join usando a chave de junção especificada.
Ao contrário de [`joinGet`](#joinGet), retorna `NULL` quando a chave não existe.

<Note>
  Suporta apenas tabelas criadas com a [instrução](/pt-BR/reference/engines/table-engines/special/join) `ENGINE = Join(ANY, LEFT, <join_keys>)`.
</Note>

**Sintaxe**

```sql theme={null}
joinGetOrNull(join_storage_table_name, value_column, join_keys)
```

**Argumentos**

* `join_storage_table_name` — Um identificador que indica onde realizar a busca. O identificador é procurado no banco de dados padrão (consulte o parâmetro default\_database no arquivo de configuração). Para substituir o banco de dados padrão, use a consulta `USE database_name` ou especifique o banco de dados e a tabela separados por um ponto, como em `database_name.table_name`. [`String`](/pt-BR/reference/data-types/string)
* `value_column` — O nome da coluna da tabela que contém os dados necessários. [`const String`](/pt-BR/reference/data-types/string)
* `join_keys` — Uma lista de chaves de junção. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna uma lista de valores correspondente à lista de chaves, ou `NULL` se uma chave não for encontrada. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGetOrNull(db_test.id_val, 'val', toUInt32(1)), joinGetOrNull(db_test.id_val, 'val', toUInt32(999));
```

```response title=Response theme={null}
┌─joinGetOrNull(db_test.id_val, 'val', toUInt32(1))─┬─joinGetOrNull(db_test.id_val, 'val', toUInt32(999))─┐
│                                                11 │                                                ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘
```

<div id="lowCardinalityIndices">
  ## lowCardinalityIndices
</div>

Introduzido em: v18.12.0

Retorna a posição de um valor no dicionário de uma coluna [LowCardinality](/pt-BR/reference/data-types/lowcardinality). As posições começam em 1. Como LowCardinality tem dicionários por parte, esta função pode retornar posições diferentes para o mesmo valor em partes diferentes.

**Sintaxe**

```sql theme={null}
lowCardinalityIndices(col)
```

**Argumentos**

* `col` — Uma coluna de baixa cardinalidade. [`LowCardinality`](/pt-BR/reference/data-types/lowcardinality)

**Valor retornado**

A posição do valor no dicionário da parte atual. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplos de uso**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- criar duas partes:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityIndices(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityIndices(s)─┐
│ ab │                        1 │
│ cd │                        2 │
│ ab │                        1 │
│ ab │                        1 │
│ df │                        3 │
└────┴──────────────────────────┘
┌─s──┬─lowCardinalityIndices(s)─┐
│ ef │                        1 │
│ cd │                        2 │
│ ab │                        3 │
│ cd │                        2 │
│ ef │                        1 │
└────┴──────────────────────────┘
```

<div id="lowCardinalityKeys">
  ## lowCardinalityKeys
</div>

Introduzido em: v18.12.0

Retorna os valores do dicionário de uma coluna [LowCardinality](/pt-BR/reference/data-types/lowcardinality).
Se o bloco for menor ou maior que o tamanho do dicionário, o resultado será truncado ou preenchido com valores padrão.
Como o LowCardinality tem dicionários por parte, esta função pode retornar valores de dicionário diferentes em partes diferentes.

**Sintaxe**

```sql theme={null}
lowCardinalityKeys(col)
```

**Argumentos**

* `col` — Uma coluna de baixa cardinalidade. [`LowCardinality`](/pt-BR/reference/data-types/lowcardinality)

**Valor retornado**

Retorna as chaves do dicionário. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**lowCardinalityKeys**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- criar duas partes:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityKeys(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityKeys(s)─┐
│ ef │                       │
│ cd │ ef                    │
│ ab │ cd                    │
│ cd │ ab                    │
│ ef │                       │
└────┴───────────────────────┘
┌─s──┬─lowCardinalityKeys(s)─┐
│ ab │                       │
│ cd │ ab                    │
│ ab │ cd                    │
│ ab │ df                    │
│ df │                       │
└────┴───────────────────────┘
```

<div id="materialize">
  ## materialize
</div>

Introduzido em: v1.1.0

Transforma uma constante em uma coluna completa que contém um único valor.
Colunas completas e constantes são representadas de forma diferente na memória.
As funções geralmente executam código diferente para argumentos normais e constantes, embora o resultado normalmente deva ser o mesmo.
Esta função pode ser usada para depurar esse comportamento.

**Sintaxe**

```sql theme={null}
materialize(x)
```

**Argumentos**

* `x` — Uma constante. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna uma coluna completa que contém o valor constante. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
-- No exemplo abaixo, a função `countMatches` espera que o segundo argumento seja constante.
-- Esse comportamento pode ser depurado usando a função `materialize` para transformar uma constante em uma coluna completa,
-- verificando que a função gera um erro quando o argumento não é constante.

SELECT countMatches('foobarfoo', 'foo');
SELECT countMatches('foobarfoo', materialize('foo'));
```

```response title=Response theme={null}
2
Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type of argument #2 'pattern' of function countMatches, expected constant String, got String
```

<div id="minSampleSizeContinuous">
  ## minSampleSizeContinuous
</div>

Introduzido na versão: v23.10.0

Calcula o tamanho mínimo de amostra necessário para um teste A/B que compara as médias de uma métrica contínua em duas amostras.

Usa a fórmula descrita [neste artigo](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a).
Pressupõe tamanhos iguais para os grupos de tratamento e de controle.
Retorna o tamanho de amostra necessário para um grupo (ou seja, o tamanho de amostra necessário para todo o experimento é o dobro do valor retornado).
Também pressupõe variância igual da métrica de teste nos grupos de tratamento e de controle.

**Sintaxe**

```sql theme={null}
minSampleSizeContinuous(baseline, sigma, mde, power, alpha)
```

**Aliases**: `minSampleSizeContinous`

**Argumentos**

* `baseline` — Valor de referência de uma métrica. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float)
* `sigma` — Desvio padrão de referência de uma métrica. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float)
* `mde` — Efeito mínimo detectável (MDE) como porcentagem do valor de referência (por exemplo, para um valor de referência de 112.25, MDE 0.03 significa uma variação esperada para 112.25 ± 112.25\*0.03). [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float)
* `power` — Poder estatístico necessário de um teste (1 - probabilidade de erro do Tipo II). [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float)
* `alpha` — Nível de significância necessário de um teste (probabilidade de erro do Tipo I). [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna uma Tuple nomeada com 3 elementos: `minimum_sample_size`, `detect_range_lower` e `detect_range_upper`. Eles correspondem, respectivamente, a: o tamanho de amostra necessário, o limite inferior do intervalo de valores que não podem ser detectados com o tamanho de amostra necessário retornado, calculado como `baseline * (1 - mde)`, e o limite superior do intervalo de valores que não podem ser detectados com o tamanho de amostra necessário retornado, calculado como `baseline * (1 + mde)` (Float64). [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)

**Exemplos**

**minSampleSizeContinuous**

```sql title=Query theme={null}
SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(616.2931945826209,108.8825,115.6175)
```

<div id="minSampleSizeConversion">
  ## minSampleSizeConversion
</div>

Introduzido em: v22.6.0

Calcula o tamanho mínimo de amostra necessário para um teste A/B que compara conversões (proporções) entre duas amostras.

Usa a fórmula descrita [neste artigo](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a). Pressupõe tamanhos iguais para os grupos de tratamento e controle. Retorna o tamanho de amostra necessário para um grupo (ou seja, o tamanho de amostra necessário para todo o experimento é o dobro do valor retornado).

**Sintaxe**

```sql theme={null}
minSampleSizeConversion(baseline, mde, power, alpha)
```

**Argumentos**

* `baseline` — Conversão de base. [`Float*`](/pt-BR/reference/data-types/float)
* `mde` — Efeito mínimo detectável (MDE), em pontos percentuais (por exemplo, para uma conversão de base de 0.25, um MDE de 0.03 significa uma mudança esperada para 0.25 ± 0.03). [`Float*`](/pt-BR/reference/data-types/float)
* `power` — Poder estatístico exigido para um teste (1 - probabilidade de erro Tipo II). [`Float*`](/pt-BR/reference/data-types/float)
* `alpha` — Nível de significância exigido para um teste (probabilidade de erro Tipo I). [`Float*`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna uma Tuple nomeada com 3 elementos: `minimum_sample_size`, `detect_range_lower`, `detect_range_upper`. Eles são, respectivamente: o tamanho de amostra exigido, o limite inferior do intervalo de valores que não podem ser detectados com o tamanho de amostra exigido retornado, calculado como `baseline - mde`, e o limite superior do intervalo de valores que não podem ser detectados com o tamanho de amostra exigido retornado, calculado como `baseline + mde`. [`Tuple(Float64, Float64, Float64)`](/pt-BR/reference/data-types/tuple)

**Exemplos**

**minSampleSizeConversion**

```sql title=Query theme={null}
SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(3396.077603219163,0.22,0.28)
```

<div id="neighbor">
  ## neighbor
</div>

Introduzido em: v20.1.0

Retorna um valor de uma coluna em um deslocamento especificado em relação à linha atual.
Esta função está obsoleta e é propensa a erros porque opera na ordem física dos blocos de dados, que pode não corresponder à ordem lógica esperada pelos usuários.
Considere usar funções de janela adequadas em vez dela.

A função pode ser habilitada definindo `allow_deprecated_error_prone_window_functions = 1`.

**Sintaxe**

```sql theme={null}
neighbor(column, offset[, default_value])
```

**Argumentos**

* `column` — A coluna de origem. [`Any`](/pt-BR/reference/data-types)
* `offset` — O deslocamento em relação à linha atual. Valores positivos avançam, e valores negativos retrocedem. [`Integer`](/pt-BR/reference/data-types/int-uint)
* `default_value` — Opcional. O valor retornado se o deslocamento ultrapassar os limites dos dados. Se não for especificado, usa o valor padrão do tipo da coluna. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna um valor no deslocamento especificado ou o valor padrão, se estiver fora dos limites. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT number, neighbor(number, 2) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─number─┬─neighbor(number, 2)─┐
│      0 │                   2 │
│      1 │                   3 │
│      2 │                   4 │
│      3 │                   5 │
│      4 │                   6 │
│      5 │                   7 │
│      6 │                   8 │
│      7 │                   9 │
│      8 │                   0 │
│      9 │                   0 │
└────────┴─────────────────────┘
```

**Com valor padrão**

```sql title=Query theme={null}
SELECT number, neighbor(number, 2, 999) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─number─┬─neighbor(number, 2, 999)─┐
│      0 │                        2 │
│      1 │                        3 │
│      2 │                        4 │
│      3 │                        5 │
│      4 │                        6 │
│      5 │                        7 │
│      6 │                        8 │
│      7 │                        9 │
│      8 │                      999 │
│      9 │                      999 │
└────────┴──────────────────────────┘
```

<div id="normalizeQuery">
  ## normalizeQuery
</div>

Introduzido em: v20.8.0

Substitui literais, sequências de literais e aliases complexos (contendo espaços em branco, mais de dois dígitos ou com pelo menos 36 bytes, como UUIDs) por um placeholder `?`.

**Sintaxe**

```sql theme={null}
normalizeQuery(x)
```

**Argumentos**

* `x` — Sequência de caracteres. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a sequência de caracteres informada com placeholders. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT normalizeQuery('[1, 2, 3, x]') AS query
```

```response title=Response theme={null}
┌─query────┐
│ [?.., x] │
└──────────┘
```

<div id="normalizeQueryKeepNames">
  ## normalizeQueryKeepNames
</div>

Introduzido em: v21.2.0

Substitui literais e sequências de literais pelo placeholder `?`, mas não substitui aliases complexos (que contêm espaços em branco, mais de dois dígitos ou têm pelo menos 36 bytes de comprimento, como UUIDs).
Isso ajuda a analisar melhor logs de consultas complexas.

**Sintaxe**

```sql theme={null}
normalizeQueryKeepNames(x)
```

**Argumentos**

* `x` — Sequência de caracteres. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a sequência de caracteres informada com placeholders. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')
```

```response title=Response theme={null}
┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐
│ SELECT ? AS `?`                               │ SELECT ? AS aComplexName123                            │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
```

<div id="normalizedQueryHash">
  ## normalizedQueryHash
</div>

Introduzido na versão: v20.8.0

Retorna valores de hash de 64 bits idênticos para consultas semelhantes, sem considerar os valores dos literais.
Pode ser útil para analisar logs de consultas.

**Sintaxe**

```sql theme={null}
normalizedQueryHash(x)
```

**Argumentos**

* `x` — Sequência de caracteres. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna um valor de hash de 64 bits. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

<div id="normalizedQueryHashKeepNames">
  ## normalizedQueryHashKeepNames
</div>

Introduzido em: v21.2.0

Assim como [`normalizedQueryHash`](#normalizedQueryHash), retorna valores de hash de 64 bits idênticos para consultas semelhantes, sem os valores dos literais, mas não substitui aliases complexos (que contêm espaços em branco, mais de dois dígitos ou têm pelo menos 36 bytes de comprimento, como UUIDs) por um placeholder antes de calcular o hash.
Pode ser útil para analisar logs de consulta.

**Sintaxe**

```sql theme={null}
normalizedQueryHashKeepNames(x)
```

**Argumentos**

* `x` — Sequência de caracteres. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna um valor de hash de 64 bits. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz123`') != normalizedQueryHash('SELECT 1 AS `abc123`') AS normalizedQueryHash;
SELECT normalizedQueryHashKeepNames('SELECT 1 AS `xyz123`') != normalizedQueryHashKeepNames('SELECT 1 AS `abc123`') AS normalizedQueryHashKeepNames;
```

```response title=Response theme={null}
┌─normalizedQueryHash─┐
│                   0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│                            1 │
└──────────────────────────────┘
```

<div id="obfuscateQuery">
  ## obfuscateQuery
</div>

Introduzido em: v26.4.0

Ofusca uma consulta SQL substituindo identificadores por palavras aleatórias e literais por valores aleatórios, preservando a estrutura da consulta.

Esta função é útil para anonimizar consultas antes de registrá-las em logs ou compartilhá-las para fins de depuração.
Linhas diferentes produzirão resultados ofuscados distintos, mesmo para a mesma consulta de entrada, o que ajuda
a preservar a privacidade ao trabalhar com várias consultas.

O parâmetro opcional `tag` evita a eliminação de subexpressões comuns quando a mesma chamada de função
é usada várias vezes em uma consulta. Isso garante que cada invocação produza um resultado ofuscado diferente.

Recursos:

* Substitui nomes de tabelas, nomes de colunas e aliases por palavras aleatórias
* Substitui literais numéricos e de string por valores aleatórios
* Preserva a estrutura geral da consulta e a sintaxe SQL
* Produz resultados diferentes para linhas diferentes

**Sintaxe**

```sql theme={null}
obfuscateQuery(query[, tag])
```

**Argumentos**

* `query` — A consulta SQL a ser ofuscada. [`String`](/pt-BR/reference/data-types/string)
* `tag` — Opcional. Um valor para evitar a eliminação de subexpressões comuns quando a mesma chamada de função é usada várias vezes.

**Valor retornado**

A consulta ofuscada, com identificadores e literais substituídos, preservando a estrutura original da consulta. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT name, age FROM users WHERE age > 30')
```

```response title=Response theme={null}
SELECT fruit, number FROM table WHERE number > 12
```

**Com tag para evitar a eliminação de subexpressões comuns**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT * FROM t', 1), obfuscateQuery('SELECT * FROM t', 2)
```

```response title=Response theme={null}
SELECT a FROM b, SELECT c FROM d
```

**Linhas diferentes geram resultados diferentes**

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS b
```

```response title=Response theme={null}
A B
```

<div id="obfuscateQueryWithSeed">
  ## obfuscateQueryWithSeed
</div>

Introduzido em: v26.4.0

Ofusca uma consulta SQL usando uma seed especificada para gerar resultados determinísticos.

Diferentemente de `obfuscateQuery()`, esta função produz resultados determinísticos quando recebe a mesma seed.
Isso é útil quando você precisa de ofuscação consistente em várias execuções ou quando quer
reproduzir a mesma consulta ofuscada para fins de teste ou depuração.

Características:

* Ofuscação determinística com base na seed fornecida
* A mesma seed sempre produz o mesmo resultado ofuscado
* Seeds diferentes produzem resultados diferentes
* Preserva a estrutura da consulta, assim como `obfuscateQuery()`

Casos de uso:

* Casos de teste reproduzíveis
* Anonimização consistente em várias execuções
* Depuração com consultas ofuscadas consistentes

**Sintaxe**

```sql theme={null}
obfuscateQueryWithSeed(query, seed)
```

**Argumentos**

* `query` — A consulta SQL a ser ofuscada. [`String`](/pt-BR/reference/data-types/string)
* `seed` — A seed usada na ofuscação. A mesma seed produz resultados determinísticos. [`Integer`](/pt-BR/reference/data-types/int-uint) ou [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

A consulta ofuscada, gerada de forma determinística com base na seed fornecida. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Ofuscação determinística com seed inteira**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)
```

```response title=Response theme={null}
SELECT fruit FROM table
```

**Ofuscação determinística com seed textual**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')
```

```response title=Response theme={null}
SELECT a, b FROM c
```

**A mesma seed gera o mesmo resultado**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)
```

```response title=Response theme={null}
true
```

<div id="parseReadableSize">
  ## parseReadableSize
</div>

Introduzido em: v24.6.0

Dada uma string que contém um tamanho em bytes e `B`, `KiB`, `KB`, `MiB`, `MB` etc. como unidade (isto é, [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) ou unidade decimal de byte), esta função retorna o número correspondente de bytes.
Se a função não conseguir interpretar o valor de entrada, ela gera uma exceção.

As operações inversas desta função são [`formatReadableSize`](#formatReadableSize) e [`formatReadableDecimalSize`](#formatReadableDecimalSize).

**Sintaxe**

```sql theme={null}
parseReadableSize(x)
```

**Argumentos**

* `x` — Tamanho em formato legível com unidade de byte decimal ou ISO/IEC 80000-13. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o número de bytes, arredondado para cima para o inteiro mais próximo. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
└────────────────┴─────────┘
```

<div id="parseReadableSizeOrNull">
  ## parseReadableSizeOrNull
</div>

Introduzido em: v24.6.0

Dada uma string que contém um tamanho em bytes e `B`, `KiB`, `KB`, `MiB`, `MB` etc. como unidade (isto é, [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) ou unidade decimal de byte), esta função retorna o número de bytes correspondente.
Se a função não conseguir interpretar o valor de entrada, retornará `NULL`.

As operações inversas desta função são [`formatReadableSize`](#formatReadableSize) e [`formatReadableDecimalSize`](#formatReadableDecimalSize).

**Sintaxe**

```sql theme={null}
parseReadableSizeOrNull(x)
```

**Argumentos**

* `x` — Tamanho legível com unidade de byte decimal ou no padrão ISO/IEC 80000-13. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o número de bytes, arredondado para cima para o inteiro mais próximo, ou `NULL` se não for possível interpretar a entrada [`Nullable(UInt64)`](/pt-BR/reference/data-types/nullable)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │    ᴺᵁᴸᴸ │
└────────────────┴─────────┘
```

<div id="parseReadableSizeOrZero">
  ## parseReadableSizeOrZero
</div>

Introduzido em: v24.6.0

Dada uma string contendo um tamanho em bytes e `B`, `KiB`, `KB`, `MiB`, `MB` etc. como unidade (isto é, [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) ou unidade decimal de bytes), esta função retorna o número correspondente de bytes.
Se a função não conseguir analisar o valor de entrada, ela retornará `0`.

As operações inversas desta função são [`formatReadableSize`](#formatReadableSize) e [`formatReadableDecimalSize`](#formatReadableDecimalSize).

**Sintaxe**

```sql theme={null}
parseReadableSizeOrZero(x)
```

**Argumentos**

* `x` — Tamanho em formato legível com ISO/IEC 80000-13 ou unidade decimal de bytes. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o número de bytes, arredondado para cima até o inteiro mais próximo, ou `0` se não for possível analisar a entrada. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │       0 │
└────────────────┴─────────┘
```

<div id="parseTimeDelta">
  ## parseTimeDelta
</div>

Introduzido em: v22.7.0

Analisa uma sequência de números seguida de algo semelhante a uma unidade de tempo.

A string de intervalo de tempo usa as seguintes especificações de unidade de tempo:

* `years`, `year`, `yr`, `y`
* `months`, `month`, `mo`
* `weeks`, `week`, `w`
* `days`, `day`, `d`
* `hours`, `hour`, `hr`, `h`
* `minutes`, `minute`, `min`, `m`
* `seconds`, `second`, `sec`, `s`
* `milliseconds`, `millisecond`, `millisec`, `ms`
* `microseconds`, `microsecond`, `microsec`, `μs`, `µs`, `us`
* `nanoseconds`, `nanosecond`, `nanosec`, `ns`

Várias unidades de tempo podem ser combinadas com separadores (espaço, `;`, `-`, `+`, `,`, `:`).

A duração de anos e meses é aproximada: um ano tem 365 dias, e um mês tem 30,5 dias.

**Sintaxe**

```sql theme={null}
parseTimeDelta(timestr)
```

**Argumentos**

* `timestr` — Uma sequência de números seguida de algo semelhante a uma unidade de tempo. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

O número de segundos. [`Float64`](/pt-BR/reference/data-types/float)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT parseTimeDelta('11s+22min')
```

```response title=Response theme={null}
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘
```

**Unidades de tempo complexas**

```sql title=Query theme={null}
SELECT parseTimeDelta('1yr2mo')
```

```response title=Response theme={null}
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘
```

<div id="partitionId">
  ## partitionId
</div>

Introduzido em: v21.4.0

Calcula o [ID da partição](/pt-BR/reference/engines/table-engines/mergetree-family/custom-partitioning-key).

<Note>
  Esta função é lenta e não deve ser usada com um grande número de linhas.
</Note>

**Sintaxe**

```sql theme={null}
partitionId(column1[, column2, ...])
```

**Aliases**: `partitionID`

**Argumentos**

* `column1, column2, ...` — Coluna cujo ID da partição deve ser retornado.

**Valor retornado**

Retorna o ID da partição à qual a linha pertence. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
DROP TABLE IF EXISTS tab;

CREATE TABLE tab
(
  i int,
  j int
)
ENGINE = MergeTree
PARTITION BY i
ORDER BY tuple();

INSERT INTO tab VALUES (1, 1), (1, 2), (1, 3), (2, 4), (2, 5), (2, 6);

SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;
```

```response title=Response theme={null}
┌─i─┬─j─┬─partitionId(i)─┬─_partition_id─┐
│ 1 │ 1 │ 1              │ 1             │
│ 1 │ 2 │ 1              │ 1             │
│ 1 │ 3 │ 1              │ 1             │
│ 2 │ 4 │ 2              │ 2             │
│ 2 │ 5 │ 2              │ 2             │
│ 2 │ 6 │ 2              │ 2             │
└───┴───┴────────────────┴───────────────┘
```

<div id="queryID">
  ## queryID
</div>

Introduzido em: v21.9.0

Retorna o ID da consulta atual.
Outros parâmetros da consulta podem ser extraídos do campo `query_id` na tabela [`system.query_log`](/pt-BR/reference/system-tables/query_log).

Em contraste com a função [`initialQueryID`](#initialQueryID), `queryID` pode retornar resultados diferentes em shards distintos.

**Sintaxe**

```sql theme={null}
queryID()
```

**Aliases**: `query_id`

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o ID da consulta atual. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT queryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 3 │
└───────────────────┘
```

<div id="revision">
  ## revision
</div>

Introduzido em: v22.7.0

Retorna a revisão atual do servidor ClickHouse.

**Sintaxe**

```sql theme={null}
revision()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna a revisão atual do servidor ClickHouse. [`UInt32`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT revision()
```

```response title=Response theme={null}
┌─revision()─┐
│      54485 │
└────────────┘
```

<div id="rowNumberInAllBlocks">
  ## rowNumberInAllBlocks
</div>

Introduzido em: v1.1.0

Retorna um número de linha único para cada linha processada.

**Sintaxe**

```sql theme={null}
rowNumberInAllBlocks()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o número ordinal da linha no bloco de dados, a partir de `0`. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT rowNumberInAllBlocks()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
)
SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInAllBlocks()─┐
│                      0 │
│                      1 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      4 │
│                      5 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      2 │
│                      3 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      6 │
│                      7 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      8 │
│                      9 │
└────────────────────────┘
```

<div id="rowNumberInBlock">
  ## rowNumberInBlock
</div>

Introduzido em: v1.1.0

Para cada [block](/pt-BR/resources/develop-contribute/introduction/architecture#block) processado por `rowNumberInBlock`, retorna o número da linha atual.

O número retornado começa em 0 para cada [block](/pt-BR/resources/develop-contribute/introduction/architecture#block).

**Sintaxe**

```sql theme={null}
rowNumberInBlock()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o número ordinal da linha no bloco de dados, a partir de `0`. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT rowNumberInBlock()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
```

<div id="runningAccumulate">
  ## runningAccumulate
</div>

Introduzido em: v1.1.0

Acumula os estados de uma função de agregação para cada linha de um bloco de dados.

<Warning>
  **Descontinuado**

  O estado é redefinido a cada novo bloco de dados.
  Devido a esse comportamento propenso a erros, a função foi descontinuada, e recomenda-se usar [funções de janela](/pt-BR/reference/functions/window-functions) em vez dela.
  Você pode usar a configuração [`allow_deprecated_error_prone_window_functions`](/pt-BR/reference/settings/session-settings#allow_deprecated_error_prone_window_functions) para permitir o uso desta função.
</Warning>

**Sintaxe**

```sql theme={null}
runningAccumulate(agg_state[, grouping])
```

**Argumentos**

* `agg_state` — Estado da função de agregação. [`AggregateFunction`](/pt-BR/reference/data-types/aggregatefunction)
* `grouping` — Opcional. Chave de agrupamento. O estado da função é redefinido se o valor de `grouping` for alterado. Pode ser qualquer um dos tipos de dados suportados para os quais o operador de igualdade esteja definido. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna o resultado acumulado para cada linha. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso com initializeAggregation**

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

<div id="runningConcurrency">
  ## runningConcurrency
</div>

Introduzido em: v21.3.0

Calcula o número de eventos concorrentes.
Cada evento tem um horário de início e um horário de término.
O horário de início é incluído no evento, enquanto o horário de término é excluído.
As colunas com horário de início e horário de término devem ser do mesmo tipo de dado.
A função calcula o número total de eventos ativos (concorrentes) para cada horário de início do evento.

<Tip>
  **Requisitos**

  Os eventos devem ser ordenados pelo horário de início em ordem crescente.
  Se esse requisito for violado, a função gera uma exceção.
  Cada bloco de dados é processado separadamente.
  Se eventos de blocos de dados diferentes se sobrepuserem, eles não poderão ser processados corretamente.
</Tip>

<Warning>
  **Descontinuado**

  É recomendável usar [funções de janela](/pt-BR/reference/functions/window-functions).
</Warning>

**Sintaxe**

```sql theme={null}
runningConcurrency(start, end)
```

**Argumentos**

* `start` — Uma coluna com o horário de início dos eventos. [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`DateTime64`](/pt-BR/reference/data-types/datetime64)
* `end` — Uma coluna com o horário de término dos eventos. [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`DateTime64`](/pt-BR/reference/data-types/datetime64)

**Valor retornado**

Retorna o número de eventos simultâneos em cada horário de início dos eventos. [`UInt32`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT start, runningConcurrency(start, end) FROM example_table;
```

```response title=Response theme={null}
┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │                              1 │
│ 2025-03-06 │                              2 │
│ 2025-03-07 │                              3 │
│ 2025-03-11 │                              2 │
└────────────┴────────────────────────────────┘
```

<div id="runningDifference">
  ## runningDifference
</div>

Introduzido em: v1.1.0

Calcula a diferença entre os valores de duas linhas consecutivas no bloco de dados.
Retorna `0` para a primeira linha e, para as linhas subsequentes, a diferença em relação à linha anterior.

<Warning>
  **Descontinuado**

  Retorna diferenças apenas dentro do bloco de dados que está sendo processado no momento.
  Por causa desse comportamento propenso a erros, a função está descontinuada.
  Recomenda-se usar [funções de janela](/pt-BR/reference/functions/window-functions) em vez dela.

  Você pode usar a configuração [`allow_deprecated_error_prone_window_functions`](/pt-BR/reference/settings/session-settings#allow_deprecated_error_prone_window_functions) para permitir o uso desta função.
</Warning>

O resultado da função depende dos blocos de dados envolvidos e da ordem dos dados no bloco.
A ordem das linhas durante o cálculo de `runningDifference()` pode ser diferente da ordem das linhas retornadas ao usuário.
Para evitar isso, você pode criar uma subconsulta com [`ORDER BY`](/pt-BR/reference/statements/select/order-by) e chamar a função fora da subconsulta.
Observe que o tamanho do bloco afeta o resultado.
O estado interno de `runningDifference` é reiniciado a cada novo bloco.

**Sintaxe**

```sql theme={null}
runningDifference(x)
```

**Argumentos**

* `x` — Coluna para a qual calcular a diferença entre valores consecutivos. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna a diferença entre valores consecutivos, com 0 para a primeira linha.

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    EventID,
    EventTime,
    runningDifference(EventTime) AS delta
FROM
(
    SELECT
        EventID,
        EventTime
    FROM events
    WHERE EventDate = '2025-11-24'
    ORDER BY EventTime ASC
    LIMIT 5
);
```

```response title=Response theme={null}
┌─EventID─┬───────────EventTime─┬─delta─┐
│    1106 │ 2025-11-24 00:00:04 │     0 │
│    1107 │ 2025-11-24 00:00:05 │     1 │
│    1108 │ 2025-11-24 00:00:05 │     0 │
│    1109 │ 2025-11-24 00:00:09 │     4 │
│    1110 │ 2025-11-24 00:00:10 │     1 │
└─────────┴─────────────────────┴───────┘
```

**Exemplo do impacto do tamanho do bloco**

```sql title=Query theme={null}
SELECT
    number,
    runningDifference(number + 1) AS diff
FROM numbers(100000)
WHERE diff != 1;
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
└────────┴──────┘
┌─number─┬─diff─┐
│  65536 │    0 │
└────────┴──────┘
```

<div id="runningDifferenceStartingWithFirstValue">
  ## runningDifferenceStartingWithFirstValue
</div>

Introduzido em: v1.1.0

Calcula a diferença entre os valores de linhas consecutivas em um bloco de dados, mas, ao contrário de [`runningDifference`](#runningDifference), retorna o valor real da primeira linha em vez de `0`.

<Warning>
  **Descontinuado**

  Retorna diferenças apenas dentro do bloco de dados que está sendo processado no momento.
  Devido a esse comportamento sujeito a erros, a função foi descontinuada.
  Recomenda-se usar [funções de janela](/pt-BR/reference/functions/window-functions) em vez disso.

  Você pode usar a configuração `allow_deprecated_error_prone_window_functions` para permitir o uso desta função.
</Warning>

**Sintaxe**

```sql theme={null}
runningDifferenceStartingWithFirstValue(x)
```

**Argumentos**

* `x` — Coluna para a qual calcular a diferença acumulada. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna a diferença entre valores consecutivos, sendo que, para a primeira linha, retorna o valor da própria primeira linha. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    number,
    runningDifferenceStartingWithFirstValue(number) AS diff
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
│      1 │    1 │
│      2 │    1 │
│      3 │    1 │
│      4 │    1 │
└────────┴──────┘
```

<div id="serverUUID">
  ## serverUUID
</div>

Introduzido em: v20.1.0

Retorna o UUID (v4) aleatório e exclusivo gerado quando o servidor é iniciado pela primeira vez.
O UUID é persistido, ou seja, a segunda, a terceira etc. inicialização do servidor retorna o mesmo UUID.

**Sintaxe**

```sql theme={null}
serverUUID()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o UUID aleatório do servidor. [`UUID`](/pt-BR/reference/data-types/uuid)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT serverUUID();
```

```response title=Response theme={null}
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘
```

<div id="shardCount">
  ## shardCount
</div>

Introduzido em: v21.9.0

Retorna o número total de shards de uma consulta distribuída.
Se uma consulta não for distribuída, retorna o valor constante `0`.

**Sintaxe**

```sql theme={null}
shardCount()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o número total de shards ou `0`. [`UInt32`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
-- Veja o exemplo de shardNum() acima, que também ilustra shardCount()
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT shardCount() FROM shard_count_example;
```

```response title=Response theme={null}
┌─shardCount()─┐
│            2 │
│            2 │
└──────────────┘
```

<div id="shardNum">
  ## shardNum
</div>

Introduzido em: v21.9.0

Retorna o índice do shard que processa parte dos dados em uma consulta distribuída.
Os índices começam em `1`.
Se uma consulta não for distribuída, será retornado o valor constante `0`.

**Sintaxe**

```sql theme={null}
shardNum()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o índice do shard ou uma constante `0`. [`UInt32`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE shard_num_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT dummy, shardNum(), shardCount() FROM shard_num_example;
```

```response title=Response theme={null}
┌─dummy─┬─shardNum()─┬─shardCount()─┐
│     0 │          1 │            2 │
│     0 │          2 │            2 │
└───────┴────────────┴──────────────┘
```

<div id="showCertificate">
  ## showCertificate
</div>

Introduzido em: v22.6.0

Exibe informações sobre o certificado Secure Sockets Layer (SSL) atual do servidor, se ele estiver configurado.
Consulte [Configurando TLS](/pt-BR/concepts/features/security/tls/configuring-tls) para mais informações sobre como configurar o ClickHouse para usar certificados OpenSSL para validar conexões.

**Sintaxe**

```sql theme={null}
showCertificate()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna um map de pares chave-valor referentes ao certificado SSL configurado. [`Map(String, String)`](/pt-BR/reference/data-types/map)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT showCertificate() FORMAT LineAsString;
```

```response title=Response theme={null}
{'version':'1','serial_number':'2D9071D64530052D48308473922C7ADAFA85D6C5','signature_algo':'sha256WithRSAEncryption','issuer':'/CN=marsnet.local CA','not_before':'May  7 17:01:21 2024 GMT','not_after':'May  7 17:01:21 2025 GMT','subject':'/CN=chnode1','pkey_algo':'rsaEncryption'}
```

<div id="sleep">
  ## sleep
</div>

Introduzido em: v1.1.0

Pausa a execução de uma consulta pelo número especificado de segundos.
A função é usada principalmente para fins de teste e depuração.

Em geral, a função `sleep()` não deve ser usada em ambientes de produção, pois pode afetar negativamente o desempenho das consultas e a capacidade de resposta do sistema.
No entanto, ela pode ser útil nos seguintes cenários:

1. **Teste**: Ao testar ou fazer benchmarking do ClickHouse, talvez você queira simular atrasos ou introduzir pausas para observar como o sistema se comporta em determinadas condições.
2. **Depuração**: Se você precisar examinar o estado do sistema ou a execução de uma consulta em um momento específico, poderá usar `sleep()` para introduzir uma pausa, permitindo inspecionar ou coletar informações relevantes.
3. **Simulação**: Em alguns casos, talvez você queira simular cenários do mundo real em que ocorram atrasos ou pausas, como latência de rede ou dependências de sistemas externos.

<Warning>
  É importante usar a função `sleep()` com critério e somente quando necessário, pois ela pode afetar o desempenho geral e a capacidade de resposta do seu sistema ClickHouse.
</Warning>

Por motivos de segurança, a função só pode ser executada no perfil do usuário `default` (com `allow_sleep` habilitado).

**Sintaxe**

```sql theme={null}
sleep(seconds)
```

**Argumentos**

* `seconds` — O número de segundos para pausar a execução da consulta, com um máximo de 3 segundos. Pode ser um valor de ponto flutuante para especificar frações de segundo. [`const UInt*`](/pt-BR/reference/data-types/int-uint) ou [`const Float*`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna `0`. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
-- Esta consulta fará uma pausa de 2 segundos antes de ser concluída.
-- Durante esse tempo, nenhum resultado será retornado, e a consulta parecerá travada ou sem resposta.
SELECT sleep(2);
```

```response title=Response theme={null}
┌─sleep(2)─┐
│        0 │
└──────────┘
1 row in set. Elapsed: 2.012 sec.
```

<div id="sleepEachRow">
  ## sleepEachRow
</div>

Introduzido em: v1.1.0

Pausa a execução de uma consulta por um número específico de segundos para cada linha no conjunto de resultados.

A função `sleepEachRow()` é usada principalmente para testes e depuração, de forma semelhante à função [`sleep()`](#sleep).
Ela permite simular atrasos ou inserir pausas no processamento de cada linha, o que pode ser útil em cenários como:

1. **Testes**: Ao testar ou fazer benchmarking do desempenho do ClickHouse em condições específicas, você pode usar `sleepEachRow()` para simular atrasos ou inserir pausas em cada linha processada.
2. **Depuração**: Se você precisar examinar o estado do sistema ou a execução de uma consulta para cada linha processada, poderá usar `sleepEachRow()` para inserir pausas, permitindo inspecionar ou coletar informações relevantes.
3. **Simulação**: Em alguns casos, você pode querer simular cenários reais em que ocorram atrasos ou pausas para cada linha processada, como ao lidar com sistemas externos ou latência de rede.

<Warning>
  Assim como a função `sleep()`, é importante usar `sleepEachRow()` com critério e somente quando necessário, pois ela pode afetar significativamente o desempenho geral e a capacidade de resposta do seu sistema ClickHouse, especialmente ao lidar com grandes conjuntos de resultados.
</Warning>

**Sintaxe**

```sql theme={null}
sleepEachRow(seconds)
```

**Argumentos**

* `seconds` — O número de segundos para pausar a execução da consulta para cada linha do conjunto de resultados, com um máximo de 3 segundos. Pode ser um valor de ponto flutuante para especificar frações de segundo. [`const UInt*`](/pt-BR/reference/data-types/int-uint) ou [`const Float*`](/pt-BR/reference/data-types/float)

**Valor retornado**

Retorna `0` para cada linha. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
-- A saída terá um atraso, com uma pausa de 0,5 segundo entre cada linha.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
```

```response title=Response theme={null}
┌─number─┬─sleepEachRow(0.5)─┐
│      0 │                 0 │
│      1 │                 0 │
│      2 │                 0 │
│      3 │                 0 │
│      4 │                 0 │
└────────┴───────────────────┘
```

<div id="structureToCapnProtoSchema">
  ## structureToCapnProtoSchema
</div>

Introduzido em: v23.8.0

Função que converte a estrutura de uma tabela do ClickHouse para um schema no formato CapnProto

**Sintaxe**

```sql theme={null}
structureToCapnProtoSchema(table_structure, message)
```

**Argumentos**

* Nenhum.

**Valor retornado**

**Exemplos**

**random**

```sql title=Query theme={null}
SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
```

```response title=Response theme={null}
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}
```

<div id="structureToProtobufSchema">
  ## structureToProtobufSchema
</div>

Introduzido em: v23.8.0

Converte a estrutura de uma tabela do ClickHouse em um schema no formato Protobuf.

Esta função recebe a definição da estrutura de uma tabela do ClickHouse e a converte em uma
definição de schema em Protocol Buffers (Protobuf) na sintaxe proto3. Isso é útil para gerar
schemas Protobuf que correspondam às estruturas das suas tabelas do ClickHouse para intercâmbio de dados.

**Sintaxe**

```sql theme={null}
structureToProtobufSchema(structure, message_name)
```

**Argumentos**

* `structure` — Definição da estrutura da tabela do ClickHouse como uma string (por exemplo, 'column1 Type1, column2 Type2'). [`String`](/pt-BR/reference/data-types/string)
* `message_name` — Nome do tipo de mensagem Protobuf no schema gerado. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna uma definição de schema Protobuf na sintaxe proto3 que corresponde à estrutura de entrada do ClickHouse. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Conversão da estrutura do ClickHouse para schema Protobuf**

```sql title=Query theme={null}
SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
```

```response title=Response theme={null}
syntax = "proto3";

message MessageName
{
    bytes s = 1;
    uint32 x = 2;
}
```

<div id="tcpPort">
  ## tcpPort
</div>

Introduzido em: v20.12.0

Retorna o número da porta TCP da [interface nativa](/pt-BR/concepts/features/interfaces/tcp) em que o servidor escuta.
Se executada no contexto de uma tabela distribuída, esta função gera uma coluna comum com valores relevantes para cada shard.
Caso contrário, gera um valor constante.

**Sintaxe**

```sql theme={null}
tcpPort()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o número da porta TCP. [`UInt16`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT tcpPort()
```

```response title=Response theme={null}
┌─tcpPort()─┐
│      9000 │
└───────────┘
```

<div id="throwIf">
  ## throwIf
</div>

Introduzido em: v1.1.0

Lança uma exceção se o argumento x for true.
Para usar o argumento `error_code`, o parâmetro de configuração `allow_custom_error_code_in_throw` deve estar habilitado.

**Sintaxe**

```sql theme={null}
throwIf(x[, message[, error_code]])
```

**Argumentos**

* `x` — Condição a ser verificada. [`Any`](/pt-BR/reference/data-types)
* `message` — Opcional. Mensagem de erro personalizada. [`const String`](/pt-BR/reference/data-types/string)
* `error_code` — Opcional. Código de erro personalizado. [`const Int8/16/32`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna `0` se a condição for `false` e lança uma exceção se a condição for `true`. [`UInt8`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
```

```response title=Response theme={null}
↙ Progress: 0.00 linhas, 0.00 B (0.00 linhas/s., 0.00 B/s.) Exceção recebida do servidor (versão 19.14.1):
Código: 395. DB::Exception: Recebido de localhost:9000. DB::Exception: Too many.
```

<div id="toColumnTypeName">
  ## toColumnTypeName
</div>

Introduzido em: v1.1.0

Retorna o nome interno do tipo de dados do valor fornecido.
Diferentemente da função [`toTypeName`](#toTypeName), o tipo de dados retornado pode incluir colunas internas de encapsulamento, como `Const` e `LowCardinality`.

**Sintaxe**

```sql theme={null}
toColumnTypeName(value)
```

**Argumentos**

* `value` — Valor cujo tipo de dado interno deve ser retornado. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna o tipo de dado interno usado para representar o valor. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
```

```response title=Response theme={null}
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32)                                             │
└───────────────────────────────────────────────────────────┘
```

<div id="toTypeName">
  ## toTypeName
</div>

Introduzido em: v1.1.0

Retorna o nome do tipo do argumento informado.
Se `NULL` for informado, a função retorna o tipo `Nullable(Nothing)`, que corresponde à representação interna de `NULL` no ClickHouse.

**Sintaxe**

```sql theme={null}
toTypeName(x)
```

**Argumentos**

* `x` — Um valor de tipo arbitrário. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna o nome do tipo de dado do valor fornecido. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT toTypeName(123)
```

```response title=Response theme={null}
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘
```

<div id="tokenizeQuery">
  ## tokenizeQuery
</div>

Introduzido em: v26.5.0

Tokeniza uma string de consulta em ClickHouse SQL e retorna um array de tokens.
Cada token é uma tupla nomeada com a posição inicial (em bytes), a posição final e o tipo do token.

**Sintaxe**

```sql theme={null}
tokenizeQuery(query)
```

**Argumentos**

* `query` — Uma string de consulta em ClickHouse SQL. String.

**Valor retornado**

Um array de tuplas nomeadas `(begin UInt64, end UInt64, type Enum8(...))` representando os tokens da consulta. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/pt-BR/reference/data-types/array)

**Exemplos**

**simples**

```sql title=Query theme={null}
SELECT tokenizeQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]
```

<div id="transactionID">
  ## transactionID
</div>

Introduzido em: v22.6.0

Retorna o ID de uma transação.

<Note>
  Esta função faz parte de um conjunto de funcionalidades experimentais.
  Ative o suporte experimental a transações adicionando esta configuração aos seus [arquivos de configuração](/pt-BR/concepts/features/configuration/server-config/configuration-files):

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Para mais informações, consulte a página [Suporte transacional (ACID)](/pt-BR/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Sintaxe**

```sql theme={null}
transactionID()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna uma tupla composta por `start_csn`, `local_tid` e `host_id`.

* `start_csn`: Número sequencial global; o timestamp de commit mais recente observado quando esta transação foi iniciada.
* `local_tid`: Número sequencial local, exclusivo para cada transação iniciada por este host dentro de um `start_csn` específico.
* `host_id`: UUID do host que iniciou esta transação.
  [`Tuple(UInt64, UInt64, UUID)`](/pt-BR/reference/data-types/tuple)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘
```

<div id="transactionLatestSnapshot">
  ## transactionLatestSnapshot
</div>

Introduzido em: v22.6.0

Retorna o snapshot mais recente (Commit Sequence Number) de uma [transação](/pt-BR/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) disponível para leitura.

<Note>
  Esta função faz parte de um conjunto de recursos experimentais. Ative o suporte experimental a transações adicionando esta configuração às suas configurações:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Para mais informações, consulte a página [Suporte transacional (ACID)](/pt-BR/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Sintaxe**

```sql theme={null}
transactionLatestSnapshot()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o snapshot (CSN) mais recente da transação. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

<div id="transactionOldestSnapshot">
  ## transactionOldestSnapshot
</div>

Introduzido em: v22.6.0

Retorna o snapshot mais antigo (Commit Sequence Number) visível para alguma [transação](/pt-BR/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) em execução.

<Note>
  Esta função faz parte de um conjunto de recursos experimentais. Ative o suporte experimental a transações adicionando esta opção à sua configuração:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Para mais informações, consulte a página [suporte transacional (ACID)](/pt-BR/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Sintaxe**

```sql theme={null}
transactionOldestSnapshot()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o snapshot (CSN) mais antigo de uma transação. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionOldestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

<div id="transform">
  ## transform
</div>

Introduzido em: v1.1.0

Transforma um valor de acordo com um mapeamento explicitamente definido entre determinados elementos e outros elementos.

Há duas variações desta função:

* `transform(x, array_from, array_to, default)` - transforma `x` usando arrays de mapeamento, com um valor padrão para elementos sem correspondência
* `transform(x, array_from, array_to)` - faz a mesma transformação, mas retorna o `x` original se nenhuma correspondência for encontrada

A função procura `x` em `array_from` e retorna o elemento correspondente de `array_to` no mesmo índice.
Se `x` não for encontrado em `array_from`, ela retorna o valor `default` (versão com 4 parâmetros) ou o `x` original (versão com 3 parâmetros).
Se houver vários elementos correspondentes em `array_from`, ela retorna o elemento correspondente à primeira correspondência.

Requisitos:

* `array_from` e `array_to` devem ter o mesmo número de elementos
* Para a versão com 4 parâmetros: `transform(T, Array(T), Array(U), U) -> U`, em que `T` e `U` podem ser tipos compatíveis diferentes
* Para a versão com 3 parâmetros: `transform(T, Array(T), Array(T)) -> T`, em que todos os tipos devem ser iguais

**Sintaxe**

```sql theme={null}
transform(x, array_from, array_to[, default])
```

**Argumentos**

* `x` — Valor a ser transformado. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) or [`Decimal`](/pt-BR/reference/data-types/decimal) or [`Float*`](/pt-BR/reference/data-types/float) or [`String`](/pt-BR/reference/data-types/string) or [`Date`](/pt-BR/reference/data-types/date) or [`DateTime`](/pt-BR/reference/data-types/datetime)
* `array_from` — Array constante de valores para buscar correspondências. [`Array((U)Int*)`](/pt-BR/reference/data-types/array) or [`Array(Decimal)`](/pt-BR/reference/data-types/array) or [`Array(Float*)`](/pt-BR/reference/data-types/array) or [`Array(String)`](/pt-BR/reference/data-types/array) or [`Array(Date)`](/pt-BR/reference/data-types/array) or [`Array(DateTime)`](/pt-BR/reference/data-types/array)
* `array_to` — Array constante de valores a serem retornados para as correspondências encontradas em `array_from`. [`Array((U)Int*)`](/pt-BR/reference/data-types/array) or [`Array(Decimal)`](/pt-BR/reference/data-types/array) or [`Array(Float*)`](/pt-BR/reference/data-types/array) or [`Array(String)`](/pt-BR/reference/data-types/array) or [`Array(Date)`](/pt-BR/reference/data-types/array) or [`Array(DateTime)`](/pt-BR/reference/data-types/array)
* `default` — Opcional. Valor a ser retornado se `x` não for encontrado em `array_from`. Se omitido, retorna `x` sem alterações. [`(U)Int*`](/pt-BR/reference/data-types/int-uint) or [`Decimal`](/pt-BR/reference/data-types/decimal) or [`Float*`](/pt-BR/reference/data-types/float) or [`String`](/pt-BR/reference/data-types/string) or [`Date`](/pt-BR/reference/data-types/date) or [`DateTime`](/pt-BR/reference/data-types/datetime)

**Valor retornado**

Retorna o valor correspondente de `array_to` se x corresponder a um elemento de `array_from`; caso contrário, retorna default (se fornecido) ou x (se default não for fornecido). [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**transform(T, Array(T), Array(U), U) -> U**

```sql title=Query theme={null}
SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM test.hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC
```

```response title=Response theme={null}
┌─title─────┬──────c─┐
│ Yandex    │ 498635 │
│ Google    │ 229872 │
│ Other     │ 104472 │
└───────────┴────────┘
```

**transform(T, Array(T), Array(T)) -> T**

```sql title=Query theme={null}
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM test.hits
GROUP BY domain(Referer)
ORDER BY count() DESC
LIMIT 10
```

```response title=Response theme={null}
┌─s──────────────┬───────c─┐
│                │ 2906259 │
│ www.yandex     │  867767 │
│ ███████.ru     │  313599 │
│ mail.yandex.ru │  107147 │
│ ██████.ru      │  100355 │
│ █████████.ru   │   65040 │
│ news.yandex.ru │   64515 │
│ ██████.net     │   59141 │
│ example.com    │   57316 │
└────────────────┴─────────┘
```

<div id="uniqThetaIntersect">
  ## uniqThetaIntersect
</div>

Introduzido em: v22.9.0

Dois objetos `uniqThetaSketch` são usados para calcular a interseção (operação de conjunto ∩); o resultado é um novo `uniqThetaSketch`.

**Sintaxe**

```sql theme={null}
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)
```

**Argumentos**

* `uniqThetaSketch` — objeto uniqThetaSketch. [`Tuple`](/pt-BR/reference/data-types/tuple) ou [`Array`](/pt-BR/reference/data-types/array) ou [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`String`](/pt-BR/reference/data-types/string) ou [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

Um novo uniqThetaSketch contendo o resultado da interseção. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘
```

<div id="uniqThetaNot">
  ## uniqThetaNot
</div>

Introduzido em: v22.9.0

Dois objetos `uniqThetaSketch` para realizar o cálculo a\_not\_b (operação de conjunto ×); o resultado é um novo `uniqThetaSketch`.

**Sintaxe**

```sql theme={null}
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)
```

**Argumentos**

* `uniqThetaSketch` — objeto do tipo uniqThetaSketch. [`Tuple`](/pt-BR/reference/data-types/tuple) ou [`Array`](/pt-BR/reference/data-types/array) ou [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`String`](/pt-BR/reference/data-types/string) ou [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

Retorna um novo uniqThetaSketch contendo o resultado de a\_not\_b. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
```

```response title=Response theme={null}
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘
```

<div id="uniqThetaUnion">
  ## uniqThetaUnion
</div>

Introduzido em: v22.9.0

Usa dois objetos `uniqThetaSketch` para calcular a união (operação de conjunto ∪); o resultado é um novo `uniqThetaSketch`.

**Sintaxe**

```sql theme={null}
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)
```

**Argumentos**

* `uniqThetaSketch` — objeto uniqThetaSketch. [`Tuple`](/pt-BR/reference/data-types/tuple) ou [`Array`](/pt-BR/reference/data-types/array) ou [`Date`](/pt-BR/reference/data-types/date) ou [`DateTime`](/pt-BR/reference/data-types/datetime) ou [`String`](/pt-BR/reference/data-types/string) ou [`(U)Int*`](/pt-BR/reference/data-types/int-uint) ou [`Float*`](/pt-BR/reference/data-types/float) ou [`Decimal`](/pt-BR/reference/data-types/decimal)

**Valor retornado**

Retorna um novo uniqThetaSketch com o resultado da união. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘
```

<div id="uptime">
  ## uptime
</div>

Introduzido em: v1.1.0

Retorna o uptime do servidor em segundos.
Se for executada no contexto de uma tabela distribuída, essa função gera uma coluna comum com valores correspondentes a cada shard.
Caso contrário, produz um valor constante.

**Sintaxe**

```sql theme={null}
uptime()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o uptime do servidor em segundos. [`UInt32`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT uptime() AS Uptime
```

```response title=Response theme={null}
┌─Uptime─┐
│  55867 │
└────────┘
```

<div id="variantElement">
  ## variantElement
</div>

Introduzido em: v25.2.0

Extrai, de uma coluna `Variant`, uma coluna do tipo especificado.

**Sintaxe**

```sql theme={null}
variantElement(variant, type_name[, default_value])
```

**Argumentos**

* `variant` — Coluna Variant. [`Variant`](/pt-BR/reference/data-types/variant)
* `type_name` — O nome do tipo de variante a ser extraído. [`String`](/pt-BR/reference/data-types/string)
* `default_value` — O valor padrão que será usado se `variant` não tiver uma variante do tipo especificado. Pode ser de qualquer tipo. Opcional. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna uma coluna com o tipo de variante especificado extraído da coluna Variant. [`Any`](/pt-BR/reference/data-types)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;
```

```response title=Response theme={null}
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ          │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ []                                 │
│ 42            │ ᴺᵁᴸᴸ                        │                          42 │ []                                 │
│ Hello, World! │ Hello, World!               │                        ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ [1,2,3]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘
```

<div id="variantType">
  ## variantType
</div>

Introduzido em: v24.2.0

Retorna o nome do tipo de variante de cada linha da coluna `Variant`. Se a linha contiver NULL, retorna 'None'.

**Sintaxe**

```sql theme={null}
variantType(variant)
```

**Argumentos**

* `variant` — coluna Variant. [`Variant`](/pt-BR/reference/data-types/variant)

**Valor retornado**

Retorna uma coluna Enum com o nome do tipo da variante para cada linha. [`Enum`](/pt-BR/reference/data-types/enum)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;
```

```response title=Response theme={null}
┌─variantType(v)─┐
│ None           │
│ UInt64         │
│ String         │
│ Array(UInt64)  │
└────────────────┘
```

<div id="version">
  ## version
</div>

Introduzido na versão: v1.1.0

Retorna a versão atual do ClickHouse como uma string no formato: `major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release`.
Se for executada no contexto de uma tabela distribuída, esta função gera uma coluna comum com valores específicos de cada shard.
Caso contrário, produz um valor constante.

**Sintaxe**

```sql theme={null}
version()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna a versão atual do ClickHouse. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT version()
```

```response title=Response theme={null}
┌─version()─┐
│ 24.2.1.1  │
└───────────┘
```

<div id="visibleWidth">
  ## visibleWidth
</div>

Introduzido em: v1.1.0

Calcula a largura aproximada ao gerar valores no console em formato de texto (separado por tabulação).
Esta função é usada pelo sistema para implementar os formatos Pretty.
`NULL` é representado como uma string correspondente a `NULL` nos formatos Pretty.

**Sintaxe**

```sql theme={null}
visibleWidth(x)
```

**Argumentos**

* `x` — Um valor de qualquer tipo de dado. [`Any`](/pt-BR/reference/data-types)

**Valor retornado**

Retorna a largura aproximada do valor quando ele é exibido em formato de texto. [`UInt64`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Calcular a largura visível de NULL**

```sql title=Query theme={null}
SELECT visibleWidth(NULL)
```

```response title=Response theme={null}
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘
```

<div id="zookeeperSessionUptime">
  ## zookeeperSessionUptime
</div>

Introduzido em: v21.11.0

Retorna o uptime da sessão atual do ZooKeeper, em segundos.

**Sintaxe**

```sql theme={null}
zookeeperSessionUptime()
```

**Argumentos**

* Nenhum.

**Valor retornado**

Retorna o uptime da sessão atual do ZooKeeper em segundos. [`UInt32`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT zookeeperSessionUptime();
```

```response title=Response theme={null}
┌─zookeeperSessionUptime()─┐
│                      286 │
└──────────────────────────┘
```
