CREATE TABLE em Databricks: Um guia completo para criar e gerenciar tabelas
Descubra como criar tabelas no Databricks usando o comando CREATE TABLE. Aprenda métodos diferentes para cenários diferentes, incluindo como criar uma tabela a partir de dados existentes e como CREATE TABLE como SELECT.
As tabelas Databricks são um componente central da plataforma Databricks Lakehouse, projetada para lidar com armazenamento e processamento de dados em grande escala. Essas tabelas permitem a colaboração entre as equipes, unificando dados estruturados e não estruturados e, ao mesmo tempo, oferecendo suporte a cargas de trabalho analíticas.
Neste artigo, vou guiar você pelas diferentes técnicas de criação de tabelas no Databricks usando o comando CREATE TABLE com diversas variações de sintaxe para acomodar diferentes casos de uso. Também darei dicas sobre as práticas recomendadas ao criar e gerenciar tabelas no Databricks para que você tenha eficiência e confiabilidade.
Para começar, recomendo que você dê uma olhada no site da DataCamp How to Learn Databricks: A Beginner's Guide to the Unified Data Platform blog post para ajudar você a entender os principais recursos e aplicativos do Databricks e fornecer um caminho estruturado para iniciar seu aprendizado. Também recomendo que você faça nosso curso de Introdução ao Databricks. Mesmo que tenha experiência em SQL, você verá que as coisas podem parecer diferentes na plataforma Databricks Lakehouse. Os exercícios interativos do nosso curso guiarão você pelas consultas SQL, bem como pelos recursos da plataforma e pelas conexões de sistemas externos.
Introdução às tabelas do Databricks
Para começar, devemos dizer que as tabelas do Databricks são conjuntos de dados estruturados que facilitam a organização e o acesso aos dados no ambiente do Databricks Lakehouse. Há dois tipos:
Tabelas gerenciadas: Essas tabelas são totalmente controladas pela Databricks, que gerencia o armazenamento e os metadados. Quando uma tabela gerenciada é criada, o Databricks cuida dos arquivos de dados subjacentes e, se a tabela for excluída, os dados correspondentes também serão removidos.
Tabelas externas: As tabelas externas fazem referência a dados que residem fora do Databricks, normalmente em sistemas de armazenamento em nuvem como o AWS S3 ou o Azure Blob Storage. Embora o Databricks gerencie os metadados dessas tabelas, os dados reais permanecem intactos, mesmo que a tabela seja descartada. Elas também são conhecidas como tabelas não gerenciadas.
As tabelas no Databricks geralmente têm como padrão o Delta Lake devido a seus recursos avançados e otimizações. O Delta Lake oferece transações ACID,escalabilidade,aprimoramentos de desempenho, como otimizações como cache e indexação, eprocessamento unificado de dados em lote e streaming.
Como observação, as primeiras versões do Azure Databricks usavam as tabelas herdadas do "formato Hive", que foram substituídas pelas modernas tabelas Delta. No geral, as tabelas Delta modernas superam as tabelas Hive legadas em termos de confiabilidade e desempenho, tornando-as a opção padrão para os fluxos de trabalho do Databricks.
Aqui está um resumo que acho que pode ajudar você a ver a diferença entre os dois:
Recurso
Tabela de formato da colmeia
Mesa Delta
Formato de dados
Apache Hive (CSV, Parquet, ORC, etc.)
Delta Lake (baseado em Parquet com metadados)
Transações
Sem suporte a ACID (consistência eventual)
Transações ACID completas
Gerenciamento de esquemas
Aplicação limitada
Aplicação rigorosa do esquema
Otimização do desempenho
Necessário ajuste manual
Otimizações incorporadas (armazenamento em cache, compactação)
Viagem no tempo
Não há suporte integrado para consultas históricas
Suporta viagens no tempo para consultar versões anteriores de dados
Concorrência
Propenso a conflitos durante atualizações ou exclusões
Lida com operações simultâneas de forma eficiente
Variações da sintaxe de CREATE TABLE
O comando CREATE TABLE no Databricks oferece suporte a diversas variações para acomodar diferentes casos. Cada variação tem sua finalidade, com opções específicas como localização de arquivos, clonagem e gerenciamento de metadados em . Se você precisar atualizar seus conhecimentos sobre o Databricks SQL, recomendo a leitura do nosso tutorial do Databricks SQL para aprender, entre outras coisas, como usar um Notebook em um depósito do Databricks SQL.
Abaixo estão os principais estilos de sintaxe com exemplos e explicações.
CRIAR TABELA [USING]
Essa sintaxe cria uma nova tabela com um esquema e formato de dados especificados. A consulta a seguir cria uma tabela chamada sales_data lendo dados de arquivos Parquet armazenados em um local específico.
-- Create a table from files in a specific formatCREATETABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales';Tecnologia
CREATE TABLE (formato Hive)
Essa sintaxe herdada é semelhante ao comando SQL CREATE TABLE padrão, usado ao definir uma tabela com metadados gerenciados pelo Databricks sem a necessidade de fazer referência a arquivos externos. A consulta abaixo cria uma tabela no estilo Hive chamada hive_table com um esquema predefinido e propriedades de metadados adicionais.
-- Hive-style table creation with schema definitionCREATETABLE hive_table (
id INT,
name STRING
)COMMENT'Hive format example'
TBLPROPERTIES ('created_by'='databricks');Tecnologia
Na consulta acima, a cláusula COMMENT adiciona metadados descritivos, enquanto TBLPROPERTIES armazena propriedades personalizadas sobre a tabela.
CRIAR TABELA COMO
Esse comando cria uma nova tabela usando o esquema e as propriedades de uma tabela existente. Você deve usar essa sintaxe quando quiser replicar a estrutura de uma tabela existente sem copiar seus dados. Isso é útil para fins de teste ou desenvolvimento.
-- Create a table with the same schema as another tableCREATETABLE new_table LIKE existing_table;Tecnologia
CRIAR TABELA CLONE
Essa sintaxe permite que você crie uma nova tabela clonando uma tabela Delta Lake existente, seja como um clone profundo ou superficial. Portanto, você deve usar a sintaxe CREATE TABLE CLONE quando precisar de uma cópia independente dos dados e metadados de uma tabela (clone profundo) ou apenas dos metadados enquanto faz referência aos dados originais (clone superficial). Pense nisso para controle de versão ou criação de backups.
O exemplo a seguir mostra as consultas para criar tabelas de clone profundo e clone raso no Databricks.
-- Deep clone by defaultCREATETABLE cloned_table CLONE original_table;-- Shallow cloneCREATETABLE shallow_clone_table SHALLOW CLONE original_table;Tecnologia
CRIAR OU SUBSTITUIR TABELA
Esse comando único e combinado substitui uma tabela existente por uma nova, mantendo o mesmo nome de tabela, como uma única operação. Você deve usar essa sintaxe quando quiser substituir completamente uma tabela existente, mantendo o nome dela. Isso é particularmente útil para atualizar a estrutura ou os dados de uma tabela sem precisar excluí-la primeiro.
A consulta de exemplo abaixo cria ou substitui a tabela sales por um novo esquema.
-- Create or replace a sales table with a new schemaCREATEORREPLACETABLE sales (
sale_id INT,
amount FLOAT)USING DELTA
LOCATION '/mnt/delta/sales';Tecnologia
Há outras cláusulas relevantes que você pode usar com a sintaxe CREATE TABLE no Databricks para gerenciar suas tabelas de acordo com requisitos específicos. A seguir, você encontrará um resumo do uso de cada uma dessas cláusulas. Eu já usei apenas alguns desses exemplos, mas não todos.
IF NOT EXISTS: Evita erros ao ignorar a criação de tabelas se elas já existirem.
USING: Especifica o formato do arquivo (por exemplo, Delta, Parquet, CSV).
EXTERNAL: Declara uma tabela em que os dados residem fora do armazenamento gerenciado da Databricks.
PARTITIONED BY: Define partições para otimizar grandes conjuntos de dados.
LOCATION: Aponta para o diretório que contém os dados da tabela.
TBLPROPERTIES: Adiciona metadados para configurações e otimizações de tabelas personalizadas.
Demonstrações passo a passo
Nesta seção, demonstrarei diferentes maneiras de criar e gerenciar tabelas no Databricks, com exemplos concisos e explicações das cláusulas-chave. Recomendo que você consulte nosso tutorial Databricks: 7 Must-know Concepts For Any Data Specialist tutorial para você aprender a executar comandos SQL na plataforma Databricks.
Como criar uma tabela vazia
Para criar uma tabela Delta vazia, defina o esquema da tabela com nomes de colunas e tipos de dados. Use a cláusula USING DELTA para definir o formato da tabela e COMMENT para adicionar metadados descritivos.
Essa consulta cria uma tabela Delta vazia chamada employees com um esquema predefinido, incluindo colunas para id, name, department e hire_date.
-- Create an empty Delta table with a defined schemaCREATETABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE)USING DELTA
COMMENT'Table to store employee information';Tecnologia
Como criar uma tabela a partir de dados existentes
Para criar uma tabela a partir de dados existentes, vincule a tabela a arquivos de dados externos em formatos como CSV, Parquet ou JSON. Você pode usar a cláusula LOCATION para vincular a tabela ao caminho do arquivo e a cláusula USING para especificar o formato dos dados.
Por exemplo, a consulta a seguir cria uma tabela chamada sales_data fazendo referência aos arquivos Parquet armazenados em /mnt/data/sales_data/.
-- Create a table from Parquet files in a specified locationCREATETABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales_data/';Tecnologia
Como criar uma tabela como select (CTAS)
Você também pode criar uma tabela como select executando uma consulta e armazenando o resultado. Para esse cenário, a cláusula AS SELECT preenche a tabela com o resultado da consulta.
Por exemplo, a consulta abaixo cria uma nova tabela chamada high_value_sales, selecionando e transformando os dados da tabela sales_data existente. Ele filtra as linhas em que total_amount é maior que 1000, mantendo apenas as colunas sale_id, customer_id e total_amount.
-- Create a table by selecting and transforming data from another tableCREATETABLE high_value_sales ASSELECT
sale_id,
customer_id,
total_amount
FROM sales_data
WHERE total_amount >1000;Tecnologia
Como criar uma tabela externa
A criação de uma tabela externa envolve a referência a dados armazenados fora do armazenamento gerenciado da Databricks. Você deve usar a cláusula LOCATION para especificar o local dos dados externos.
A consulta abaixo cria uma tabela Delta externa chamada external_table fazendo referência aos dados armazenados em /mnt/external_storage/external_table/.
-- Create an external table referencing data outside Databricks storageCREATETABLE external_table
USING DELTA
LOCATION '/mnt/external_storage/external_table/';Tecnologia
Como criar uma tabela LIKE
Para criar uma tabela LIKE, duplique o esquema de uma tabela existente sem copiar seus dados. No exemplo abaixo, a consulta cria uma nova tabela chamada sales_backup com o mesmo esquema de uma tabela sales existente.
-- Create a new sales table with the same schema as an existing tableCREATETABLE sales_backup LIKE sales;Tecnologia
Como criar uma TABLE CLONE
Você pode criar um clone de tabela usando a cláusula CLONE para criar uma cópia superficial ou profunda de uma tabela Delta para backups ou testes.
No exemplo a seguir, a consulta cria uma nova tabela, sales_shallow_clone, copiando apenas os metadados (esquema e propriedades da tabela).
-- Shallow clone: Copies only metadata (references original data)CREATETABLE sales_shallow_clone CLONE sales_data;Tecnologia
O exemplo abaixo cria uma nova tabela, sales_deep_clone, mas copia os metadados e os dados reais.
-- Deep clone: Copies both metadata and actual dataCREATETABLE sales_deep_clone CLONE sales_data DEEP;Tecnologia
Como criar uma tabela temporária (tabela temp)
Use a cláusula TEMPORARY ao criar tabelas temporárias para garantir que a tabela seja específica da sessão.
A consulta abaixo cria uma tabela temporária chamada temp_table que existe somente para a sessão atual. Ele seleciona id, name e sales_amount de sales_data, filtrando as linhas em que region = 'US'.
-- Create a temporary table that exists only in the sessionCREATETEMPORARYTABLE temp_table ASSELECT
id,
name,
sales_amount
FROM sales_data
WHERE region ='US';Tecnologia
Como substituir uma mesa
Você pode usar a cláusula CREATE OR REPLACE para substituir a definição e o conteúdo da tabela. A consulta abaixo substitui a tabela existente updated_table por um novo esquema e dados. Ele define a tabela com três colunas (id, name, total_sales).
-- Replace an existing table with a new schema or dataCREATEORREPLACETABLE updated_table (
id BIGINT,
name STRING,
total_sales DOUBLE)USING DELTA
LOCATION '/mnt/delta/updated_table/';Tecnologia
Tópicos avançados
Nesta seção, explorarei os recursos avançados da tabela Databricks que aprimoram a funcionalidade, o desempenho e a segurança.
Colunas geradas e colunas de identidade
O Databricks oferece suporte a colunas de identidade, que geram automaticamente valores exclusivos para cada nova linha. Esse recurso é útil para criar chaves substitutas no armazenamento de dados.
A consulta abaixo cria uma tabela employees com três colunas: id, name, e department. A coluna id é uma coluna de identidade que é incrementada automaticamente a cada nova linha.
-- Identity column: auto-incremented valueCREATETABLE employees (
id BIGINT GENERATED ALWAYS ASIDENTITY,-- Auto-incremented column
name STRING,
department STRING
);Tecnologia
Essa outra consulta cria uma tabela sales com três colunas: sale_id, sale_date, e sale_year. A coluna sale_year é gerada e calculada automaticamente com base na coluna sale_date usando a função YEAR(sale_date).
-- Generated column: derived from other columnsCREATETABLE sales (
sale_id BIGINT,
sale_date DATE,
sale_year INT GENERATED ALWAYS AS(YEAR(sale_date))-- Derived column);Tecnologia
Particionamento e agrupamento
O particionamento divide os dados em pedaços menores, melhorando o desempenho da consulta, enquanto o clustering organiza os dados dentro das partições para leituras mais rápidas.
Por exemplo, a consulta abaixo cria uma tabela particionada em que os dados são divididos em partições com base na coluna region, melhorando o desempenho da consulta ao filtrar por região.
-- Partitioned tableCREATETABLE partitioned_table (
id BIGINT,
region STRING,
sales_amount DOUBLE)USING DELTA
PARTITIONED BY(region);-- Querying by region will be fasterTecnologia
A consulta abaixo otimiza a tabela particionada ao agrupar os dados em cada partição com base na coluna sales_amount. Ele torna as consultas em sales_amount mais rápidas, melhorando o layout de dados para leituras eficientes. A cláusula ZORDER BY funciona dentro das partições para melhorar o desempenho da leitura, agrupando os dados dentro das partições e não entre elas.
-- Clustered tableOPTIMIZE partitioned_table
ZORDER BY(sales_amount);-- Clusters data within partitions for efficient readsTecnologia
Mascaramento de coluna e filtros de linha
O mascaramento de colunas e os filtros de linha restringem a visibilidade dos dados com base nas funções ou condições do usuário, protegendo informações confidenciais.
Por exemplo, a consulta abaixo cria uma exibição mascarada chamada masked_table com base na tabela employees. A coluna salary é redigida (substituída por REDACTED) para todos os usuários, exceto aqueles com a função manager. A declaração CASE garante que somente os gerentes possam ver o salário real, enquanto os outros vejam os dados mascarados
Da mesma forma, a consulta abaixo usa filtros de linha para criar ou substituir uma exibição chamada filtered_table com base na tabela sales. A exibição filtra as linhas para incluir somente os dados em region = 'US', restringindo o acesso somente aos dados de vendas dos EUA.
-- Row filters: Fine-grained access controlCREATEORREPLACEVIEW filtered_table ASSELECT*FROM sales
WHERE region ='US';-- Limit data visibility to a specific regionTecnologia
Avaliação do esquema
O Databricks oferece suporte à evolução do esquema por meio de CREATE OR REPLACE TABLE e alterações de tabelas. Você deve usar a instrução CREATE OR REPLACE TABLE para substituir o esquema e os dados e a instrução ALTER TABLE para modificar o esquema de forma incremental sem afetar os dados.
A consulta abaixo substitui a tabela employees existente por um novo esquema, adicionando uma nova coluna hire_date e mantendo os dados armazenados no formato Delta.
-- Schema evolution with CREATE OR REPLACE TABLECREATEORREPLACETABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE-- New column added)USING DELTA;Tecnologia
Essa outra consulta modifica a tabela employees adicionando uma nova coluna salary ao esquema existente.
-- Altering a table schemaALTERTABLE employees ADDCOLUMNS(salary DOUBLE);Tecnologia
Ajuste de desempenho
Para otimizar o desempenho de tabelas de grande escala, você pode utilizar várias propriedades e técnicas de tabela, como a otimização automática e a ordenação Z.
No exemplo a seguir, a consulta ativa a otimização automática no site delta_table, definindo propriedades para compactar automaticamente arquivos pequenos e mesclar arquivos durante as gravações, melhorando a eficiência do armazenamento.
-- Enable automatic optimizationsALTERTABLE delta_table
SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite'='true',-- Automatically compact small files'delta.autoOptimize.autoCompact'='true'-- Automatically merge files);Tecnologia
Da mesma forma, a consulta abaixo otimiza o site delta_table agrupando os dados com base em region e sales_date para melhorar o desempenho da consulta, especialmente para filtros nessas colunas.
-- Perform clustering for faster query performanceOPTIMIZE delta_table
ZORDER BY(region, sales_date);-- Improves query efficiency for frequent filtersTecnologia
Práticas recomendadas e considerações
Aqui estão alguns aspectos a serem considerados ao criar tabelas no Databricks, para que você faça as coisas corretamente:
Convenções de nomenclatura de tabelas: Sempre use nomes claros e consistentes para melhorar a capacidade de descoberta e reduzir erros. Evite caracteres especiais ou nomes excessivamente longos para evitar problemas de compatibilidade.
Segurança e permissões: Utilize o Unity Catalog para controle de acesso centralizado em todos os ativos de dados. Use as listas de controle de acesso (ACLs) para restringir quem pode visualizar ou modificar dados. Além disso, mascare dados confidenciais com mascaramento de coluna ou filtros de linha.
Backup e recuperação: Confie no histórico de versões do Delta Lake para facilitar a recuperação e a viagem no tempo. Monitore e gerencie regularmente a retenção de versões históricas para equilibrar os custos de armazenamento e as necessidades de recuperação.
Tabelas gerenciadas vs. externas: Também é importante que você entenda o que são tabelas gerenciadas e externas. Nas tabelas gerenciadas, o Databricks lida com metadados e dados. Isso é ideal para cenários em que você deseja ter controle total sobre o gerenciamento do ciclo de vida dos dados. No entanto, em tabelas externas, os dados referenciados são armazenados fora do Databricks. Isso é útil para manter o controle sobre os dados que podem ser compartilhados em diferentes plataformas ou sistemas.
Armadilhas comuns e solução de problemas
Agora que já discutimos as práticas recomendadas para gerenciar tabelas no Databricks, vou abordar os problemas frequentes que você pode encontrar com as tabelas do Databricks, suas mensagens de erro típicas e, em seguida, as soluções.
Erros de local não vazio ao usar CREATE vs. CREATE. CRIAR OU SUBSTITUIR
Ao usar CREATE TABLE com um local especificado (cláusulaLOCATION ), se o diretório não estiver vazio, você poderá encontrar um erro como:
Error: Cannot createtable because the location isnot empty.Tecnologia
Esse erro ocorre porque o comando CREATE TABLE espera um diretório vazio para o local especificado, mas os arquivos ou metadados existentes entram em conflito com esse requisito.
Para resolver esse erro, use a instrução CREATE OR REPLACE TABLE para substituir os dados e metadados existentes. Ou então, limpe manualmente o diretório antes de usar o comando CREATE TABLE.
CREATEORREPLACETABLE delta_table
USING DELTA
LOCATION '/mnt/data/delta_table';-- Overwrites table and filesTecnologia
Incompatibilidade de esquema ou problemas com determinados tipos de dados
A inserção ou consulta de dados resulta em erros de incompatibilidade de esquema, como
Error: Schema mismatch: Expected columntype STRING, but found INT.Tecnologia
O erro pode ser causado por uma incompatibilidade entre o esquema da tabela e os tipos de dados de entrada. Além disso, conversões de tipos de dados não suportados ou ambíguos (por exemplo, tipos complexos aninhados) podem causar incompatibilidade de esquema. Para solucionar esse erro, imponha a correspondência de esquema para verificar o esquema durante a criação da tabela ou use a imposição de esquema nas tabelas Delta.
-- Enforce schema matching during table creationCREATETABLE schema_table (
id INT,
name STRING
)USING DELTA
TBLPROPERTIES ('delta.schema.enforce'='true');-- Enforces strict schemaTecnologia
Além disso, você deve permitir a evolução do esquema ao adicionar novas colunas ou alterar os tipos de dados.
As colunas de identidade têm estado e podem entrar em conflito quando várias transações tentam inserir dados ao mesmo tempo. Para solucionar esse erro, use chaves substitutas para substituir as colunas de identidade por chaves substitutas determinísticas geradas usando funções como uuid() ou monotonically_increasing_id().
CREATETABLE better_table ASSELECT
monotonically_increasing_id()AS id,-- Replaces identity column
name, department
FROM source_data;Tecnologia
Você também pode usar o MERGE do Delta Lake para fluxos de trabalho complexos de inserção e atualização sem depender de colunas de identidade.
MERGEINTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHENMATCHEDTHENUPDATESET*WHENNOTMATCHEDTHENINSERT*;Tecnologia
Conclusão
No Databricks, o comando CREATE TABLE é uma ferramenta versátil para definir estruturas de dados, vincular-se a dados externos e obter novos conjuntos de dados por meio de consultas. É importante que você entenda as diferentes sintaxes para criar e gerenciar tabelas no Databricks de acordo com suas necessidades específicas. Como você viu, há alguns métodos diferentes de criação de tabelas para escolher.
Se você quiser explorar os conceitos básicos do Databricks, recomendo fortemente que faça o curso Introduction to Databricks da DataCamp para aprender sobre o Databricks como uma solução de armazenamento de dados para Business Intelligence (BI). Também recomendo que você consulte nossa postagem no blog Databricks Certifications In 2025 para saber como obter certificações da Databricks, explorar os benefícios da carreira e saber como escolher a certificação certa para suas metas profissionais.
Eu crio artigos que simplificam a ciência e a análise de dados, tornando-as fáceis de entender e acessíveis.
Perguntas frequentes sobre o CREATE TABLE da Databricks
Qual é a finalidade do comando CREATE TABLE no Databricks?⌄
O comando CREATE TABLE é usado para definir uma nova tabela no Databricks, permitindo que os usuários especifiquem o esquema da tabela, o formato dos dados e o local de armazenamento.
Qual é a diferença entre tabelas gerenciadas e externas?⌄
As tabelas gerenciadas armazenam metadados e dados no Databricks, enquanto as tabelas externas armazenam apenas metadados, deixando os dados em um local externo.
Uma tabela externa é o mesmo que uma tabela não gerenciada? ⌄
Sim, tabelas externas e tabelas não gerenciadas referem-se ao mesmo conceito no Databricks. Eles armazenam metadados no Databricks, mas mantêm os dados reais em um local externo, permitindo que você gerencie o ciclo de vida dos dados de forma independente.
O que é um clone raso ou profundo?⌄
Um clone superficial copia somente os metadados, enquanto um clone profundo duplica os dados e os metadados.
O que são tabelas temporárias?⌄
As tabelas temporárias existem somente na sessão atual e são excluídas automaticamente após o término da sessão.
O que é a evolução do esquema no Databricks?⌄
A evolução do esquema permite que você modifique o esquema de uma tabela existente (por exemplo, adicionando ou modificando colunas) sem precisar recriar a tabela inteira, o que é particularmente vantajoso para tabelas Delta.
Descubra essa ferramenta dinâmica de business intelligence, incluindo como ela foi criada, o que ela pode fazer e como aprender a usá-la pode levar sua carreira para o próximo nível.
Descubra como conseguir as certificações Databricks, veja os benefícios para a sua carreira e aprenda a escolher a certificação certa para os seus objetivos em 2026.
Saiba mais sobre a plataforma Databricks Lakehouse e como ela pode modernizar as arquiteturas de dados e aprimorar os processos de gerenciamento de dados.
As tabelas Databricks são um componente central da plataforma Databricks Lakehouse, projetada para lidar com armazenamento e processamento de dados em grande escala. Essas tabelas permitem a colaboração entre as equipes, unificando dados estruturados e não estruturados e, ao mesmo tempo, oferecendo suporte a cargas de trabalho analíticas.
Neste artigo, vou guiar você pelas diferentes técnicas de criação de tabelas no Databricks usando o comando
CREATE TABLEcom diversas variações de sintaxe para acomodar diferentes casos de uso. Também darei dicas sobre as práticas recomendadas ao criar e gerenciar tabelas no Databricks para que você tenha eficiência e confiabilidade.Para começar, recomendo que você dê uma olhada no site da DataCamp How to Learn Databricks: A Beginner's Guide to the Unified Data Platform blog post para ajudar você a entender os principais recursos e aplicativos do Databricks e fornecer um caminho estruturado para iniciar seu aprendizado. Também recomendo que você faça nosso curso de Introdução ao Databricks. Mesmo que tenha experiência em SQL, você verá que as coisas podem parecer diferentes na plataforma Databricks Lakehouse. Os exercícios interativos do nosso curso guiarão você pelas consultas SQL, bem como pelos recursos da plataforma e pelas conexões de sistemas externos.
Introdução às tabelas do Databricks
Para começar, devemos dizer que as tabelas do Databricks são conjuntos de dados estruturados que facilitam a organização e o acesso aos dados no ambiente do Databricks Lakehouse. Há dois tipos:
As tabelas no Databricks geralmente têm como padrão o Delta Lake devido a seus recursos avançados e otimizações. O Delta Lake oferece transações ACID,escalabilidade,aprimoramentos de desempenho, como otimizações como cache e indexação, eprocessamento unificado de dados em lote e streaming.
Como observação, as primeiras versões do Azure Databricks usavam as tabelas herdadas do "formato Hive", que foram substituídas pelas modernas tabelas Delta. No geral, as tabelas Delta modernas superam as tabelas Hive legadas em termos de confiabilidade e desempenho, tornando-as a opção padrão para os fluxos de trabalho do Databricks.
Aqui está um resumo que acho que pode ajudar você a ver a diferença entre os dois:
Variações da sintaxe de CREATE TABLE
O comando
CREATE TABLEno Databricks oferece suporte a diversas variações para acomodar diferentes casos. Cada variação tem sua finalidade, com opções específicas como localização de arquivos, clonagem e gerenciamento de metadados em . Se você precisar atualizar seus conhecimentos sobre o Databricks SQL, recomendo a leitura do nosso tutorial do Databricks SQL para aprender, entre outras coisas, como usar um Notebook em um depósito do Databricks SQL.Abaixo estão os principais estilos de sintaxe com exemplos e explicações.
CRIAR TABELA [USING]
Essa sintaxe cria uma nova tabela com um esquema e formato de dados especificados. A consulta a seguir cria uma tabela chamada
sales_datalendo dados de arquivos Parquet armazenados em um local específico.CREATE TABLE (formato Hive)
Essa sintaxe herdada é semelhante ao comando SQL
CREATE TABLEpadrão, usado ao definir uma tabela com metadados gerenciados pelo Databricks sem a necessidade de fazer referência a arquivos externos. A consulta abaixo cria uma tabela no estilo Hive chamadahive_tablecom um esquema predefinido e propriedades de metadados adicionais.Na consulta acima, a cláusula
COMMENTadiciona metadados descritivos, enquantoTBLPROPERTIESarmazena propriedades personalizadas sobre a tabela.CRIAR TABELA COMO
Esse comando cria uma nova tabela usando o esquema e as propriedades de uma tabela existente. Você deve usar essa sintaxe quando quiser replicar a estrutura de uma tabela existente sem copiar seus dados. Isso é útil para fins de teste ou desenvolvimento.
CRIAR TABELA CLONE
Essa sintaxe permite que você crie uma nova tabela clonando uma tabela Delta Lake existente, seja como um clone profundo ou superficial. Portanto, você deve usar a sintaxe
CREATE TABLE CLONEquando precisar de uma cópia independente dos dados e metadados de uma tabela (clone profundo) ou apenas dos metadados enquanto faz referência aos dados originais (clone superficial). Pense nisso para controle de versão ou criação de backups.O exemplo a seguir mostra as consultas para criar tabelas de clone profundo e clone raso no Databricks.
CRIAR OU SUBSTITUIR TABELA
Esse comando único e combinado substitui uma tabela existente por uma nova, mantendo o mesmo nome de tabela, como uma única operação. Você deve usar essa sintaxe quando quiser substituir completamente uma tabela existente, mantendo o nome dela. Isso é particularmente útil para atualizar a estrutura ou os dados de uma tabela sem precisar excluí-la primeiro.
A consulta de exemplo abaixo cria ou substitui a tabela
salespor um novo esquema.Há outras cláusulas relevantes que você pode usar com a sintaxe
CREATE TABLEno Databricks para gerenciar suas tabelas de acordo com requisitos específicos. A seguir, você encontrará um resumo do uso de cada uma dessas cláusulas. Eu já usei apenas alguns desses exemplos, mas não todos.IF NOT EXISTS: Evita erros ao ignorar a criação de tabelas se elas já existirem.USING: Especifica o formato do arquivo (por exemplo, Delta, Parquet, CSV).EXTERNAL: Declara uma tabela em que os dados residem fora do armazenamento gerenciado da Databricks.PARTITIONED BY: Define partições para otimizar grandes conjuntos de dados.LOCATION: Aponta para o diretório que contém os dados da tabela.TBLPROPERTIES: Adiciona metadados para configurações e otimizações de tabelas personalizadas.Demonstrações passo a passo
Nesta seção, demonstrarei diferentes maneiras de criar e gerenciar tabelas no Databricks, com exemplos concisos e explicações das cláusulas-chave. Recomendo que você consulte nosso tutorial Databricks: 7 Must-know Concepts For Any Data Specialist tutorial para você aprender a executar comandos SQL na plataforma Databricks.
Como criar uma tabela vazia
Para criar uma tabela Delta vazia, defina o esquema da tabela com nomes de colunas e tipos de dados. Use a cláusula
USING DELTApara definir o formato da tabela eCOMMENTpara adicionar metadados descritivos.Essa consulta cria uma tabela Delta vazia chamada
employeescom um esquema predefinido, incluindo colunas paraid,name,departmentehire_date.Como criar uma tabela a partir de dados existentes
Para criar uma tabela a partir de dados existentes, vincule a tabela a arquivos de dados externos em formatos como CSV, Parquet ou JSON. Você pode usar a cláusula
LOCATIONpara vincular a tabela ao caminho do arquivo e a cláusulaUSINGpara especificar o formato dos dados.Por exemplo, a consulta a seguir cria uma tabela chamada
sales_datafazendo referência aos arquivos Parquet armazenados em/mnt/data/sales_data/.Como criar uma tabela como select (CTAS)
Você também pode criar uma tabela como select executando uma consulta e armazenando o resultado. Para esse cenário, a cláusula
AS SELECTpreenche a tabela com o resultado da consulta.Por exemplo, a consulta abaixo cria uma nova tabela chamada
high_value_sales, selecionando e transformando os dados da tabelasales_dataexistente. Ele filtra as linhas em quetotal_amounté maior que 1000, mantendo apenas as colunassale_id,customer_idetotal_amount.Como criar uma tabela externa
A criação de uma tabela externa envolve a referência a dados armazenados fora do armazenamento gerenciado da Databricks. Você deve usar a cláusula
LOCATIONpara especificar o local dos dados externos.A consulta abaixo cria uma tabela Delta externa chamada
external_tablefazendo referência aos dados armazenados em/mnt/external_storage/external_table/.Como criar uma tabela LIKE
Para criar uma tabela
LIKE, duplique o esquema de uma tabela existente sem copiar seus dados. No exemplo abaixo, a consulta cria uma nova tabela chamadasales_backupcom o mesmo esquema de uma tabelasalesexistente.Como criar uma TABLE CLONE
Você pode criar um clone de tabela usando a cláusula
CLONEpara criar uma cópia superficial ou profunda de uma tabela Delta para backups ou testes.No exemplo a seguir, a consulta cria uma nova tabela,
sales_shallow_clone,copiando apenas os metadados (esquema e propriedades da tabela).O exemplo abaixo cria uma nova tabela,
sales_deep_clone, mas copia os metadados e os dados reais.Como criar uma tabela temporária (tabela temp)
Use a cláusula
TEMPORARYao criar tabelas temporárias para garantir que a tabela seja específica da sessão.A consulta abaixo cria uma tabela temporária chamada
temp_tableque existe somente para a sessão atual. Ele selecionaid,nameesales_amountdesales_data, filtrando as linhas em queregion = 'US'.Como substituir uma mesa
Você pode usar a cláusula
CREATE OR REPLACEpara substituir a definição e o conteúdo da tabela. A consulta abaixo substitui a tabela existenteupdated_tablepor um novo esquema e dados. Ele define a tabela com três colunas (id,name,total_sales).Tópicos avançados
Nesta seção, explorarei os recursos avançados da tabela Databricks que aprimoram a funcionalidade, o desempenho e a segurança.
Colunas geradas e colunas de identidade
O Databricks oferece suporte a colunas de identidade, que geram automaticamente valores exclusivos para cada nova linha. Esse recurso é útil para criar chaves substitutas no armazenamento de dados.
A consulta abaixo cria uma tabela
employeescom três colunas:id,name, edepartment. A colunaidé uma coluna de identidade que é incrementada automaticamente a cada nova linha.Essa outra consulta cria uma tabela
salescom três colunas:sale_id,sale_date, esale_year. A colunasale_yearé gerada e calculada automaticamente com base na colunasale_dateusando a funçãoYEAR(sale_date).Particionamento e agrupamento
O particionamento divide os dados em pedaços menores, melhorando o desempenho da consulta, enquanto o clustering organiza os dados dentro das partições para leituras mais rápidas.
Por exemplo, a consulta abaixo cria uma tabela particionada em que os dados são divididos em partições com base na coluna
region, melhorando o desempenho da consulta ao filtrar por região.A consulta abaixo otimiza a tabela particionada ao agrupar os dados em cada partição com base na coluna
sales_amount. Ele torna as consultas emsales_amountmais rápidas, melhorando o layout de dados para leituras eficientes. A cláusulaZORDER BYfunciona dentro das partições para melhorar o desempenho da leitura, agrupando os dados dentro das partições e não entre elas.Mascaramento de coluna e filtros de linha
O mascaramento de colunas e os filtros de linha restringem a visibilidade dos dados com base nas funções ou condições do usuário, protegendo informações confidenciais.
Por exemplo, a consulta abaixo cria uma exibição mascarada chamada
masked_tablecom base na tabelaemployees. A colunasalaryé redigida (substituída porREDACTED) para todos os usuários, exceto aqueles com a funçãomanager. A declaraçãoCASEgarante que somente os gerentes possam ver o salário real, enquanto os outros vejam os dados mascaradosDa mesma forma, a consulta abaixo usa filtros de linha para criar ou substituir uma exibição chamada
filtered_tablecom base na tabelasales. A exibição filtra as linhas para incluir somente os dados emregion = 'US', restringindo o acesso somente aos dados de vendas dos EUA.Avaliação do esquema
O Databricks oferece suporte à evolução do esquema por meio de
CREATE OR REPLACE TABLEe alterações de tabelas. Você deve usar a instruçãoCREATE OR REPLACE TABLEpara substituir o esquema e os dados e a instruçãoALTER TABLEpara modificar o esquema de forma incremental sem afetar os dados.A consulta abaixo substitui a tabela
employeesexistente por um novo esquema, adicionando uma nova colunahire_datee mantendo os dados armazenados no formato Delta.Essa outra consulta modifica a tabela
employeesadicionando uma nova colunasalaryao esquema existente.Ajuste de desempenho
Para otimizar o desempenho de tabelas de grande escala, você pode utilizar várias propriedades e técnicas de tabela, como a otimização automática e a ordenação Z.
No exemplo a seguir, a consulta ativa a otimização automática no site
delta_table, definindo propriedades para compactar automaticamente arquivos pequenos e mesclar arquivos durante as gravações, melhorando a eficiência do armazenamento.Da mesma forma, a consulta abaixo otimiza o site
delta_tableagrupando os dados com base emregionesales_datepara melhorar o desempenho da consulta, especialmente para filtros nessas colunas.Práticas recomendadas e considerações
Aqui estão alguns aspectos a serem considerados ao criar tabelas no Databricks, para que você faça as coisas corretamente:
Armadilhas comuns e solução de problemas
Agora que já discutimos as práticas recomendadas para gerenciar tabelas no Databricks, vou abordar os problemas frequentes que você pode encontrar com as tabelas do Databricks, suas mensagens de erro típicas e, em seguida, as soluções.
Erros de local não vazio ao usar CREATE vs. CREATE. CRIAR OU SUBSTITUIR
Ao usar
CREATE TABLEcom um local especificado (cláusulaLOCATION), se o diretório não estiver vazio, você poderá encontrar um erro como:Esse erro ocorre porque o comando
CREATE TABLEespera um diretório vazio para o local especificado, mas os arquivos ou metadados existentes entram em conflito com esse requisito.Para resolver esse erro, use a instrução
CREATE OR REPLACE TABLEpara substituir os dados e metadados existentes. Ou então, limpe manualmente o diretório antes de usar o comandoCREATE TABLE.Incompatibilidade de esquema ou problemas com determinados tipos de dados
A inserção ou consulta de dados resulta em erros de incompatibilidade de esquema, como
O erro pode ser causado por uma incompatibilidade entre o esquema da tabela e os tipos de dados de entrada. Além disso, conversões de tipos de dados não suportados ou ambíguos (por exemplo, tipos complexos aninhados) podem causar incompatibilidade de esquema. Para solucionar esse erro, imponha a correspondência de esquema para verificar o esquema durante a criação da tabela ou use a imposição de esquema nas tabelas Delta.
Além disso, você deve permitir a evolução do esquema ao adicionar novas colunas ou alterar os tipos de dados.
O uso da conversão explícita de tipos ao inserir dados também deve ajudar a solucionar esse tipo de erro.
Limitações de transações simultâneas com colunas de identidade
Ao usar colunas de identidade, você pode encontrar problemas relacionados a transações simultâneas, como:
As colunas de identidade têm estado e podem entrar em conflito quando várias transações tentam inserir dados ao mesmo tempo. Para solucionar esse erro, use chaves substitutas para substituir as colunas de identidade por chaves substitutas determinísticas geradas usando funções como
uuid()oumonotonically_increasing_id().Você também pode usar o
MERGEdo Delta Lake para fluxos de trabalho complexos de inserção e atualização sem depender de colunas de identidade.Conclusão
No Databricks, o comando
CREATE TABLEé uma ferramenta versátil para definir estruturas de dados, vincular-se a dados externos e obter novos conjuntos de dados por meio de consultas. É importante que você entenda as diferentes sintaxes para criar e gerenciar tabelas no Databricks de acordo com suas necessidades específicas. Como você viu, há alguns métodos diferentes de criação de tabelas para escolher.Se você quiser explorar os conceitos básicos do Databricks, recomendo fortemente que faça o curso Introduction to Databricks da DataCamp para aprender sobre o Databricks como uma solução de armazenamento de dados para Business Intelligence (BI). Também recomendo que você consulte nossa postagem no blog Databricks Certifications In 2025 para saber como obter certificações da Databricks, explorar os benefícios da carreira e saber como escolher a certificação certa para suas metas profissionais.