Aracılığıyla paylaş


Azure Veri Gezgini kullanarak Azure Data Lake'te verileri sorgulama

Azure Data Lake Storage, büyük veri analizi için yüksek oranda ölçeklenebilir ve uygun maliyetli bir Data Lake çözümüdür. İçgörüye olan zamanınızı kısaltmanıza yardımcı olmak için yüksek performanslı bir dosya sisteminin gücünü büyük ölçek ve ekonomiyle birleştirir. Analiz iş yükleri için iyileştirilmiş olan Data Lake Storage Gen2, Azure Blob Depolama özelliklerini geliştirir.

Azure Veri Gezgini, dış depolamada depolanan verilere hızlı, önbelleğe alınmış ve dizine alınmış erişim sağlayan Azure Blob Depolama ve Azure Data Lake Storage (1. Nesil ve 2. Nesil) ile tümleşir. Azure Veri Gezgini'a önceden alınmadan verileri analiz edebilir ve sorgulayabilirsiniz. Ayrıca alınan ve kaydedilmeyen dış verileri aynı anda sorgulayabilirsiniz. Daha fazla bilgi için bkz. Azure Veri Gezgini web kullanıcı arabirimi sihirbazını kullanarak dış tablo oluşturma. Kısa bir genel bakış için bkz . dış tablolar.

İpucu

En iyi sorgu performansı, Azure Veri Gezgini'a veri alımını gerektirmektedir. Dış verileri önceden alınmadan sorgulama özelliği yalnızca nadiren sorgulanan geçmiş veriler veya veriler için kullanılmalıdır. En iyi sonuçları elde etmek için dış veri sorgusu performansınızı iyileştirin.

Dış tablo oluşturma

Bir ambarda depolanan ürünlerle ilgili geçmiş bilgileri içeren çok sayıda CSV dosyanız olduğunu ve geçen yılın en popüler beş ürününü bulmak için hızlı bir analiz yapmak istediğinizi varsayalım. Bu örnekte, CSV dosyaları şöyle görünür:

Zaman damgası Ürün Kimliği ProductDescription
2019-01-01 11:21:00 TO6050 DS/HD Diskette 3.5
2019-01-01 11:30:55 YDX1 Yamaha DX1 Synthesizer
... ... ...

Dosyalar Azure Blob depolama mycompanystorage alanında adlı archivedproductsbir kapsayıcının altında depolanır ve tarihe göre bölümlenir:

https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00000-7e967c99-cf2b-4dbb-8c53-ce388389470d.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00001-ba356fa4-f85f-430a-8b5a-afd64f128ca4.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00002-acb644dc-2fc6-467c-ab80-d1590b23fc31.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00003-cd5fad16-a45e-4f8c-a2d0-5ea5de2f4e02.csv.gz
https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/02/part-00000-ffc72d50-ff98-423c-913b-75482ba9ec86.csv.gz
...

Bu CSV dosyalarında doğrudan bir KQL sorgusu çalıştırmak için komutunu kullanarak .create external table Azure Veri Gezgini'da bir dış tablo tanımlayın. Dış tablo oluşturma komut seçenekleri hakkında daha fazla bilgi için bkz . dış tablo komutları.

.create external table ArchivedProducts(Timestamp:datetime, ProductId:string, ProductDescription:string)
kind=blob
partition by (Date:datetime = bin(Timestamp, 1d))
dataformat=csv
(
  h@'https://mycompanystorage.blob.core.windows.net/archivedproducts;StorageSecretKey'
)

Dış tablo artık Azure Veri Gezgini web kullanıcı arabiriminin sol bölmesinde görünür:

Azure Veri Gezgini web kullanıcı arabiriminde dış tabloyu gösteren ekran görüntüsü.

Dış tablo izinleri

  • Veritabanı kullanıcısı bir dış tablo oluşturabilir. Tablo oluşturucu otomatik olarak tablo yöneticisi olur.
  • Küme, veritabanı veya tablo yöneticisi var olan bir tabloyu düzenleyebilir.
  • Herhangi bir veritabanı kullanıcısı veya okuyucusu dış tabloyu sorgulayabilir.

Dış tabloyu sorgulama

Bir dış tablo tanımlandıktan sonra işlev external_table() bu tabloya başvurmak için kullanılabilir. Sorgunun geri kalanı standart Kusto Sorgu Dili.

external_table("ArchivedProducts")
| where Timestamp > ago(365d)
| summarize Count=count() by ProductId,
| top 5 by Count

Dış ve alınan verileri birlikte sorgulama

Aynı sorgu içinde hem dış tabloları hem de alınan veri tablolarını sorgulayabilirsiniz. Dış tabloyu Azure union Veri Gezgini, SQL sunucularından veya diğer kaynaklardan gelen diğer verilerle birlikte kullanabilirsinizjoin. let( ) statement Dış tablo başvurusuna bir kısaltma adı atamak için kullanın.

Aşağıdaki örnekte Products, alınan bir veri tablosudur ve ArchivedProducts da daha önce tanımladığımız bir dış tablodur:

let T1 = external_table("ArchivedProducts") |  where TimeStamp > ago(100d);
let T = Products; //T is an internal table
T1 | join T on ProductId | take 10

Hiyerarşik veri biçimlerini sorgulama

Azure Veri Gezgini, , Parquet, Avrove ORCgibi JSONhiyerarşik biçimleri sorgulamaya olanak tanır. Hiyerarşik veri şemasını dış tablo şemasıyla eşlemek için (farklıysa), dış tablo eşlemeleri komutlarını kullanın. Örneğin, JSON günlük dosyalarını aşağıdaki biçimde sorgulamak istiyorsanız:

{
  "timestamp": "2019-01-01 10:00:00.238521",
  "data": {
    "tenant": "e1ef54a6-c6f2-4389-836e-d289b37bcfe0",
    "method": "RefreshTableMetadata"
  }
}
{
  "timestamp": "2019-01-01 10:00:01.845423",
  "data": {
    "tenant": "9b49d0d7-b3e6-4467-bb35-fa420a25d324",
    "method": "GetFileList"
  }
}
...

Dış tablo tanımı şöyle görünür:

.create external table ApiCalls(Timestamp: datetime, TenantId: guid, MethodName: string)
kind=blob
dataformat=multijson
(
   h@'https://storageaccount.blob.core.windows.net/container1;StorageSecretKey'
)

Veri alanlarını dış tablo tanımı alanlarına eşleyen bir JSON eşlemesi tanımlayın:

.create external table ApiCalls json mapping 'MyMapping' '[{"Column":"Timestamp","Properties":{"Path":"$.timestamp"}},{"Column":"TenantId","Properties":{"Path":"$.data.tenant"}},{"Column":"MethodName","Properties":{"Path":"$.data.method"}}]'

Dış tabloyu sorguladığınızda eşleme çağrılır ve ilgili veriler dış tablo sütunlarına eşlenir:

external_table('ApiCalls') | take 10

Eşleme söz dizimi hakkında daha fazla bilgi için bkz . veri eşlemeleri.

Yardım kümesindeki TaxiRides dış tablosunu sorgulama

Farklı Azure Veri Gezgini özelliklerini denemek için yardım adlı test kümesini kullanın. Yardım kümesi, milyarlarca taksi yolculuğu içeren New York City taksi veri kümesi için bir dış tablo tanımı içerir.

TaxiRides dış tablosu oluşturma

Bu bölümde, yardım kümesinde TaxiRides dış tablosunu oluşturmak için kullanılan sorgu gösterilir. Bu tablo zaten oluşturulduğundan, bu bölümü atlayabilir ve doğrudan TaxiRides dış tablo verilerini sorgulamaya gidebilirsiniz.

.create external table TaxiRides
(
  trip_id: long,
  vendor_id: string,
  pickup_datetime: datetime,
  dropoff_datetime: datetime,
  store_and_fwd_flag: string,
  rate_code_id: int,
  pickup_longitude: real,
  pickup_latitude: real,
  dropoff_longitude: real,
  dropoff_latitude: real,
  passenger_count: int,
  trip_distance: real,
  fare_amount: real,
  extra: real,
  mta_tax: real,
  tip_amount: real,
  tolls_amount: real,
  ehail_fee: real,
  improvement_surcharge: real,
  total_amount: real,
  payment_type: string,
  trip_type: int,
  pickup: string,
  dropoff: string,
  cab_type: string,
  precipitation: int,
  snow_depth: int,
  snowfall: int,
  max_temperature: int,
  min_temperature: int,
  average_wind_speed: int,
  pickup_nyct2010_gid: int,
  pickup_ctlabel: string,
  pickup_borocode: int,
  pickup_boroname: string,
  pickup_ct2010: string,
  pickup_boroct2010: string,
  pickup_cdeligibil: string,
  pickup_ntacode: string,
  pickup_ntaname: string,
  pickup_puma: string,
  dropoff_nyct2010_gid: int,
  dropoff_ctlabel: string,
  dropoff_borocode: int,
  dropoff_boroname: string,
  dropoff_ct2010: string,
  dropoff_boroct2010: string,
  dropoff_cdeligibil: string,
  dropoff_ntacode: string,
  dropoff_ntaname: string,
  dropoff_puma: string
)
kind=blob
partition by (Date:datetime = bin(pickup_datetime, 1d))
dataformat=csv
(
    h@'https://storageaccount.blob.core.windows.net/container1;secretKey'
)

Oluşturulan TaxiRides tablosunu, Azure Veri Gezgini web kullanıcı arabiriminin sol bölmesine bakarak bulabilirsiniz:

 Taksi yolculukları dış tablosunu gösteren ekran görüntüsü.

Query TaxiRides dış tablo verileri

https://dataexplorer.azure.com/clusters/help/databases/Samples oturumu açın.

TaxiRides dış tablosunu bölümleme olmadan sorgula

Bu sorguyu taxirides dış tablosunda çalıştırarak veri kümesinin tamamında haftanın her gününe ait yolculukları gösterin.

external_table("TaxiRides")
| summarize count() by dayofweek(pickup_datetime)
| render columnchart

Bu sorgu haftanın en yoğun gününü gösterir. Veriler bölümlenmediğinden, sorgunun sonuç döndürmesi birkaç dakika kadar sürebilir.

Bölümlenmemiş sorguyu işlemek için grafik gösterimi.

Taxi'yi Sorgulama Bölümleme ile dış tabloyu geçersiz kılma

Ocak 2017'de kullanılan taksi taksi türlerini (sarı veya yeşil) göstermek için taxiRides dış tablosunda bu sorguyu çalıştırın.

external_table("TaxiRides")
| where pickup_datetime between (datetime(2017-01-01) .. datetime(2017-02-01))
| summarize count() by cab_type
| render piechart

Bu sorgu, sorgu süresini ve performansını iyileştirici bölümleme kullanır. Sorgu bölümlenmiş bir sütunda (pickup_datetime) filtrelenir ve sonuçları birkaç saniye içinde döndürür.

Bölümlenmiş sorguyu işlemek için diyagram.

TaxiRides dış tablosunda çalıştırılacak başka sorgular yazabilir ve veriler hakkında daha fazla bilgi edinebilirsiniz.

Sorgu performansınızı iyileştirme

Dış verileri sorgulamak için aşağıdaki en iyi yöntemleri kullanarak göldeki sorgu performansınızı iyileştirin.

Veri biçimi

  • Analiz sorguları için aşağıdaki nedenlerle sütunlu biçim kullanın:
    • Yalnızca sorguyla ilgili sütunlar okunabilir.
    • Sütun kodlama teknikleri veri boyutunu önemli ölçüde azaltabilir.
  • Azure Veri Gezgini Parquet ve ORC sütunlu biçimlerini destekler. İyileştirilmiş uygulama nedeniyle Parquet biçimi önerilir.

Azure bölgesi

Dış verilerin Azure Veri Gezgini kümenizle aynı Azure bölgesinde olup olmadığını denetleyin. Bu kurulum maliyeti ve veri getirme süresini azaltır.

Dosya boyutu

En uygun dosya boyutu, dosya başına yüzlerce Mb 'dir (1 GB'a kadar). Daha yavaş dosya numaralandırma işlemi ve sütunlu biçimin sınırlı kullanımı gibi gereksiz ek yük gerektiren birçok küçük dosyadan kaçının. Dosya sayısı, Azure Veri Gezgini kümenizdeki CPU çekirdeği sayısından büyük olmalıdır.

Sıkıştırma

Uzak depolama alanından getirilen veri miktarını azaltmak için sıkıştırmayı kullanın. Parquet biçimi için, sütun gruplarını ayrı ayrı sıkıştıran iç Parquet sıkıştırma mekanizmasını kullanarak bunları ayrı ayrı okumanızı sağlayın. Sıkıştırma mekanizmasının kullanımını doğrulamak için dosyaların şu şekilde adlandırılıp adlandırılmadığını denetleyin: <filename>.gz.parquet veya< filename.snappy.parquet>,< filename>.parquet.gz.

Bölümleme

Sorgunun ilgisiz yolları atlamasını sağlayan "klasör" bölümlerini kullanarak verilerinizi düzenleyin. Bölümleme planlarken, sorgularınızda zaman damgası veya kiracı kimliği gibi dosya boyutunu ve yaygın filtreleri göz önünde bulundurun.

VM boyutu

Daha fazla çekirdek ve daha yüksek ağ aktarım hızına sahip VM SKU'larını seçin (bellek daha az önemlidir). Daha fazla bilgi için bkz. Azure Veri Gezgini kümeniz için doğru VM SKU'su seçme.