curso
CREATE TABLE em Databricks: Um guia completo para criar e gerenciar tabelas
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 format
CREATE TABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales';
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 definition
CREATE TABLE hive_table (
id INT,
name STRING
)
COMMENT 'Hive format example'
TBLPROPERTIES ('created_by' = 'databricks');
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 table
CREATE TABLE new_table LIKE existing_table;
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 default
CREATE TABLE cloned_table CLONE original_table;
-- Shallow clone
CREATE TABLE shallow_clone_table SHALLOW CLONE original_table;
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 schema
CREATE OR REPLACE TABLE sales (
sale_id INT,
amount FLOAT
)
USING DELTA
LOCATION '/mnt/delta/sales';
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 schema
CREATE TABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE
)
USING DELTA
COMMENT 'Table to store employee information';
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 location
CREATE TABLE sales_data
USING PARQUET
LOCATION '/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 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 table
CREATE TABLE high_value_sales AS
SELECT
sale_id,
customer_id,
total_amount
FROM sales_data
WHERE total_amount > 1000;
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 storage
CREATE TABLE external_table
USING DELTA
LOCATION '/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 chamada sales_backup
com o mesmo esquema de uma tabela sales
existente.
-- Create a new sales table with the same schema as an existing table
CREATE TABLE sales_backup LIKE sales;
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)
CREATE TABLE sales_shallow_clone CLONE sales_data;
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 data
CREATE TABLE sales_deep_clone CLONE sales_data DEEP;
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 session
CREATE TEMPORARY TABLE temp_table AS
SELECT
id,
name,
sales_amount
FROM sales_data
WHERE region = 'US';
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 data
CREATE OR REPLACE TABLE updated_table (
id BIGINT,
name STRING,
total_sales DOUBLE
)
USING DELTA
LOCATION '/mnt/delta/updated_table/';
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 value
CREATE TABLE employees (
id BIGINT GENERATED ALWAYS AS IDENTITY, -- Auto-incremented column
name STRING,
department STRING
);
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 columns
CREATE TABLE sales (
sale_id BIGINT,
sale_date DATE,
sale_year INT GENERATED ALWAYS AS (YEAR(sale_date)) -- Derived column
);
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 table
CREATE TABLE partitioned_table (
id BIGINT,
region STRING,
sales_amount DOUBLE
)
USING DELTA
PARTITIONED BY (region); -- Querying by region will be faster
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 table
OPTIMIZE partitioned_table
ZORDER BY (sales_amount); -- Clusters data within partitions for efficient reads
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
-- Column masking: Redact sensitive data
CREATE MASKED VIEW masked_table AS
SELECT
id,
name,
CASE
WHEN current_user() = 'manager' THEN salary
ELSE 'REDACTED'
END AS salary
FROM employees;
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 control
CREATE OR REPLACE VIEW filtered_table AS
SELECT *
FROM sales
WHERE region = 'US'; -- Limit data visibility to a specific region
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 TABLE
CREATE OR REPLACE TABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE -- New column added
)
USING DELTA;
Essa outra consulta modifica a tabela employees
adicionando uma nova coluna salary
ao esquema existente.
-- Altering a table schema
ALTER TABLE employees ADD COLUMNS (salary DOUBLE);
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 optimizations
ALTER TABLE delta_table
SET TBLPROPERTIES (
'delta.autoOptimize.optimizeWrite' = 'true', -- Automatically compact small files
'delta.autoOptimize.autoCompact' = 'true' -- Automatically merge files
);
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 performance
OPTIMIZE delta_table
ZORDER BY (region, sales_date); -- Improves query efficiency for frequent filters
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 create table because the location is not empty.
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
.
CREATE OR REPLACE TABLE delta_table
USING DELTA
LOCATION '/mnt/data/delta_table'; -- Overwrites table and files
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 column type STRING, but found INT.
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 creation
CREATE TABLE schema_table (
id INT,
name STRING
)
USING DELTA
TBLPROPERTIES ('delta.schema.enforce' = 'true'); -- Enforces strict schema
Além disso, você deve permitir a evolução do esquema ao adicionar novas colunas ou alterar os tipos de dados.
ALTER TABLE schema_table ADD COLUMNS (new_column DOUBLE);
O uso da conversão explícita de tipos ao inserir dados também deve ajudar a solucionar esse tipo de erro.
INSERT INTO schema_table SELECT CAST(id AS INT), CAST(name AS STRING) FROM source_table;
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:
Error: Concurrent transactions detected on identity column table
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()
.
CREATE TABLE better_table AS
SELECT
monotonically_increasing_id() AS id, -- Replaces identity column
name, department
FROM source_data;
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.
MERGE INTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;
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.
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.
Aprenda Databricks com o DataCamp
curso
Gerenciamento de dados em Databricks
curso
Visualização de dados no Databricks
blog
O que é o Tableau - O guia completo do Tableau
Wendy Gittleson
19 min
blog
Certificações da Databricks em 2024: O guia completo

Gus Frazer
24 min
tutorial
Como criar tabelas de datas no Power BI Tutorial
tutorial
Criando e personalizando tabelas dinâmicas no Power BI
tutorial
Tutorial do MySQL: Um guia abrangente para iniciantes
tutorial
Tutorial do Insert Into SQL

DataCamp Team
3 min