Öğretici: Sunucusuz SQL havuzu ile veri göllerini keşfetme ve analiz etme

Bu öğreticide keşif veri analizi gerçekleştirmeyi öğreneceksiniz. Sunucusuz SQL havuzunu kullanarak farklı Azure Açık Veri Kümelerini birleştirirsiniz. Ardından sonuçları Azure Synapse Analytics için Synapse Studio görselleştirirsiniz.

işlevi, OPENROWSET(BULK...) Azure Depolama'daki dosyalara erişmenizi sağlar. [OPENROWSET](develop-openrowset.md) dosya gibi uzak bir veri kaynağının içeriğini okur ve içeriği bir satır kümesi olarak döndürür.

Otomatik şema çıkarımı

Veriler Parquet dosya biçiminde depolandığından otomatik şema çıkarımı kullanılabilir. Dosyalardaki tüm sütunların veri türlerini listelemeden verileri sorgulayabilirsiniz. Ayrıca sanal sütun mekanizmasını ve filepath işlevini kullanarak belirli bir dosya alt kümesini filtreleyebilirsiniz.

Not

Varsayılan harmanlama şeklindedir SQL_Latin1_General_CP1_CI_ASIf. Varsayılan olmayan harmanlama için büyük/küçük harf duyarlılığını dikkate alın.

Sütunları belirtirken büyük/küçük harfe duyarlı harmanlama içeren bir veritabanı oluşturursanız sütunun doğru adını kullandığınızdan emin olun.

Sütun adı tpepPickupDateTime doğru olsa da tpeppickupdatetime varsayılan olmayan harmanlamada çalışmaz.

Bu öğreticide New York City (NYC) Taxi hakkında bir veri kümesi kullanılır:

  • Teslim ve bırakma tarihleri ve saatleri
  • Teslim alma ve bırakma konumları
  • Seyahat mesafeleri
  • Öğeli tarifeler
  • Fiyat türleri
  • Ödeme türleri
  • Sürücü tarafından bildirilen yolcu sayısı

NYC Taxi verilerini tanımak için aşağıdaki sorguyu çalıştırın:

SELECT TOP 100 * FROM
    OPENROWSET(
        BULK 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=*/puMonth=*/*.parquet',
        FORMAT='PARQUET'
    ) AS [nyc]

Benzer şekilde, aşağıdaki sorguyu kullanarak Resmi Tatiller veri kümesini sorgulayabilirsiniz:

SELECT TOP 100 * FROM
    OPENROWSET(
        BULK 'https://azureopendatastorage.blob.core.windows.net/holidaydatacontainer/Processed/*.parquet',
        FORMAT='PARQUET'
    ) AS [holidays]

Aşağıdaki sorguyu kullanarak Hava Durumu Verileri veri kümesini de sorgulayabilirsiniz:

SELECT
    TOP 100 *
FROM  
    OPENROWSET(
        BULK 'https://azureopendatastorage.blob.core.windows.net/isdweatherdatacontainer/ISDWeather/year=*/month=*/*.parquet',
        FORMAT='PARQUET'
    ) AS [weather]

Veri kümelerinin açıklamalarında tek tek sütunların anlamı hakkında daha fazla bilgi edinebilirsiniz:

Zaman serisi, mevsimsellik ve aykırı değerler analizi

Aşağıdaki sorguyu kullanarak taksi yolculuklarının yıllık sayısını özetleyebilirsiniz:

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

Aşağıdaki kod parçacığı, yıllık taksi yolculuğu sayısının sonucunu gösterir:

Yıllık taksi yolculuğu sayısını gösteren ekran görüntüsü.

Veriler, Tablo görünümünden Grafik görünümüne geçirilerek Synapse Studio görselleştirilebilir. Alan, Çubuk, Sütun, Çizgi, Pasta ve Dağılım gibi farklı grafik türleri arasından seçim yapabilirsiniz. Bu durumda, Kategori sütununun current_year olarak ayarlandığı Sütun grafiğini çizin:

Yıl başına yolculukları gösteren bir sütun grafiği gösteren ekran görüntüsü.

Bu görselleştirmede, yıllar içinde sürüş sayılarının azalma eğilimini görebilirsiniz. Muhtemelen, bu düşüş sürüş paylaşım şirketlerinin son zamanlarda artan popülerliğinden kaynaklanır.

Not

Bu öğretici yazılırken 2019 verileri eksiktir. Sonuç olarak, o yılki yolculuk sayısında büyük bir düşüş var.

Analizi tek bir yıla, örneğin 2016'ya odaklayabilirsiniz. Aşağıdaki sorgu, o yıldaki günlük sürüş sayısını döndürür:

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

Aşağıdaki kod parçacığı bu sorgunun sonucunu gösterir:

Ekran görüntüsü, 2016'nın günlük sürüş sayısını gösteren tabloyu gösterir.

Yine, Kategori sütununun current_day ve Gösterge (seri) sütununun rides_per_day olarak ayarlandığı Sütun grafiğini çizerek verileri görselleştirebilirsiniz.

2016 için günlük sürüş sayısını gösteren sütun grafiği gösteren ekran görüntüsü.

Çizim grafiğinde, Cumartesi günleri yoğun gün olarak olmak üzere haftalık bir desen olduğunu görebilirsiniz. Yaz aylarında, tatiller nedeniyle daha az taksi yolculuğu vardır. Ayrıca, ne zaman ve neden ortaya çıktığına dair net bir desen olmadan taksi yolculuklarının sayısında bazı önemli düşüşlere dikkat edin.

Ardından, yolculuklardaki düşüşün resmi tatillerle bağıntılı olup olmadığını görün. NYC Taxi rides veri kümesine Resmi Tatiller veri kümesiyle katılarak bir bağıntı olup olmadığını denetleyin:

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

Ekran görüntüsü, N Y C Taksi yolculukları ve Resmi Tatiller veri kümeleri sonucunu gösteren tabloyu gösterir.

Resmi tatillerde taksi yolculuğu sayısını vurgulayın. Bu amaçla Kategori sütunu için current_day seçin ve Gösterge(seri) sütunları olarak rides_per_day ve holiday_rides.

Resmi tatillerde taksi yolculuğu sayısını çizim grafiği olarak gösteren ekran görüntüsü.

Çizim grafiğinde, resmi tatillerde taksi yolculuğu sayısının daha az olduğunu görebilirsiniz. 23 Ocak'ta hala açıklanamayan büyük bir düşüş var. O gün Hava Durumu Verileri veri kümesini sorgulayarak NYC'deki hava durumunu denetleyelim:

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'

Hava Durumu Verileri veri kümesi sonuç görselleştirmesi gösteren ekran görüntüsü.

Sorgunun sonuçları, taksi yolculuğu sayısındaki düşüşün şu nedenlerle gerçekleştiğini gösterir:

  • O gün NYC'de yoğun karla (~30 cm) bir kar fırtınası vardı.
  • Hava soğuktu (sıcaklık sıfır santigrat derecenin altındaydı).
  • Rüzgarlı (~10 m/sn).

Bu öğreticide veri analistlerinin keşif veri analizini nasıl hızlı bir şekilde gerçekleştirebileceği gösterilmiştir. Sunucusuz SQL havuzunu kullanarak farklı veri kümelerini birleştirebilir ve Azure Synapse Studio kullanarak sonuçları görselleştirebilirsiniz.

Sonraki adımlar

Sunucusuz SQL havuzunu Power BI Desktop bağlamayı ve rapor oluşturmayı öğrenmek için bkz. Sunucusuz SQL havuzunu Power BI Desktop ve rapor oluşturmak için bağlama.

Sunucusuz SQL havuzunda Dış tabloları kullanmayı öğrenmek için bkz. Synapse SQL ile dış tabloları kullanma