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.

Sonraki Adımlar