Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Azure Data Lake Analytics is op 29 februari 2024 buiten gebruik gesteld. Kom meer te weten over via deze aankondiging.
Voor gegevensanalyse kan uw organisatie gebruikmaken van Azure Synapse Analytics- of Microsoft Fabric-.
Een TVF maken
In het vorige U-SQL-script hebt u het gebruik van EXTRACT herhaald om uit hetzelfde bronbestand te lezen. Met de U-SQL-functie met tabelwaarde (TVF) kunt u de gegevens inkapselen voor toekomstig hergebruik.
Met het volgende script maakt u een TVF met de naam Searchlog() in de standaarddatabase en het standaardschema:
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;
In het volgende script ziet u hoe u de TVF gebruikt die in het vorige script is gedefinieerd:
@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();
Weergaven maken
Als u één query-expressie hebt, kunt u in plaats van een TVF een U-SQL VIEW gebruiken om die expressie in te kapselen.
Met het volgende script maakt u een weergave met de naam SearchlogView in de standaarddatabase en het standaardschema:
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();
Het volgende script laat het gebruik van de gedefinieerde weergave zien:
@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 maken
Net als bij relationele databasetabellen kunt u met U-SQL een tabel maken met een vooraf gedefinieerd schema of een tabel maken waarmee het schema wordt afgeleid van de query die de tabel vult (ook wel CREATE TABLE AS SELECT of CTAS genoemd).
Maak een database en twee tabellen met behulp van het volgende script:
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
Query uitvoeren op tabellen
U kunt query's uitvoeren op tabellen, zoals tabellen die in het vorige script zijn gemaakt, op dezelfde manier als u query's uitvoert op de gegevensbestanden. In plaats van een rijset te maken met BEHULP van EXTRACT, kunt u nu verwijzen naar de tabelnaam.
Als u wilt lezen uit de tabellen, wijzigt u het transformatiescript dat u eerder hebt gebruikt:
@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();
Notitie
Op dit moment kunt u een SELECT niet uitvoeren op een tabel in hetzelfde script als het script waarin u de tabel hebt gemaakt.