evento
31/03, 23 - 2/04, 23
O maior evento de aprendizagem de Malha, Power BI e SQL. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $400.
Registe-se hoje mesmoEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Aplica-se a:✅ Armazém no Microsoft Fabric
A linguagem Transact-SQL oferece opções que você pode usar para carregar dados em escala de tabelas existentes em sua casa de lago e armazém em novas tabelas em seu depósito. Essas opções são convenientes se você precisar criar novas versões de uma tabela com dados agregados, versões de tabelas com um subconjunto das linhas ou criar uma tabela como resultado de uma consulta complexa. Vamos explorar alguns exemplos.
A instrução CREATE TABLE AS SELECT
(CTAS) permite que você crie uma nova tabela em seu depósito a partir da saída de uma instrução SELECT
. Ele executa a operação de ingestão na nova tabela em paralelo, tornando-a altamente eficiente para a transformação de dados e criação de novas tabelas em seu espaço de trabalho.
Você pode usar as seguintes opções para a parte SELECT
da instrução CTAS:
OPENROWSET
(visualização).Nota
Os exemplos neste artigo usam o conjunto de dados de exemplo do Bing COVID-19. Para carregar o conjunto de dados de exemplo, siga as etapas em Ingerir dados em seu depósito usando a instrução COPY para criar os dados de amostra em seu depósito.
O primeiro exemplo ilustra como criar uma nova tabela que é uma cópia da tabela existente dbo.[bing_covid-19_data_2023]
, mas filtrada apenas para dados do ano de 2023:
CREATE TABLE [dbo].[bing_covid-19_data_2023]
AS
SELECT *
FROM [dbo].[bing_covid-19_data]
WHERE DATEPART(YEAR,[updated]) = '2023';
Em vez de ler dados da tabela de preparação [bing_covid-19_data]
, você também pode criar uma nova tabela diretamente de um arquivo externo usando a função OPENROWSET
(visualização pública):
CREATE TABLE [dbo].[bing_covid-19_data_2022]
AS
SELECT id, updated, confirmed, deaths, recovered, latitude, longitude, iso2, iso3, country_region
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data
WHERE DATEPART(YEAR,[updated]) = '2022'
Você também pode criar uma nova tabela com novas year
colunas , month
, dayofmonth
com valores obtidos da coluna na tabela de updated
origem. Isso pode ser útil se você estiver tentando visualizar dados de infeção por ano ou para ver os meses em que a maioria dos casos de COVID-19 são observados:
CREATE TABLE [dbo].[bing_covid-19_data_with_year_month_day]
AS
SELECT DATEPART(YEAR,[updated]) [year], DATEPART(MONTH,[updated]) [month], DATEPART(DAY,[updated]) [dayofmonth], *
FROM [dbo].[bing_covid-19_data];
Em vez de ler dados da tabela de preparação [bing_covid-19_data]
, também se pode criar uma nova tabela diretamente a partir de um arquivo externo e transformar os resultados.
CREATE TABLE [dbo].[bing_covid-19_data_with_year_month_day]
AS
SELECT DATEPART(YEAR,[updated]) [year], DATEPART(MONTH,[updated]) [month], DATEPART(DAY,[updated]) [dayofmonth],
id, confirmed, deaths, recovered, latitude, longitude, iso2, iso3, country_region
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data
Como outro exemplo, você pode criar uma nova tabela que resume o número de casos observados em cada mês, independentemente do ano, para avaliar como a sazonalidade afeta a propagação em um determinado país/região. Ele usa a tabela criada no exemplo anterior com a nova month
coluna como fonte:
CREATE TABLE [dbo].[infections_by_month]
AS
SELECT [country_region],[month], SUM(CAST(confirmed as bigint)) [confirmed_sum]
FROM [dbo].[bing_covid-19_data_with_year_month_day]
GROUP BY [country_region],[month];
CREATE TABLE [dbo].[infections_by_month_2022]
AS
SELECT [country_region], DATEPART(MONTH,[updated]) AS [month], SUM(CAST(confirmed as bigint)) [confirmed_sum]
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data
WHERE DATEPART(YEAR,[updated]) = '2022'
GROUP BY [country_region],DATEPART(MONTH,[updated]);
Com base nesta nova tabela, podemos ver que os Estados Unidos observaram mais casos confirmados em todos os anos no mês de January
, seguido por December
e October
.
April
é o mês com o menor número de casos em geral:
SELECT * FROM [dbo].[infections_by_month]
WHERE [country_region] = 'United States'
ORDER BY [confirmed_sum] DESC;
Para obter mais exemplos e referência de sintaxe, consulte CREATE TABLE AS SELECT (Transact-SQL).
Os exemplos anteriores criam novas tabelas com base no resultado de uma consulta. Para replicar os exemplos, mas em tabelas existentes, o INSERT... O padrão SELECT pode ser usado. Por exemplo, o código a seguir ingere novos dados em uma tabela existente:
INSERT INTO [dbo].[bing_covid-19_data_2023]
SELECT * FROM [dbo].[bing_covid-19_data]
WHERE [updated] > '2023-02-28';
Os critérios de consulta para a SELECT
instrução podem ser qualquer consulta válida, desde que os tipos de coluna de consulta resultantes estejam alinhados com as colunas na tabela de destino. Se os nomes das colunas forem especificados e incluírem apenas um subconjunto das colunas da tabela de destino, todas as outras colunas serão carregadas como NULL
. Para obter mais informações, consulte Usando INSERT INTO... SELECT para importar dados em massa com o mínimo de registro em log e paralelismo.
Para CREATE TABLE AS SELECT e INSERT... SELECT, a SELECT
instrução também pode fazer referência a tabelas em armazéns diferentes do depósito onde a tabela de destino está armazenada, usando consultas entre depósitos. Isto pode ser conseguido usando a convenção [warehouse_or_lakehouse_name.][schema_name.]table_name
de nomenclatura em três partes. Por exemplo, suponha que você tenha os seguintes ativos de espaço de trabalho:
cases_lakehouse
com os dados de casos mais recentes.reference_warehouse
com tabelas usadas para dados de referência.research_warehouse
onde a tabela de destino é criada.Uma nova tabela pode ser criada que usa nomenclatura de três partes para combinar dados de tabelas nesses ativos de espaço de trabalho:
CREATE TABLE [research_warehouse].[dbo].[cases_by_continent]
AS
SELECT
FROM [cases_lakehouse].[dbo].[bing_covid-19_data] cases
INNER JOIN [reference_warehouse].[dbo].[bing_covid-19_data] reference
ON cases.[iso3] = reference.[countrycode];
Para saber mais sobre consultas entre depósitos, consulte Escrever uma consulta SQL entre bancos de dados.
evento
31/03, 23 - 2/04, 23
O maior evento de aprendizagem de Malha, Power BI e SQL. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $400.
Registe-se hoje mesmoFormação
Módulo
Usar pools SQL sem servidor do Azure Synapse para transformar dados em um data lake - Training
Usar pools SQL sem servidor do Azure Synapse para transformar dados em um data lake
Certificação
Microsoft Certified: Azure Data Engineer Associate - Certifications
Demonstre a compreensão das tarefas comuns de engenharia de dados para implementar e gerenciar cargas de trabalho de engenharia de dados no Microsoft Azure, usando vários serviços do Azure.
Documentação
Ingerir dados no seu Armazém usando a instrução COPY - Microsoft Fabric
Siga as etapas para ingerir dados em um depósito com a instrução COPY no Microsoft Fabric.
Ingerir dados no armazém - Microsoft Fabric
Saiba mais sobre as funcionalidades que lhe permitem ingerir dados no seu armazém.
Consultar o ponto de extremidade de análise SQL ou o Warehouse - Microsoft Fabric
Saiba mais sobre as opções para escrever consultas TSQL no ponto de extremidade de análise SQL ou no Warehouse no Microsoft Fabric.