Kom igång med U-SQL-katalogen i Azure Data Lake Analytics

Viktigt

Azure Data Lake Analytics drog sig tillbaka den 29 februari 2024. Läs mer med det här meddelandet.

För dataanalys kan din organisation använda Azure Synapse Analytics eller Microsoft Fabric.

Skapa en TVF

I det tidigare U-SQL-skriptet upprepade du användningen av EXTRACT för att läsa från samma källfil. Med funktionen U-SQL table-valued (TVF) kan du kapsla in data för framtida återanvändning.

Följande skript skapar en TVF som heter Searchlog() i standarddatabasen och schemat:

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;

Följande skript visar hur du använder DEN TVF som definierades i föregående skript:

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

Skapa vyer

Om du har ett enda frågeuttryck kan du i stället för en TVF använda en U-SQL VIEW för att kapsla in uttrycket.

Följande skript skapar en vy som heter SearchlogView i standarddatabasen och schemat:

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

Följande skript visar användningen av den definierade vyn:

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

Skapa tabeller

Precis som med relationsdatabastabeller kan du med U-SQL skapa en tabell med ett fördefinierat schema eller skapa en tabell som härleder schemat från frågan som fyller i tabellen (även kallat CREATE TABLE AS SELECT eller CTAS).

Skapa en databas och två tabeller med hjälp av följande skript:

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

Frågetabeller

Du kan köra frågor mot tabeller, till exempel de som skapades i föregående skript, på samma sätt som du kör frågor mot datafilerna. I stället för att skapa en raduppsättning med hjälp av EXTRACT kan du nu referera till tabellnamnet.

Om du vill läsa från tabellerna ändrar du det transformeringsskript som du använde tidigare:

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

Anteckning

För närvarande kan du inte köra en SELECT på en tabell i samma skript som den där du skapade tabellen.

Nästa steg