Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Azure Data Lake Analytics 29 Şubat 2024'te kullanımdan kaldırıldı. Bu duyuruyla daha fazla bilgi edinin.
Veri analizi için kuruluşunuz Azure Synapse Analytics veya Microsoft Fabric kullanabilir.
U-SQL, verileri herhangi bir ölçekte işlemenize olanak sağlamak için bildirim temelli SQL'i kesin C# ile birleştiren bir dildir. U-SQL'in ölçeklenebilir, dağıtılmış sorgu özelliği sayesinde Azure SQL Veritabanı gibi ilişkisel depolarda verileri verimli bir şekilde analiz edebilirsiniz. U-SQL ile, okuma işlemine şema uygulayarak ve özel mantık ve UDF'ler ekleyerek yapılandırılmamış verileri işleyebilirsiniz. Ayrıca U-SQL, büyük ölçekte yürütme konusunda ayrıntılı denetim sağlayan genişletilebilirlik içerir.
Öğrenme kaynakları
- U-SQL Eğitimi, U-SQL dilinin büyük kısmına dair kılavuzlu bir inceleme sağlar. Bu belgenin U-SQL öğrenmek isteyen tüm geliştiriciler için okunması önerilir.
- U-SQL dil söz dizimi hakkında ayrıntılı bilgi için bkz. U-SQL Dil Başvurusu.
- U-SQL tasarım felsefesini anlamak için Büyük Veri İşlemeyi Kolaylaştıran Bir Dil olan U-SQL'e Giriş adlı Visual Studio blog gönderisine bakın.
Şimdi biraz veri oluşturalım
Aşağıdaki U-SQL betiği basittir ve diğer U-SQL betiklerimizde başvurabileceğiniz bir örnek veri dosyası oluşturmamıza olanak tanır. Sonraki bölümde bu betiğin çalışmasını sağlayan temel kavramları ele alacağız.
USE DATABASE master;
USE SCHEMA dbo;
@a =
SELECT * FROM
(VALUES
(399266, "2/15/2012 11:53:16 AM", "en-us", "microsoft", 73, "microsoft.com;xbox.com", "NULL"),
(382045, "2/15/2012 11:53:18 AM", "en-gb", "azure data lake analytics", 614, "microsoft.com;portal.azure.com", "portal.azure.com"),
(382045, "2/16/2012 11:53:20 AM", "en-gb", "usql", 74, "microsoft.com;github.com", "NULL"),
(106479, "2/16/2012 11:53:50 AM", "en-ca", "xbox", 24, "xbox.com;xbox.com/xbox360", "xbox.com/xbox360"),
(906441, "2/16/2012 11:54:01 AM", "en-us", "machine learning", 1213, "microsoft.com;github.com", "NULL"),
(304305, "2/16/2012 11:54:03 AM", "en-us", "outlook", 60, "microsoft.com;office.com;live.com","microsoft.com"),
(460748, "2/16/2012 11:54:04 AM", "en-us", "azure storage", 1270, "microsoft.com;portal.azure.com", "portal.azure.com"),
(354841, "2/16/2012 11:59:01 AM", "en-us", "azure", 610, "microsoft.com;portal.azure.com", "portal.azure.com"),
(354068, "2/16/2012 12:00:33 PM", "en-mx", "key vault", 422, "microsoft.com;portal.azure.com", "portal.azure.com"),
(347413, "2/16/2012 12:11:55 PM", "en-gr", "github", 305, "github.com", "NULL"),
(840614, "2/16/2012 12:13:56 PM", "en-us", "surface", 1220, "microsoft.com", "NULL"),
(656666, "2/16/2012 12:15:55 PM", "en-us", "visual studio", 691, "microsoft.com;code.visualstudio.com", "NULL"),
(951513, "2/16/2012 12:17:00 PM", "en-us", "power bi", 63, "microsoft.com;app.powerbi.com", "powerbi.com"),
(350350, "2/16/2012 12:18:17 PM", "en-us", "data factory", 30, "microsoft.com;portal.azure.com", "NULL"),
(641615, "2/16/2012 12:19:55 PM", "en-us", "event hubs", 119, "microsoft.com;portal.azure.com", "NULL")
) AS
D( UserId, Start, Region, Query, Duration, Urls, ClickedUrls );
OUTPUT @a
TO "Samples/Data/SearchLog.tsv"
USING Outputters.Tsv();
Dosyadan veri okuma
Artık bazı verilerimiz olduğuna göre, oluşturduğumuz dosyadan okuyalım.
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
OUTPUT @searchlog
TO "/output/SearchLog-first-u-sql.csv"
USING Outputters.Csv();
Bu betikte dönüştürme adımı yoktur. adlı SearchLog.tsvkaynak dosyadan okur, şema oluşturur ve satır kümesini SearchLog-first-u-sql.csvadlı bir dosyaya geri yazar.
Alandaki veri türünün yanındaki soru işaretine Duration dikkat edin. Bu, Duration alanın null olabileceği anlamına gelir.
Temel kavramlar
-
Satır kümesi değişkenleri: Satır kümesi oluşturan her sorgu ifadesi bir değişkene atanabilir. U-SQL, betikteki T-SQL değişken adlandırma desenini (
@searchlogörneğin) izler. -
EXTRACT anahtar sözcüğü bir dosyadaki verileri okur ve okumada şemayı tanımlar.
Extractors.Tsv, sekmeyle ayrılmış değer dosyaları için yerleşik bir U-SQL ayıklayıcısıdır. Özel ayıklayıcılar geliştirebilirsiniz. -
OUTPUT, verileri bir satır kümesinden bir dosyaya yazar.
Outputters.Csv(), virgülle ayrılmış değer dosyası oluşturmak için kullanılan yerleşik bir U-SQL çıkışlayıcısıdır. Özel çıkışlayıcılar geliştirebilirsiniz.
Dosya yolları
EXTRACT ve OUTPUT deyimleri dosya yollarını kullanır. Dosya yolları mutlak veya göreli olabilir:
Aşağıdaki mutlak dosya yolu, mystore adlı bir Data Lake Store'daki bir dosyaya başvurur:
adl://mystore.azuredatalakestore.net/Samples/Data/SearchLog.tsv
Aşağıdaki dosya yolu "/" ile başlar. Varsayılan Data Lake Store hesabındaki bir dosyaya başvurur:
/output/SearchLog-first-u-sql.csv
Skaler değişkenleri kullanma
Skaler değişkenleri, betik bakımınızı kolaylaştırmak için de kullanabilirsiniz. Önceki U-SQL betiği de şu şekilde yazılabilir:
DECLARE @in string = "/Samples/Data/SearchLog.tsv";
DECLARE @out string = "/output/SearchLog-scalar-variables.csv";
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM @in
USING Extractors.Tsv();
OUTPUT @searchlog
TO @out
USING Outputters.Csv();
Satır kümelerini dönüştürme
Satır kümelerini dönüştürmek için SELECT kullanın. Bu betik Başlangıç, Bölge ve Süre sütunlarını seçer ve Region değeri "en-gb" olduğunda bu satırları bir dosyaya yazar:
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
@rs1 =
SELECT Start, Region, Duration
FROM @searchlog
WHERE Region == "en-gb";
OUTPUT @rs1
TO "/output/SearchLog-transform-rowsets.csv"
USING Outputters.Csv();
WHERE yan tümcesi bir C# Boole ifadesi kullanır. Kendi ifadelerinizi ve işlevlerinizi yapmak için C# ifade dilini kullanabilirsiniz. Hatta bunları mantıksal bağlaçlar (AND) ve disjunctions (OR) ile birleştirerek daha karmaşık filtreleme gerçekleştirebilirsiniz.
Aşağıdaki betik DateTime.Parse() yöntemini ve bağlacını kullanır. Başlangıç, Bölge ve Süre adlarına sahip sütunlar arasında, Bölge'nin değeri "en-gb"dır. Ardından, belirli tarihler arasındaki Süre sütununun değerlerini denetler ve bu değerleri bir dosyaya yazar:
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
@rs1 =
SELECT Start, Region, Duration
FROM @searchlog
WHERE Region == "en-gb";
@rs1 =
SELECT Start, Region, Duration
FROM @rs1
WHERE Start >= DateTime.Parse("2012/02/16") AND Start <= DateTime.Parse("2012/02/17");
OUTPUT @rs1
TO "/output/SearchLog-transform-datetime.csv"
USING Outputters.Csv();
Uyarı
İkinci sorgu, iki filtrenin bileşimini oluşturan ilk satır kümesinin sonucu üzerinde çalışır. Ayrıca bir değişken adını yeniden kullanabilirsiniz ve adların kapsamı sözcük temelli olarak belirlenmiştir.
Satır kümelerini toplama
U-SQL size alışılan ORDER BY, GROUP BY ve toplamaları sağlar.
Aşağıdaki sorgu, bölge başına toplam süreyi bulur ve ardından ilk beş süreyi sırayla görüntüler.
U-SQL satır kümeleri bir sonraki sorgu için sıralarını korumaz. Bu nedenle, bir çıktıyı sıralamak için OUTPUT deyimine ORDER BY eklemeniz gerekir:
DECLARE @outpref string = "/output/Searchlog-aggregation";
DECLARE @out1 string = @outpref+"_agg.csv";
DECLARE @out2 string = @outpref+"_top5agg.csv";
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
@rs1 =
SELECT
Region,
SUM(Duration) AS TotalDuration
FROM @searchlog
GROUP BY Region;
@res =
SELECT *
FROM @rs1
ORDER BY TotalDuration DESC
FETCH 5 ROWS;
OUTPUT @rs1
TO @out1
ORDER BY TotalDuration DESC
USING Outputters.Csv();
OUTPUT @res
TO @out2
ORDER BY TotalDuration DESC
USING Outputters.Csv();
U-SQL ORDER BY yan tümcesi, bir SELECT ifadesinde FETCH yan tümcesinin kullanılmasını gerektirir.
U-SQL HAVING yan tümcesi, çıkışı HAVING koşulunu karşılayan gruplarda kısıtlamak için kullanılabilir:
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
@res =
SELECT
Region,
SUM(Duration) AS TotalDuration
FROM @searchlog
GROUP BY Region
HAVING SUM(Duration) > 200;
OUTPUT @res
TO "/output/Searchlog-having.csv"
ORDER BY TotalDuration DESC
USING Outputters.Csv();
Gelişmiş toplama senaryoları için toplama, analiz ve başvuru işlevleri için U-SQL başvuru belgelerine bakın.