Začínáme s katalogem U-SQL v Azure Data Lake Analytics

Důležité

Azure Data Lake Analytics vyřazena 29. února 2024. Další informace najdete v tomto oznámení.

K analýze dat může vaše organizace použít Azure Synapse Analytics nebo Microsoft Fabric.

Vytvoření TVF

V předchozím skriptu U-SQL jste použili příkaz EXTRACT ke čtení ze stejného zdrojového souboru. Pomocí funkce TVF (Table-Valued) U-SQL můžete zapouzdřovat data pro budoucí opakované použití.

Následující skript vytvoří tvf s názvem Searchlog() ve výchozí databázi a schématu:

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;

Následující skript ukazuje, jak použít TVF, který byl definován v předchozím skriptu:

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

Vytváření zobrazení

Pokud máte jeden výraz dotazu, můžete místo TVF použít zobrazení U-SQL k zapouzdření tohoto výrazu.

Následující skript vytvoří ve výchozí databázi a schématu zobrazení s názvem SearchlogView :

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

Následující skript ukazuje použití definovaného zobrazení:

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

Vytváření tabulek

Stejně jako u tabulek relační databáze můžete i v případě U-SQL vytvořit tabulku s předdefinovaným schématem nebo tabulku, která schéma odvodí z dotazu, který tabulku naplní (označuje se také jako CREATE TABLE AS SELECT nebo CTAS).

Vytvořte databázi a dvě tabulky pomocí následujícího skriptu:

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

Dotazy na tabulky

Můžete dotazovat tabulky, například ty, které jste vytvořili v předchozím skriptu, stejným způsobem, jakým se dotazujete na datové soubory. Místo vytváření sady řádků pomocí příkazu EXTRACT teď můžete odkazovat na název tabulky.

Pokud chcete číst z tabulek, upravte transformační skript, který jste použili dříve:

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

Poznámka

V současné době nelze spustit příkaz SELECT pro tabulku ve stejném skriptu jako ten, ve kterém jste tabulku vytvořili.

Další kroky