Azure Data Lake Analytics'de U-SQL Kataloğu'nu kullanmaya başlama
Önemli
Azure Data Lake Analytics 29 Şubat 2024'te kullanımdan kaldırıldı. Bu duyuru ile daha fazla bilgi edinin.
Veri analizi için kuruluşunuz Azure Synapse Analytics veya Microsoft Fabric kullanabilir.
TVF oluşturma
Önceki U-SQL betiğinde, aynı kaynak dosyadan okumak için EXTRACT kullanımını tekrarlamıştınız. U-SQL tablo değerli işlevi (TVF) ile verileri gelecekte yeniden kullanmak üzere kapsülleyebilirsiniz.
Aşağıdaki betik, varsayılan veritabanı ve şemada adlı Searchlog()
bir TVF oluşturur:
DROP FUNCTION IF EXISTS Searchlog;
CREATE FUNCTION Searchlog()
RETURNS @searchlog TABLE
(
UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
)
AS BEGIN
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
RETURN;
END;
Aşağıdaki betikte, önceki betikte tanımlanan TVF'nin nasıl kullanılacağı gösterilmektedir:
@res =
SELECT
Region,
SUM(Duration) AS TotalDuration
FROM Searchlog() AS S
GROUP BY Region
HAVING SUM(Duration) > 200;
OUTPUT @res
TO "/output/SearchLog-use-tvf.csv"
ORDER BY TotalDuration DESC
USING Outputters.Csv();
Görünümler oluşturma
Tek bir sorgu ifadeniz varsa, TVF yerine U-SQL VIEW kullanarak bu ifadeyi kapsülleyebilirsiniz.
Aşağıdaki betik, varsayılan veritabanında ve şemada adlı SearchlogView
bir görünüm oluşturur:
DROP VIEW IF EXISTS SearchlogView;
CREATE VIEW SearchlogView AS
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
Aşağıdaki betik, tanımlı görünümün kullanımını gösterir:
@res =
SELECT
Region,
SUM(Duration) AS TotalDuration
FROM SearchlogView
GROUP BY Region
HAVING SUM(Duration) > 200;
OUTPUT @res
TO "/output/Searchlog-use-view.csv"
ORDER BY TotalDuration DESC
USING Outputters.Csv();
Tablo oluşturma
İlişkisel veritabanı tablolarında olduğu gibi, U-SQL ile önceden tanımlanmış bir şemaya sahip bir tablo oluşturabilir veya tabloyu dolduran sorgudan şemayı çıkarsayan bir tablo oluşturabilirsiniz (CREATE TABLE AS SELECT veya CTAS olarak da bilinir).
Aşağıdaki betiği kullanarak bir veritabanı ve iki tablo oluşturun:
DROP DATABASE IF EXISTS SearchLogDb;
CREATE DATABASE SearchLogDb;
USE DATABASE SearchLogDb;
DROP TABLE IF EXISTS SearchLog1;
DROP TABLE IF EXISTS SearchLog2;
CREATE TABLE SearchLog1 (
UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string,
INDEX sl_idx CLUSTERED (UserId ASC)
DISTRIBUTED BY HASH (UserId)
);
INSERT INTO SearchLog1 SELECT * FROM master.dbo.Searchlog() AS s;
CREATE TABLE SearchLog2(
INDEX sl_idx CLUSTERED (UserId ASC)
DISTRIBUTED BY HASH (UserId)
) AS SELECT * FROM master.dbo.Searchlog() AS S; // You can use EXTRACT or SELECT here
Sorgu tabloları
Önceki betikte oluşturulanlar gibi tabloları, veri dosyalarını sorguladığınız şekilde sorgulayabilirsiniz. EXTRACT kullanarak satır kümesi oluşturmak yerine artık tablo adına başvurabilirsiniz.
Tablolardan okumak için daha önce kullandığınız dönüştürme betiğini değiştirin:
@rs1 =
SELECT
Region,
SUM(Duration) AS TotalDuration
FROM SearchLogDb.dbo.SearchLog2
GROUP BY Region;
@res =
SELECT *
FROM @rs1
ORDER BY TotalDuration DESC
FETCH 5 ROWS;
OUTPUT @res
TO "/output/Searchlog-query-table.csv"
ORDER BY TotalDuration DESC
USING Outputters.Csv();
Not
Şu anda, tabloyu oluşturduğunuz tabloyla aynı betikteki bir tabloda SELECT çalıştıramazsınız.