Kurz: Zkoumání a analýza datových jezer pomocí bezserverového fondu SQL
V tomto kurzu se dozvíte, jak provádět průzkumnou analýzu dat pomocí existujících otevřených datových sad bez nutnosti nastavení úložiště. Zkombinujete různé datové sady Azure Open Datasets pomocí bezserverového fondu SQL. Výsledky pak vizualizujete ve službě Synapse Studio pro Azure Synapse Analytics.
V tomto kurzu se naučíte:
- Přístup k integrovanému bezserverovém fondu SQL
- Přístup k datovým sadám Azure Open Datasets pro použití dat kurzu
- Provádění základní analýzy dat pomocí SQL
Přístup k bezserverovém fondu SQL
Každý pracovní prostor má předkonfigurovaný bezserverový fond SQL, který můžete použít s názvem Předdefinovaný. Přístup k němu:
- Otevřete pracovní prostor a vyberte centrum Vývoj .
- + Vyberte tlačítko Přidat nový prostředek.
- Vyberte skript SQL.
Tento skript můžete použít k prozkoumání dat, aniž byste museli rezervovat kapacitu SQL.
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Přístup k datům kurzu
Všechna data, která v tomto kurzu používáme, jsou uložená v účtu úložiště azureopendatastorage, která obsahuje azure Open Datasets pro otevřené použití v kurzech, jako je tato. Všechny skripty můžete spustit přímo z pracovního prostoru, pokud má váš pracovní prostor přístup k veřejné síti.
Tento kurz používá datovou sadu o Taxi New Yorku (NYC):
- Vyzvednutí a odkládací data a časy
- Umístění vyzvednutí a odkládacích míst
- Vzdálenosti jízdy
- Položky jízdné
- Typy sazeb
- Typy plateb
- Počty osob hlášených řidičem
Funkce OPENROWSET(BULK...)
umožňuje přístup k souborům ve službě Azure Storage. [OPENROWSET](develop-openrowset.md)
přečte obsah vzdáleného zdroje dat, například souboru, a vrátí obsah jako sadu řádků.
Pokud se chcete seznámit s daty taxislužby NYC, spusťte následující dotaz:
SELECT TOP 100 * FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=*/puMonth=*/*.parquet',
FORMAT='PARQUET'
) AS [nyc]
Další přístupné datové sady
Podobně můžete datovou sadu svátků dotazovat pomocí následujícího dotazu:
SELECT TOP 100 * FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/holidaydatacontainer/Processed/*.parquet',
FORMAT='PARQUET'
) AS [holidays]
Datovou sadu weather data můžete také dotazovat pomocí následujícího dotazu:
SELECT
TOP 100 *
FROM
OPENROWSET(
BULK 'https://azureopendatastorage.blob.core.windows.net/isdweatherdatacontainer/ISDWeather/year=*/month=*/*.parquet',
FORMAT='PARQUET'
) AS [weather]
Další informace o významu jednotlivých sloupců najdete v popisech datových sad:
Automatické odvození schématu
Vzhledem k tomu, že data jsou uložená ve formátu souboru Parquet, je k dispozici automatické odvozování schématu. Data můžete dotazovat bez výpisu datových typů všech sloupců v souborech. Pomocí mechanismu virtuálního sloupce a filepath
funkce můžete také vyfiltrovat určitou podmnožinu souborů.
Poznámka:
Výchozí kolace je SQL_Latin1_General_CP1_CI_ASIf
. U jiné než výchozí kolace vezměte v úvahu citlivost na malá a velká písmena.
Pokud při zadávání sloupců vytváříte databázi s rozlišováním velkých a malých písmen, nezapomeňte použít správný název sloupce.
Název tpepPickupDateTime
sloupce by byl správný, i když tpeppickupdatetime
by nefungovalo v jiné než výchozí kolaci.
Analýza časových řad, sezónnosti a odlehlé hodnoty
Roční počet jízd taxíkem můžete shrnout pomocí následujícího dotazu:
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
Následující fragment kódu ukazuje výsledek ročního počtu jízd taxíkem:
Data je možné vizualizovat v nástroji Synapse Studio přepnutím z tabulky do zobrazení grafů. Můžete si vybrat z různých typů grafů, jako je oblast, pruhový, sloupcový, spojnicový, výsečový a bodový. V tomto případě vykreslujte sloupcový graf se sloupcem Kategorie nastaveným na current_year:
Z této vizualizace můžete vidět trend snížení počtu jízd v průběhu let. Pravděpodobně je to způsobeno nedávnou zvýšenou popularitou společností pro sdílení jízdy.
Poznámka:
V době psaní tohoto kurzu jsou data pro verzi 2019 neúplná. Výsledkem je obrovský pokles počtu jízd za daný rok.
Analýzu můžete zaměřit na jeden rok, například na rok 2016. Následující dotaz vrátí denní počet jízd během daného roku:
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
Následující fragment kódu ukazuje výsledek pro tento dotaz:
Data můžete znovu vizualizovat vykreslením sloupcového grafu se sloupcem Kategorie nastaveným na current_day a sloupcem Legenda (řady) nastaveným na rides_per_day.
Z grafu můžete vidět týdenní vzor, který má sobotu jako špičku. V letních měsících je kvůli dovolené méně jízd taxíkem. Všimněte si také, že některé významné poklesy počtu jízd taxíkem bez jasného vzoru kdy a proč se vyskytují.
Dále zjistěte, jestli pokles jízdy koreluje s veřejnými svátky. Zkontrolujte, jestli existuje korelace tím, že se připojíte k datové sadě jízdy taxi NYC s datovou sadou svátků:
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
Zvýrazněte počet jízd taxíkem během svátků. Pro tento účel zvolte current_day pro sloupec Kategorie a rides_per_day a holiday_rides jako sloupce Legenda (řady).
Z grafu můžete vidět, že během svátků je počet jízd taxíkem nižší. 23. ledna stále existuje jeden nevysvětlovaný velký pokles. Pojďme se podívat na počasí v NYC v daný den dotazováním datové sady Weather Data:
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'
Výsledky dotazu ukazují, že došlo k poklesu počtu jízd taxíkem, protože:
- V NYC byl v ten den s těžkým sněhem (přibližně 30 cm).
- Byla studená (teplota byla nižší než nula stupňů Celsia).
- Byl větrný (přibližně 10 m/s).
Tento kurz ukázal, jak může datový analytik rychle provádět průzkumnou analýzu dat. Různé datové sady můžete kombinovat pomocí bezserverového fondu SQL a vizualizovat výsledky pomocí nástroje Azure Synapse Studio.
Související obsah
Informace o připojení bezserverového fondu SQL k Power BI Desktopu a vytváření sestav najdete v tématu Připojení bezserverového fondu SQL k Power BI Desktopu a vytváření sestav.
Informace o používání externích tabulek v bezserverovém fondu SQL najdete v tématu Použití externích tabulek se službou Synapse SQL.