Az U-SQL-katalógus használatának első lépései az Azure Data Lake Analytics

Fontos

Az Azure Data Lake Analytics 2024. február 29-én megszűnt. További információ ezzel a bejelentéssel.

Az adatelemzéshez a szervezet használhatja a Azure Synapse Analyticset vagy a Microsoft Fabricet.

TVF létrehozása

Az előző U-SQL-szkriptben megismételte a EXTRACT használatát ugyanabból a forrásfájlból való olvasáshoz. Az U-SQL table-valued függvény (TVF) segítségével az adatokat a jövőben újra felhasználhatja.

A következő szkript létrehoz egy tvF-et Searchlog() az alapértelmezett adatbázisban és sémában:

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;

Az alábbi szkript bemutatja, hogyan használhatja az előző szkriptben definiált TVF-et:

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

Nézetek létrehozása

Ha egyetlen lekérdezési kifejezéssel rendelkezik, a TVF helyett egy U-SQL VIEW nézetet használhat a kifejezés beágyazásához.

A következő szkript létrehoz egy nevű SearchlogView nézetet az alapértelmezett adatbázisban és sémában:

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 következő szkript a definiált nézet használatát mutatja be:

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

Táblák létrehozása

A relációs adatbázistáblákhoz hasonlóan az U-SQL-ben is létrehozhat egy előre definiált sémával rendelkező táblát, vagy létrehozhat egy táblát, amely a táblát kitöltő lekérdezésből (más néven CREATE TABLE AS SELECT vagy CTAS) következtet a sémára.

Hozzon létre egy adatbázist és két táblát a következő szkripttel:

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

Táblák lekérdezése

Az előző szkriptben létrehozott táblákat ugyanúgy kérdezheti le, mint az adatfájlokat. Ahelyett, hogy a EXTRACT használatával hoz létre sorkészletet, most már hivatkozhat a tábla nevére.

A táblákból való olvasáshoz módosítsa a korábban használt átalakító szkriptet:

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

Megjegyzés

Jelenleg nem futtathat SELECT-et egy olyan táblán, amely ugyanabban a szkriptben van, mint amelyikben létrehozta a táblát.

Következő lépések