Mulai menggunakan U-SQL di Data Lake Analytics

Penting

Azure Data Lake Analytics pensiun pada 29 Februari 2024. Pelajari lebih lanjut dengan pengumuman ini.

Untuk analitik data, organisasi Anda dapat menggunakan Azure Synapse Analytics atau Microsoft Fabric.

Membuat TVF

Dalam skrip U-SQL sebelumnya, Anda mengulangi penggunaan EXTRACT untuk membaca dari file sumber yang sama. Dengan fungsi bernilai tabel (TVF) U-SQL, Anda dapat merangkum data untuk digunakan kembali di masa mendatang.

Skrip berikut membuat TVF yang disebut Searchlog() dalam database dan skema default:

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;

Skrip berikut menunjukkan kepada Anda cara menggunakan TVF yang ditentukan dalam skrip sebelumnya:

@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();

Membuat tampilan

Jika Anda memiliki ekspresi kueri tunggal, alih-alih TVF, Anda dapat menggunakan TAMPILAN U-SQL untuk merangkum ekspresi tersebut.

Skrip berikut membuat tampilan yang disebut SearchlogView dalam database dan skema default:

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();

Skrip berikut menunjukkan penggunaan tampilan yang ditentukan:

@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();

Membuat tabel

Seperti halnya tabel database hubungan, dengan U-SQL Anda bisa membuat tabel dengan skema yang sudah ditentukan sebelumnya atau membuat tabel yang menyimpulkan skema dari kueri yang mengisi tabel (juga dikenal sebagai CREATE TABLE AS SELECT atau CTAS).

Membuat database dan dua tabel dengan menggunakan skrip berikut ini:

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

Kueri tabel

Anda bisa mengueri tabel, seperti yang dibuat di skrip sebelumnya, dengan cara yang sama seperti Anda mengueri file data. Alih-alih membuat set baris dengan menggunakan EXTRACT, Anda sekarang dapat merujuk ke nama tabel.

Untuk membaca dari tabel, ubah skrip transformasi yang Anda gunakan sebelumnya:

@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();

Catatan

Saat ini, Anda tidak dapat menjalankan SELECT pada tabel dalam skrip yang sama dengan tabel tempat Anda membuat tabel.

Langkah berikutnya