Tipos de dados do SQL legado
Neste documento, detalharemos os tipos de dados aceitos pela sintaxe de consulta SQL legada do BigQuery. A sintaxe de consulta de preferência para o BigQuery é o GoogleSQL. Para informações sobre tipos de dados no GoogleSQL, consulte este link.
Tipos de dados do SQL legado
Os dados podem ser dos tipos a seguir:
Tipo de dados | Valores possíveis | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | Dados de caracteres de comprimento variável (UTF-8). | ||||||||||||
BYTES | Dados binários de comprimento variável.
|
||||||||||||
INTEGER |
Inteiro assinado de 64 bits. Se você estiver usando a API BigQuery para carregar um número inteiro fora do intervalo de [-253+1, 253-1) (na maioria dos casos, isso significa maior que 9.007.199.254.740.991), em uma coluna de números inteiros (INT64), você precisa transmiti-la como uma string para evitar o corrompimento dos dados. Esse problema é causado por uma limitação no tamanho inteiro em JSON/ECMAScript. Para mais informações, consulte a seção "Números" da RFC 7159. |
||||||||||||
FLOAT | Formato de ponto flutuante de precisão dupla. | ||||||||||||
NUMERIC | O SQL legado tem suporte limitado para NUMERIC. Para mais informações, consulte NUMERIC exato no SQL legado. | ||||||||||||
BIGNUMERIC | O suporte ao SQL legado é limitado. Para mais informações, consulte Numeric exato no SQL legado. | ||||||||||||
BOOLEANO |
|
||||||||||||
RECORD | Um conjunto de um ou mais campos. | ||||||||||||
TIMESTAMP |
É possível descrever os tipos de dados TIMESTAMP como datas do calendário ou carimbos de data/hora do UNIX. O BigQuery armazena dados TIMESTAMP internamente como um carimbo de data/hora do UNIX com precisão de microssegundos. Carimbos de data/hora do UNIX Um número decimal positivo ou negativo. Um número positivo especifica o número de segundos a partir do início da época (01/01/1970, 00h00m00s UTC), e um número negativo especifica o número de segundos antes disso. Até seis casas decimais com precisão de microssegundos são mantidas. Strings de data e hora Uma string de data e hora no formato É possível fornecer uma compensação de fuso horário nas strings de data e hora, mas o BigQuery não mantém a diferença após converter o valor no formato interno dele. Se for necessário manter os dados de acordo com o fuso horário original, armazene essa diferença em uma coluna separada. O zero inicial é necessário quando você especifica uma diferença de fuso horário de um dígito. As strings de data e hora precisam estar entre aspas ao usar o formato JSON. Exemplos Os exemplos a seguir mostram maneiras idênticas de descrever datas específicas, nos formatos de strings de data e hora e carimbos de data/hora do UNIX.
|
||||||||||||
DATE | O SQL legado tem compatibilidade limitada para DATE. Para mais informações, consulte Hora civil no SQL legado. | ||||||||||||
TIME | O SQL legado tem compatibilidade limitada para TIME. Para mais informações, consulte Hora civil no SQL legado. | ||||||||||||
DATETIME | O SQL legado tem suporte limitado para DATETIME. Para mais informações, consulte Hora civil no SQL legado. |
Numérico exato no SQL legado
É possível ler valores NUMERIC ou BIGNUMERIC em cláusulas inalteráveis, como
SELECT list (with aliases)
, GROUP BY keys
e campos de passagem em
funções analíticas, e assim por diante. No entanto, qualquer cálculo com valores NUMERIC ou
BIGNUMERIC, incluindo comparações, produz resultados indefinidos.
As seguintes funções de cast e conversão têm suporte no SQL legado:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Hora civil no SQL legado
É possível ler tipos de dados de hora civil (DATE, TIME e DATETIME) e processá-los com operadores não modificadores, como SELECT list (with aliases)
, GROUP BY keys
e campos de passagem em funções analíticas etc. No entanto, outros cálculos sobre valores de hora civil, incluindo comparações, produzem resultados indefinidos.
Os seguintes casts e funções de conversão são compatíveis no SQL legado:
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
Na prática, o SQL legado interpreta os valores de hora civil como números inteiros, e as operações sobre números inteiros que você acha que são valores de hora civil produzem resultados inesperados.
Para calcular valores usando tipos de dados de hora civil, utilize o GoogleSQL, que é compatível com todas as operações SQL nos tipos de dados DATE, DATETIME e TIME.
A seguir
- Para definir o tipo de dados de um campo usando a API, consulte
schema.fields.type
. - Consulte os tipos de dados do GoogleSQL em Tipos de dados.