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

Bu öğreticide, depolama kurulumu gerekmeyen mevcut açık veri kümelerini kullanarak 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'da görselleştirirsiniz.

Bu öğreticide şunları yaptınız:

  • Yerleşik sunucusuz SQL havuzuna erişme
  • Öğretici verilerini kullanmak için Azure Açık Veri Kümelerine erişme
  • SQL kullanarak temel veri analizi gerçekleştirme

Sunucusuz SQL havuzuna erişme

Her çalışma alanı, Yerleşik olarak adlandırılan önceden yapılandırılmış sunucusuz SQL havuzuyla birlikte gelir. Erişim için:

  1. Çalışma alanınızı açın ve Geliştirme hub'ını seçin.
  2. + Yeni kaynak ekle düğmesini seçin.'
  3. SQL betiği'ne tıklayın.

Bu betiği kullanarak SQL kapasitesini ayırmak zorunda kalmadan verilerinizi keşfedebilirsiniz.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Öğretici verilerine erişme

Bu öğreticide kullandığımız tüm veriler, azureopendatastorage depolama hesabında yer alır ve bu hesap, bunun gibi öğreticilerde açık kullanım için Azure Açık Veri Kümelerini tutar. Çalışma alanınız bir genel ağa erişebildiği sürece tüm betikleri doğrudan çalışma alanınızdan olduğu gibi çalıştırabilirsiniz.

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

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

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.

NYC Taxi verilerini öğrenmek 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]

Diğer erişilebilir veri kümeleri

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:

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 tpeppickupdatetime olsa da varsayılan olmayan bir harmanlamada çalışmaz.

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 Synapse Studio'da Tablo görünümünden Grafik görünümüne geçirilerek 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örüntüleyen 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ı azaltma 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ılki 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:

2016 sonucunun günlük sürüş sayısını gösteren ekran görüntüsü.

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.

Ekran görüntüsü, 2016'nın günlük sürüş sayısını gösteren bir sütun grafiği gösterir.

Çizim grafiğinde, cumartesileri yoğun gün olarak içeren 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 oluştuğuna dair net bir desen olmadan taksi yolculuğu sayısında bazı önemli düşüşler olduğunu fark 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

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

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 tatillerdeki taksi yolculuklarının sayısını çizim grafiği olarak gösteren ekran görüntüsü.

Çizim grafiğinden, 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. Şimdi 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 oluştuğuna işaret eder:

  • O gün NYC'de yoğun kar (yaklaşık 30 cm) olan bir tipi vardı.
  • Soğuktu (sıcaklık sıfır santigrat derecenin altındaydı).
  • Rüzgarlı (yaklaşık 10 m/s).

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.

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

Sunucusuz SQL havuzunda Dış tabloların nasıl kullanılacağını öğrenmek için bkz. Synapse SQL ile dış tabloları kullanma