Consultas federadas do Cloud SQL

Nesta página, descrevemos como consultar dados no BigQuery e no Cloud SQL com uma consulta federada.

Visão geral

Dados costumam ficar espalhados em muitos lugares. É possível ter uma tabela de clientes armazenada no BigQuery e uma tabela de vendas armazenada no Cloud SQL e querer unir as duas em uma única consulta.

A federação BigQuery Cloud SQL permite que o BigQuery consulte dados que residem no Cloud SQL em tempo real, sem copiar ou mover dados. Ele aceita as instâncias do MySQL (segunda geração) e do PostgreSQL no Cloud SQL.

Após a configuração única inicial, é possível escrever uma consulta com a nova função SQL EXTERNAL_QUERY().

Fluxo de trabalho

Sintaxe da consulta federada

A consulta federada introduz uma nova função: EXTERNAL_QUERY.

Sintaxe

    SELECT * FROM EXTERNAL_QUERY(connection_id, external_database_query);
  • connection_id (string): o nome do recurso de conexão do banco de dados que você cria na IU da Web do BigQuery, na ferramenta de linha de comando bq ou na API BigQuery.

    Exemplo de código da conexãobigquery-federation-test.us.test-mysql

  • external_database_query (string): uma consulta somente leitura no dialeto SQL do banco de dados externo (MySQL ou PostgreSQL). A consulta é executada no banco de dados externo no Cloud SQL.

Descrição

EXTERNAL_QUERY executa a consulta no Cloud SQL e retorna resultados como uma tabela temporária. O tipo de dados do banco de dados de origem (MySQL ou PostgreSQL) é convertido em tipo de dados do BigQuery na tabela de resultados temporários com o seguinte mapeamento de tipo de dados. A função EXTERNAL_QUERY é normalmente usada em uma cláusula FROM. Essa função só está disponível no SQL padrão do BigQuery.

Tipo de retorno

Uma tabela do BigQuery.

Exemplo de consulta

Imagine que você precise da data do primeiro pedido de cada um de seus clientes para incluir no relatório que descrevemos na Visão geral. No momento, esses dados não estão no BigQuery, mas estão disponíveis no banco de dados PostgreSQL operacional no Cloud SQL. O exemplo de consulta federada a seguir faz isso.

SELECT c.customer_id, c.name, SUM(t.amount) AS total_revenue,
rq.first_order_date
FROM customers AS c
INNER JOIN transaction_fact AS t ON c.customer_id = t.customer_id
LEFT OUTER JOIN EXTERNAL_QUERY(
  'connection_id',
  '''SELECT customer_id, MIN(order_date) AS first_order_date
  FROM orders
  GROUP BY customer_id''') AS rq ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;

A consulta de exemplo inclui três partes:

  1. Executar a consulta externa SELECT customer_id, MIN(order_date) AS first_order_date FROM orders GROUP BY customer_id no banco de dados PostgreSQL operacional para conseguir a primeira data de pedido de cada cliente por meio da função EXTERNAL_QUERY().
  2. Mesclar a tabela de resultados de consultas externas com a tabela de clientes no BigQuery por customer_id.
  3. Selecionar as informações do cliente e a data do primeiro pedido.

O pedido não é preservado

EXTERNAL_QUERY() não honrará os pedidos do resultado da consulta externa, mesmo que ela inclua ORDER BY. A consulta de exemplo a seguir ordena linhas por ID do cliente no Cloud SQL, mas o BigQuery não exibe as linhas de resultado nesse pedido.

SELECT * FROM EXTERNAL_QUERY(
'connection_id',
'''SELECT * FROM customers AS c ORDER BY c.customer_id'');

Antes de começar

Ativar o serviço de conexão do BigQuery

  1. Abra a página da API BigQuery Connection na biblioteca de APIs.
  2. No menu suspenso, selecione o projeto que contém a instância do Cloud SQL.
  3. Clique no botão ATIVAR.

    API BigQuery Connection

Conta de serviço

O BigQuery usa uma conta de serviço para se conectar à sua instância do Cloud SQL. Quando você ativa a API BigQuery Connection, uma conta de serviço do Cloud Identity and Access Management (Cloud IAM) gerenciada pelo Google Cloud é criada automaticamente em seu nome. A conta de serviço tem os papéis a seguir:

Papel Descrição
cloudsql.client Conexão com uma instância do Cloud SQL
logging.logWriter Gravação no cloud-logging
metrics.metricWriter Gravação no cloud-monitoring

Permissões

  • Para criar e manter um recurso de conexão, o usuário precisa ter o papel predefinido bigquery.admin do Cloud IAM.

  • O papel bigquery.admin inclui as seguintes permissões do serviço de conexão do BigQuery:

    • bigquery.connections.create
    • bigquery.connections.get
    • bigquery.connections.list
    • bigquery.connections.update
    • bigquery.connections.use
    • bigquery.connections.delete

Para conceder permissões a outro usuário para que ele possa usar o recurso de conexão em consultas do Cloud SQL, consulte Como conceder permissões a outro usuário.

Como conceder acesso bigquery.admin

Para conceder o papel bigquery.admin:

Console

  1. Abra a página do Cloud IAM no Console do Cloud.

    Abrir a página do IAM

  2. Clique em Selecione um projeto.

  3. Selecione um projeto e clique em Abrir.

  4. Clique em Adicionar para incluir novos membros no projeto e defina as permissões deles.

  5. Na caixa de diálogo Adicionar membros:

    • Em Membros, insira o endereço de e-mail do usuário ou grupo.
    • Na lista suspensa Selecionar um papel, clique em BigQuery > Administrador do BigQuery.
    • Clique em Adicionar.

      Conceder papel de administrador

gcloud

É possível usar a ferramenta de linha de comando gcloud para conceder a um usuário ou grupo o papel bigquery.admin.

Para adicionar uma única vinculação à política do Cloud IAM do seu projeto, digite o comando a seguir. Para incluir um usuário, forneça a sinalização --member no formato user:user@example.com. Para incluir um grupo, forneça a sinalização --member no formato group:group@example.com.

gcloud projects add-iam-policy-binding project_id \
--member group/user:address \
--role roles/bigquery.admin

Em que:

  • project_id é o ID do projeto;
  • group/user é group ou user.
  • address é o endereço de e-mail do usuário ou do grupo.

Exemplo:

gcloud projects add-iam-policy-binding myproject \
--member group:group@example.com \
--role roles/bigquery.admin

A política atualizada é exibida:

    bindings:
    - members:
      - group:group@example.com
        role: roles/bigquery.admin
    

Para mais informações sobre os papéis do Cloud IAM no BigQuery, consulte Papéis e permissões predefinidos.

IP público

A federação BigQuery Cloud SQL só aceita instâncias do Cloud SQL com conectividade de IP público. Configure a conectividade do IP público para sua instância do Cloud SQL.

Como configurar conexões do banco de dados do Cloud SQL

Para evitar a gravação de credenciais de banco de dados como texto simples (em inglês) em uma consulta federada, é necessário primeiro criar um recurso de conexão de banco de dados por banco de dados no BigQuery e, em seguida, referenciar o recurso de conexão na consulta federada.

O recurso de conexão tem um conjunto de permissões do Cloud IAM, que pode ser concedido a outros usuários. Esse recurso é criptografado e armazenado com segurança no serviço de conexão do BigQuery e só pode ser usado para consultas federadas.

Para mais informações sobre as permissões e os papéis predefinidos do Cloud IAM no BigQuery, acesse este link.

Criar um recurso de conexão

Console

  1. Para criar um recurso de conexão, acesse a IU da Web do BigQuery no Console do Cloud.

    Acesse Console do Cloud

  2. No menu Adicionar dados, selecione Fonte de dados externa.

    Criar recurso de conexão

  3. No painel Fonte de dados externa, insira as seguintes informações:

    • Em Tipo de conexão, selecione MySQL ou Postgres.
    • Em ID da conexão, insira um identificador para o recurso de conexão. Letras, números e sublinhados são permitidos.
    • Em Local da conexão, selecione um local (ou região) do BigQuery compatível com a região da instância do Cloud SQL.
    • (Opcional) Em Nome amigável, insira um nome fácil de usar para a conexão, como My connection resource. O nome intuitivo pode ser qualquer valor que ajude você a identificar o recurso de conexão se precisar modificá-lo mais tarde.
    • (Opcional) Em Descrição, insira uma descrição para este recurso de conexão.
    • Em ID da instância do Cloud SQL, insira o nome completo da instância do Cloud SQL, geralmente no formato project-id:location-id:instance-id. Encontre o ID da instância na página de detalhes da instância do Cloud SQL que você quer consultar.
    • Em Nome do banco de dados, insira o nome do banco de dados.
    • Em Nome de Usuário, insira o nome de usuário para o banco de dados.
    • Em Senha, insira a senha do banco de dados.

      • (Opcional) Marque Mostrar senha para revelar a senha.

      Novo recurso de conexão.

  4. Clique em Criar conexão.

bq

Insira o comando bq mk e forneça a sinalização de conexão: --connection. As sinalizações abaixo também são obrigatórias:

  • --connection_type
    • --connection_type é sempre CLOUD_SQL
  • --properties
  • --connection_credential
  • --project_id
  • --location
  • Um nome para a conexão. Insira um nome para identificar a conexão, usando apenas letras, números e sublinhados.

    bq mk --connection --connection_type='CLOUD_SQL' --properties=PROPERTIES --connection_credential=CREDENTIALS --project_id=PROJECT_ID --location=LOCATION new_connection
    

Substitua:

  • PROPERTIES: os parâmetros da conexão criada no formato JSON. Por exemplo, --properties='{"param":"param_value"}'. Para criar um recurso de conexão, é necessário fornecer os parâmetros instanceID, database e type. Os parâmetros friendly_name e description são opcionais.
  • CREDENTIALS: os parâmetros username e password.
  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região em que a instância do Cloud SQL está localizada.

Por exemplo, o comando abaixo cria um novo recurso de conexão chamado my_new_connection (nome amigável: "Minha nova conexão") em um projeto com o ID federation-test.

bq mk --connection --connection_type='CLOUD_SQL' --properties='{"instanceId":"federation-test:us-central1:mytestsql","database":"mydatabase","type":"MYSQL"}' --connection_credential='{"username":"myusername", "password":"mypassword"}' --project_id=federation-test --location=us my_new_connection

API

Na API do BigQuery Connection, é possível invocar CreateConnection no ConnectionService para instanciar uma conexão. Consulte a página da biblioteca de cliente para mais detalhes.

Resolver problemas

Esta seção resolve problemas que podem ocorrer durante a configuração de uma nova conexão. Neste documento, não englobamos todas as mensagens de erro ou problemas possíveis.

Ao fazer o diagnóstico de problemas gerais de conexão, verifique os itens a seguir:

  • Você concluiu todas as etapas na seção Antes de começar.
  • As propriedades de configuração da conexão estão corretas.
  • Você tem as permissões apropriadas para criar uma conexão.

Se as propriedades da conexão estiverem corretas e as permissões apropriadas forem concedidas, consulte as seguintes soluções para problemas comuns.

Problema: o BigQuery e o Cloud SQL não compartilham o mesmo local.
Resolução: a consulta federada do Cloud SQL é aceita apenas em regiões compatíveis com o Cloud SQL e o BigQuery. O conjunto de dados do BigQuery e a instância do Cloud SQL precisam estar na mesma região ou em um local multirregional, como US e EU, na mesma área geográfica compatível com a região do Cloud SQL. Consulte Regiões compatíveis para mais informações sobre regiões e compatibilidade de regiões.
Problema: a conexão recém-criada não está aparecendo no projeto.
Resolução: pode ocorrer um pequeno atraso até que novas conexões sejam exibidas na IU da Web do BigQuery. Alterne para um projeto diferente, aguarde até 30 segundos e retorne. Sua nova conexão será exibida.
Problema: o desempenho está mais lento que o esperado.
Resolução: o desempenho das consultas federadas não é tão bom quanto consultar dados armazenados no BigQuery, porque a consulta federada precisa consultar externamente o Cloud SQL, retornar os dados a uma tabela temporária do BigQuery, mapear os dados para o tipo de dados do BigQuery e executar a consulta no BigQuery. Embora o desempenho da consulta não seja tão alto, os dados não precisam ser copiados, movidos ou armazenados novamente.
Problema: como formatar o nome da conexão.
Resolução: o nome da conexão precisa incluir projeto, local e código da conexão. O código de conexão precisa estar em conformidade com este padrão: project_id.location_id.connection_id, por exemplo, federation-test.us.my_new_connection

Como gerenciar recursos de conexão

Para informações sobre como visualizar, listar, compartilhar, atualizar e excluir os recursos de conexão, consulte Como trabalhar com conexões.

Como gerar registros de auditoria

Para registros de auditoria de recursos de conexão, consulte Visão geral dos registros de auditoria do BigQuery.

Regiões compatíveis

As consultas federadas do Cloud SQL são aceitas apenas em regiões compatíveis com o Cloud SQL e o BigQuery

Tipos de locais ou região

Há dois tipos de locais:

  • Uma região é um lugar geográfico específico, como Londres.

  • Um local multirregional é uma área geográfica grande, como Estados Unidos, que contém dois ou mais lugares geográficos.

É possível criar uma conexão e executar uma consulta federada nas regiões de acordo com as regras a seguir.

Multirregiões

Uma multirregião do BigQuery pode consultar qualquer região do Cloud SQL na mesma área geográfica (EUA, UE), por exemplo:

  • A multirregião EUA do BigQuery pode consultar qualquer região única do Cloud SQL na área geográfica dos EUA, como us-central1, us-east4, us-west2 e assim por diante.
  • A multirregião UE do BigQuery pode consultar qualquer região única do Cloud SQL em estados-membros da União Europeia, como europe-north1, europe-west3 e assim por diante.

O local de processamento da consulta é o local multirregional, US ou EU.

Para mais informações sobre regiões e multirregiões, consulte a página Locais do conjunto de dados.

Regiões únicas

Uma região única do BigQuery só pode consultar o Cloud SQL na mesma região. Exemplo:

  • A região única us-east4 do BigQuery só pode consultar o Cloud SQL em us-east4.

Neste exemplo, o local de processamento da consulta é a região única do BigQuery.

Consulte a tabela a seguir para um mapeamento detalhado das regiões compatíveis com cada produto.

Locais regionais

Descrição da região Região do Cloud SQL Região compatível com o BigQuery Multirregião compatível com o BigQuery
América
Iowa us-central Incompatível: essa região da instância do Cloud SQL é V1.
As consultas federadas são compatíveis apenas com instâncias V2 do Cloud SQL.
Iowa us-central1 Incompatível US
Oregon us-west1 Incompatível US
Las Vegas us-west4 us-west4 US
Los Angeles us-west2 us-west2 US
Montreal northamerica-northeast1 northamerica-northeast1 US
Norte da Virgínia us-east4 us-east4 US
Salt Lake City us-west3 us-west3 US
São Paulo southamerica-east1 southamerica-east1
Carolina do Sul us-east1 us-east1 US
Europa
Finlândia europe-north1 europe-north1 EU
Bélgica europe-west1 Incompatível EU
Frankfurt europe-west3 europe-west3 EU
Londres europe-west2 europe-west2 EU
Países Baixos europe-west4 Incompatível EU
Zurique europe-west6 europe-west6 EU
Ásia-Pacífico
Hong Kong asia-east2 asia-east2
Jacarta asia-southeast2 asia-southeast2
Mumbai asia-south1 asia-south1
Osaka asia-northeast2 asia-northeast2
Seul asia-northeast3 asia-northeast3
Singapura asia-southeast1 asia-southeast1
Sydney australia-southeast1 australia-southeast1
Taiwan asia-east1 asia-east1
Tóquio asia-northeast1 asia-northeast1

Locais multirregionais

Locais multirregionais não estão disponíveis para instâncias do Cloud SQL. As multirregiões do Cloud SQL não podem ser usadas para consultas federadas.

Os dados localizados na multirregião EU não são armazenados nos data centers europe-west2 (Londres) ou europe-west6 (Zurique).

Limitações

Instâncias limitadas do Cloud SQL

A consulta federada só é compatível com a instância do Cloud SQL V2 com IP público (em vez de IP privado).

Desempenho

A consulta federada provavelmente não será tão rápida quanto consultar apenas o armazenamento do BigQuery. O BigQuery precisa esperar que o banco de dados de origem execute a consulta externa e mova temporariamente os dados do Cloud SQL para o BigQuery. Bases de dados de origem como MySQL ou PostgreSQL geralmente não são otimizadas para consultas analíticas complexas.

As consultas externas são somente leitura

A consulta externa que será executada no banco de dados de origem precisa ser somente leitura. Portanto, as instruções DML ou DDL não são compatíveis.

Tipos de dados não compatíveis

Se a consulta externa contiver um tipo de dados não aceito no BigQuery, a consulta falhará imediatamente. É possível converter o tipo de dados não aceito em um tipo diferente de dados MySQL ou PostgreSQL que seja compatível.

  • Tipo de dados MySQL incompatível

    • Mensagem de erro: Invalid table-valued function external_query Found unsupported MySQL type in BigQuery at [1:15]
    • Tipo incompatível: GEOMETRY, BIT
    • Resolução: converta o tipo de dados não compatível em STRING.
    • Exemplo: SELECT ST_AsText(ST_GeomFromText('POINT(1 1)')); Este comando converte o tipo de dados incompatível GEOMETRY em STRING.
  • Tipo de dados PostgreSQL não compatível

    • Mensagem de erro: Invalid table-valued function external_query Postgres type (OID = 790) is not supported now at [1:15]
    • Tipo incompatível: money, time with time zone, inet, path, pg_lsn, point, polygon, tsquery, tsvector, txid_snapshot, uuid, box, cidr, circle, interval, jsonb, line, lseg, macaddr, macaddr8
    • Resolução: converta o tipo de dados não compatível em STRING.
    • Exemplo: SELECT CAST('12.34'::float8::numeric::money AS varchar(30)); Este comando converte o tipo de dados incompatível money em STRING.

Cotas e limites

  • Consulta federada entre regiões: se o local de processamento de consultas do BigQuery e o local da instância do Cloud SQL forem diferentes, essa será uma consulta entre regiões. É possível executar até 1 TB em consultas entre regiões por projeto por dia.
    • Veja um exemplo de consulta entre regiões:
      • A instância do Cloud SQL está em us-west1, enquanto a conexão do BigQuery é baseada na multirregião US. O local de processamento da consulta do BigQuery é US.
  • Cota: os usuários precisam controlar a cota de consultas no Cloud SQL. Não há configuração de cota extra para consultas federadas. Para conseguir isolamento da carga de trabalho, recomenda-se consultar apenas uma réplica de leitura do banco de dados.
  • Número máximo de bytes faturados permitido: no momento, este campo não é compatível com consultas federadas. O cálculo dos bytes faturados antes de executar realmente as consultas federadas não é possível no momento.
  • As cotas e limitações do Cloud SQL MySQL e PostgreSQL se aplicam.
  • Número de conexões: uma consulta federada pode ter no máximo 10 conexões exclusivas.

Preços

Na consulta do Cloud SQL pelo BigQuery, a cobrança é aplicada pelo número de bytes lidos. Para mais informações, consulte Preços de consulta.

Referência

Visualizar um esquema de tabela do Cloud SQL

É possível usar a função EXTERNAL_QUERY() para consultar tabelas information_schema, acessar metadados de bancos de dados, como listar todas as tabelas no banco de dados ou mostrar esquemas de tabelas. As consultas information_schema de exemplo a seguir funcionam tanto no MySQL quanto no PostgreSQL. Saiba mais em Tabelas information_schema do MySQL e Tabelas information_schema do PostgreSQL.

-- List all tables in a database.
SELECT * FROM EXTERNAL_QUERY("connection_id",
"select * from information_schema.tables;");
-- List all columns in a table.
SELECT * FROM EXTERNAL_QUERY("connection_id",
"select * from information_schema.columns where table_name='x';");

Detalhe do recurso de conexão

Nome da propriedade Valor Descrição
name string Nome do recurso de conexão no formato: project_id.location_id.connection_id
location string O local da conexão, que é o mesmo do local da instância do Cloud SQL com as seguintes exceções: a região us-central1 do Cloud SQL é mapeada para o BigQuery nos EUA e a europe-west1 do Cloud SQL é mapeada para o BigQuery na UE.
friendlyName string Um nome de exibição fácil de usar para a conexão
description string Descrição da conexão
cloudSql.type string Pode ser "POSTGRES" ou "MYSQL"
cloudSql.instanceId string O nome da instância do Cloud SQL, geralmente no formato de:

Project-id:location-id:instance-id

É possível encontrar o ID da instância na página de detalhes Instância do Cloud SQL.
cloudSql.database string O banco de dados do Cloud SQL ao qual você quer se conectar.

Detalhe do recurso de credencial de conexão

Nome da propriedade Valor Descrição
username string Nome de usuário do banco de dados
password string Senha do banco de dados

Mapeamentos de tipo de dados

Quando você executa uma consulta federada do Cloud SQL, os dados do Cloud SQL (nos tipos de dados MySQL ou PostgreSQL) são convertidos em tipos SQL padrão do BigQuery. Os mapeamentos de tipos de dados a seguir são do MySQL para o BigQuery e do PostgreSQL para o BigQuery.

O que saber sobre mapeamentos:

  • A maioria dos tipos de dados MySQL pode ser correspondida ao mesmo tipo de dados do BigQuery, com algumas exceções, como decimal, timestamp e time.
  • O PostgreSQL aceita muitos tipos de dados não padrão que não são aceitos no BigQuery. Por exemplo, money, path, uuid, boxer e outros.
  • O intervalo de valores numéricos do BigQuery é menor que no MySQL e no PostgreSQL.

Tratamento de erros

Se a consulta externa contiver um tipo de dados não aceito no BigQuery, a consulta falhará imediatamente. É possível converter o tipo de dados não aceito em um tipo de dados MySQL/PostgreSQL diferente que seja compatível. Para mais informações sobre como fazer a conversão, consulte Tipos de dados não compatíveis em Solução de problemas.

Mapeamento de tipo MySQL para BigQuery

Tipo do MySQL Descrição do MySQL Tipo do BigQuery Diferença entre os tipos
Número inteiro
INT 4 bytes, 2^32 - 1 INT64
TINYINT 1 byte, 2^8 - 1 INT64
SMALLINT 2 bytes, 2^16 - 1 INT64
MEDIUMINT 3 bytes, 2^24 - 1 INT64
BIGINT 8 bytes, 2^64 - 1 INT64
UNSIGNED BIGINT 8 bytes, 2^64 - 1 NUMERIC
Numérico exato
DECIMAL (M,D) Um decimal representado por (M,D), em que M é o número total de dígitos e D é o número de decimais.
M <= 65
NUMERIC

O intervalo NUMERIC do BigQuery é menor, compatível com apenas 38 dígitos decimais de precisão e 9 dígitos decimais de escala.
Numérico aproximado
FLOAT (M,D) 4 bytes, M <= 23 FLOAT64
DOUBLE (M,D) 8 bytes, M <= 53 FLOAT64
Data e hora
TIMESTAMP '1970-01-01 00:00:01'UTC a '2038-01-19 03:14:07' UTC. TIMESTAMP O TIMESTAMP do MySQL é recuperado como fuso horário UTC, não importa de onde você chame o BigQuery.
DATETIME De '1000-01-01 00:00:00' a '9999-12-31 23:59:59'. DATETIME
DATE '1000-01-01' a '9999-12-31'. DATE
TIME Hora no formato "HH:MM:SS"
"-838:59:59" a "838:59:59".
TIME
O intervalo TIME do BigQuery é menor, de 00:00:00 a 23:59:59
ANO INT64
Caractere e strings
ENUM Objeto string com um valor escolhido em uma lista de valores permitidos. STRING
CHAR (M) Uma string de comprimento fixo entre 1 e 255 caracteres. STRING
VARCHAR (M) Uma string de comprimento variável entre 1 e 255 caracteres. STRING
TEXT Um campo com comprimento máximo de 65.535 caracteres. STRING
TINYTEXT Uma coluna TEXT com comprimento máximo de 255 caracteres. STRING
MEDIUMTEXT Uma coluna TEXT com comprimento máximo de 16.777.215 caracteres. STRING
LONGTEXT Uma coluna TEXT com comprimento máximo de 4.294.967.295 caracteres. STRING
Binário
BLOB Um objeto binário grande com comprimento máximo de 65.535 caracteres. BYTE
MEDIUM_BLOB Um BLOB com comprimento máximo de 16.777.215 caracteres. BYTE
LONG_BLOB Um BLOB com comprimento máximo de 4.294.967.295 caracteres. BYTE
TINY_BLOB Um BLOB com comprimento máximo de 255 caracteres. BYTE
Outro
SET Ao declarar a coluna "SET", defina alguns valores. Em seguida, use INSERT para adicionar qualquer conjunto de valores predefinidos a essa coluna. STRING
GEOMETRY GEOMETRY INCOMPATÍVEL
BIT INT64 INCOMPATÍVEL

Mapeamento de tipo PostgreSQL a BigQuery

Nome Descrição Tipo do BigQuery Diferença entre os tipos
Número inteiro
smallint 2 bytes, de -32.768 a +32.767. INT64
smallserial Consulte smallint. INT64
integer 4 bytes, de -2.147.483.648 a +2.147.483.647. INT64
serial Consulte integer. INT64
bigint 8 bytes, de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. INT64
bigserial Consulte bigint. INT64
Numérico exato
numeric [ (p, s) ] Precisão de até 1.000. NUMERIC O intervalo NUMERIC do BigQuery é menor, compatível com apenas 38 dígitos decimais de precisão e 9 dígitos decimais de escala.
Decimal [ (p, s) ] Consulte numeric. NUMERIC Consulte numeric.
money 8 bytes, escala de 2 dígitos, de -92.233.720.368.547.758,08 a +92.233.720.368.547.758,07. INCOMPATÍVEL
Numérico aproximado.
real 4 bytes, número de ponto flutuante de precisão única. FLOAT64
double precision 8 bytes, número de ponto flutuante de precisão dupla. FLOAT64
Data e hora
date Data do calendário (ano, mês, dia). DATE
time [ (p) ] [ without time zone ] Hora do dia (sem fuso horário). TIME
time [ (p) ] with time zone Hora do dia, incluindo fuso horário. INCOMPATÍVEL
timestamp [ (p) ] [ without time zone ] Data e hora (sem fuso horário) DATETIME
timestamp [ (p) ] with time zone Data e hora, incluindo fuso horário TIMESTAMP O TIMESTAMP do PostgreSQL é recuperado como fuso horário UTC, não importa de onde você chame o BigQuery.
interval Uma duração de tempo. INCOMPATÍVEL
Caractere e strings
character [ (n) ] String de caracteres com comprimento fixo. STRING
character varying [ (n) ] String de caracteres com comprimento variável. STRING
text String de caracteres com comprimento variável. STRING
Binário
bytea Dados binários ("matriz de bytes"). BYTES
bit [ (n) ] String de bits com comprimento fixo. BYTES
bit varying [ (n) ] String de bits com comprimento variável. BYTES
Outro
boolean Booleano lógico (verdadeiro/falso). BOOL
inet Endereço de host IPv4 ou IPv6. INCOMPATÍVEL
path Caminho geométrico em um plano. INCOMPATÍVEL
pg_lsn Número de sequência de registro do PostgreSQL. INCOMPATÍVEL
point Ponto geométrico em um plano. INCOMPATÍVEL
polygon Caminho geométrico fechado em um plano. INCOMPATÍVEL
tsquery Consulta de pesquisa de texto. INCOMPATÍVEL
tsvector Documento de pesquisa de texto. INCOMPATÍVEL
txid_snapshot Snapshot do ID da transação no nível do usuário. INCOMPATÍVEL
uuid Identificador universalmente exclusivo. INCOMPATÍVEL
xml Dados XML. STRING
box Caixa retangular em um plano. INCOMPATÍVEL
cidr Endereço de rede IPv4 ou IPv6. INCOMPATÍVEL
circle Círculo em um plano. INCOMPATÍVEL
interval [ fields ] [ (p) ] Período. INCOMPATÍVEL
json Dados JSON textuais. STRING
jsonb Dados JSON binários, decompostos. INCOMPATÍVEL
line Linha infinita em um plano. INCOMPATÍVEL
lseg Segmento de linha em um plano. INCOMPATÍVEL
macaddr Endereço MAC (controle de acesso à mídia). INCOMPATÍVEL
macaddr8 Endereço MAC (controle de acesso à mídia) (formato EUI-64). INCOMPATÍVEL