Freigeben über


Erste Schritte mit dem U-SQL-Katalog in Azure Data Lake Analytics

Wichtig

Azure Data Lake Analytics wurde am 29. Februar 2024 eingestellt. Erfahren Sie mehr mit dieser Ankündigung.

Bei Datenanalysen kann Ihre Organisation Azure Synapse Analytics oder Microsoft Fabricverwenden.

Erstellen eines TVF

Im vorherigen U-SQL-Skript haben Sie die Verwendung von EXTRACT wiederholt, um aus derselben Quelldatei zu lesen. Mit der U-SQL-Tabellenwertfunktion (TVF) können Sie die Daten für die zukünftige Wiederverwendung kapseln.

Das folgende Skript erstellt einen TVF namens Searchlog() in der Standarddatenbank und im Standardschema:

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;

Das folgende Skript zeigt Ihnen, wie Sie das TVF verwenden, das im vorherigen Skript definiert wurde:

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

Ansichten erstellen

Wenn Sie über einen einzelnen Abfrageausdruck verfügen, können Sie anstelle eines TVF eine U-SQL-ANSICHT verwenden, um diesen Ausdruck zu kapseln.

Das folgende Skript erstellt eine Ansicht namens SearchlogView in der Standarddatenbank und im Standardschema:

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

Das folgende Skript veranschaulicht die Verwendung der definierten Ansicht:

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

Tabellen erstellen

Wie bei relationalen Datenbanktabellen können Sie mit U-SQL eine Tabelle mit einem vordefinierten Schema erstellen oder eine Tabelle erstellen, die das Schema aus der Abfrage ableiten kann, die die Tabelle auffüllt (auch als CREATE TABLE AS SELECT oder CTAS bezeichnet).

Erstellen Sie eine Datenbank und zwei Tabellen mithilfe des folgenden Skripts:

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

Abfragetabellen

Sie können Tabellen, z. B. die im vorherigen Skript erstellten, auf die gleiche Weise abfragen, wie Sie die Datendateien abfragen. Anstatt ein Rowset mithilfe von EXTRACT zu erstellen, können Sie jetzt auf den Tabellennamen verweisen.

Um aus den Tabellen zu lesen, ändern Sie das zuvor verwendete Transformationsskript:

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

Hinweis

Derzeit können Sie eine SELECT-Datei nicht in einer Tabelle im selben Skript ausführen wie die Tabelle, in der Sie die Tabelle erstellt haben.

Nächste Schritte