Tutorial: Explorar e Analisar data lakes com o conjunto de SQL sem servidor
Neste tutorial, vai aprender a realizar análises de dados exploratórias. Pode combinar conjuntos de dados do Azure Open Datasets diferentes com o conjunto de SQL sem servidor. Em seguida, visualize os resultados no Synapse Studio para o Azure Synapse Analytics.
A OPENROWSET(BULK...)
função permite-lhe aceder a ficheiros no Armazenamento do Azure.
[OPENROWSET](develop-openrowset.md)
lê o conteúdo de uma origem de dados remota, como um ficheiro, e devolve o conteúdo como um conjunto de linhas.
Inferência automática do esquema
Uma vez que os dados são armazenados no formato de ficheiro Parquet, a inferência automática de esquemas está disponível. Pode consultar os dados sem listar os tipos de dados de todas as colunas nos ficheiros. Também pode utilizar o mecanismo de coluna virtual e a filepath
função para filtrar um determinado subconjunto de ficheiros.
Nota
O agrupamento predefinido é SQL_Latin1_General_CP1_CI_ASIf
. Para um agrupamento não predefinido, tenha em conta a sensibilidade a maiúsculas e minúsculas.
Se criar uma base de dados com agrupamento sensível a maiúsculas e minúsculas quando especificar colunas, certifique-se de que utiliza o nome correto da coluna.
Um nome tpepPickupDateTime
de coluna estaria correto e tpeppickupdatetime
não funcionaria num agrupamento não predefinido.
Este tutorial utiliza um conjunto de dados sobre o Táxi de Nova Iorque (NYC):
- Datas e horas de recolha e entrega
- Localizações de recolha e entrega
- Distâncias de viagem
- Tarifas itemizadas
- Tipos de taxa
- Tipos de pagamento
- Contagens de passageiros reportadas pelo condutor
Para se familiarizar com os dados do Táxi de NYC, execute a seguinte consulta:
SELECT TOP 100 * FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=*/puMonth=*/*.parquet',
FORMAT='PARQUET'
) AS [nyc]
Da mesma forma, pode consultar o conjunto de dados Feriados Públicos com a seguinte consulta:
SELECT TOP 100 * FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/holidaydatacontainer/Processed/*.parquet',
FORMAT='PARQUET'
) AS [holidays]
Também pode consultar o conjunto de dados de Dados Meteorológicos com a seguinte consulta:
SELECT
TOP 100 *
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/isdweatherdatacontainer/ISDWeather/year=*/month=*/*.parquet',
FORMAT='PARQUET'
) AS [weather]
Pode saber mais sobre o significado das colunas individuais nas descrições dos conjuntos de dados:
Série temporal, sazonalidade e análise atípica
Pode resumir o número anual de viagens de táxi com a seguinte consulta:
SELECT
YEAR(tpepPickupDateTime) AS current_year,
COUNT(*) AS rides_per_year
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=*/puMonth=*/*.parquet',
FORMAT='PARQUET'
) AS [nyc]
WHERE nyc.filepath(1) >= '2009' AND nyc.filepath(1) <= '2019'
GROUP BY YEAR(tpepPickupDateTime)
ORDER BY 1 ASC
O fragmento seguinte mostra o resultado do número anual de viagens de táxi:
Os dados podem ser visualizados em Synapse Studio ao mudar da Tabela para a vista Gráfico. Pode escolher entre diferentes tipos de gráficos, como Área, Barra, Coluna, Linha, Circular e Dispersão. Neste caso, desenhe o Gráfico de colunas com a coluna Categoria definida como current_year:
Nesta visualização, pode ver uma tendência de diminuição do número de passeios ao longo dos anos. Presumivelmente, esta diminuição deve-se ao recente aumento da popularidade das empresas de partilha de boleias.
Nota
No momento da escrita deste tutorial, os dados de 2019 estão incompletos. Como resultado, há uma enorme queda no número de passeios para esse ano.
Pode concentrar a análise num único ano, por exemplo, 2016. A consulta seguinte devolve o número diário de viagens durante esse ano:
SELECT
CAST([tpepPickupDateTime] AS DATE) AS [current_day],
COUNT(*) as rides_per_day
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=*/puMonth=*/*.parquet',
FORMAT='PARQUET'
) AS [nyc]
WHERE nyc.filepath(1) = '2016'
GROUP BY CAST([tpepPickupDateTime] AS DATE)
ORDER BY 1 ASC
O fragmento seguinte mostra o resultado desta consulta:
Mais uma vez, pode visualizar os dados ao desenhar o Gráfico de colunas com a coluna Categoria definida como current_day e a coluna Legenda (série) definida como rides_per_day.
No gráfico de gráficos, pode ver que existe um padrão semanal, com os sábados como o dia de pico. Durante os meses de verão, há menos passeios de táxi por causa das férias. Além disso, observe algumas quedas significativas no número de passeios de táxi sem um padrão claro de quando e por que ocorrem.
Em seguida, veja se a queda nos passeios está relacionada com os feriados públicos. Verifique se existe uma correlação ao associar o conjunto de dados Passeios de táxi de NYC com o conjunto de dados Feriados Públicos:
WITH taxi_rides AS (
SELECT
CAST([tpepPickupDateTime] AS DATE) AS [current_day],
COUNT(*) as rides_per_day
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=*/puMonth=*/*.parquet',
FORMAT='PARQUET'
) AS [nyc]
WHERE nyc.filepath(1) = '2016'
GROUP BY CAST([tpepPickupDateTime] AS DATE)
),
public_holidays AS (
SELECT
holidayname as holiday,
date
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/holidaydatacontainer/Processed/*.parquet',
FORMAT='PARQUET'
) AS [holidays]
WHERE countryorregion = 'United States' AND YEAR(date) = 2016
),
joined_data AS (
SELECT
*
FROM taxi_rides t
LEFT OUTER JOIN public_holidays p on t.current_day = p.date
)
SELECT
*,
holiday_rides =
CASE
WHEN holiday is null THEN 0
WHEN holiday is not null THEN rides_per_day
END
FROM joined_data
ORDER BY current_day ASC
Realce o número de passeios de táxi durante os feriados públicos. Para essa finalidade, selecione current_day para a coluna Categoria e rides_per_day e holiday_rides como as colunas Legenda (série ).
No gráfico de gráficos, pode ver que durante os feriados públicos o número de viagens de táxi é menor. Ainda há uma grande queda inexplicável no dia 23 de Janeiro. Vamos verificar a meteorologia em NOVA IORQUE nesse dia ao consultar o conjunto de dados Dados Meteorológicos:
SELECT
AVG(windspeed) AS avg_windspeed,
MIN(windspeed) AS min_windspeed,
MAX(windspeed) AS max_windspeed,
AVG(temperature) AS avg_temperature,
MIN(temperature) AS min_temperature,
MAX(temperature) AS max_temperature,
AVG(sealvlpressure) AS avg_sealvlpressure,
MIN(sealvlpressure) AS min_sealvlpressure,
MAX(sealvlpressure) AS max_sealvlpressure,
AVG(precipdepth) AS avg_precipdepth,
MIN(precipdepth) AS min_precipdepth,
MAX(precipdepth) AS max_precipdepth,
AVG(snowdepth) AS avg_snowdepth,
MIN(snowdepth) AS min_snowdepth,
MAX(snowdepth) AS max_snowdepth
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/isdweatherdatacontainer/ISDWeather/year=*/month=*/*.parquet',
FORMAT='PARQUET'
) AS [weather]
WHERE countryorregion = 'US' AND CAST([datetime] AS DATE) = '2016-01-23' AND stationname = 'JOHN F KENNEDY INTERNATIONAL AIRPORT'
Os resultados da consulta indicam que a queda no número de viagens de táxi ocorreu porque:
- Houve uma tempestade naquele dia em NYC com neve pesada (~30 cm).
- Estava frio (a temperatura estava abaixo de zero graus Celsius).
- Estava ventoso (~10 m/s).
Este tutorial mostrou como um analista de dados pode realizar rapidamente análises de dados exploratórias. Pode combinar conjuntos de dados diferentes com o conjunto de SQL sem servidor e visualizar os resultados com o Azure Synapse Studio.
Passos seguintes
Para saber como ligar o conjunto de SQL sem servidor ao Power BI Desktop e criar relatórios, veja Ligar o conjunto de SQL sem servidor para Power BI Desktop e criar relatórios.
Para saber como utilizar tabelas externas no conjunto de SQL sem servidor, veja Utilizar tabelas externas com o Synapse SQL