Introdução ao Catálogo U-SQL no Azure Data Lake Analytics
Importante
O Azure Data Lake Analytics descontinuado a 29 de fevereiro de 2024. Saiba mais com este anúncio.
Para análise de dados, a sua organização pode utilizar o Azure Synapse Analytics ou o Microsoft Fabric.
Criar uma TVF
No script U-SQL anterior, repetiu a utilização de EXTRACT para ler a partir do mesmo ficheiro de origem. Com a função de valor de tabela U-SQL (TVF), pode encapsular os dados para reutilização futura.
O script seguinte cria uma TVF chamada Searchlog()
na base de dados e no esquema predefinidos:
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;
O script seguinte mostra-lhe como utilizar a TVF que foi definida no script anterior:
@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();
Criar vistas
Se tiver uma única expressão de consulta, em vez de uma TVF, pode utilizar uma VISTA U-SQL para encapsular essa expressão.
O script seguinte cria uma vista denominada SearchlogView
na base de dados e no esquema predefinidos:
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();
O script seguinte demonstra a utilização da vista definida:
@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();
Criar tabelas
Tal como acontece com as tabelas de bases de dados relacionais, com o U-SQL, pode criar uma tabela com um esquema predefinido ou criar uma tabela que infera o esquema da consulta que preenche a tabela (também conhecida como CREATE TABLE AS SELECT ou CTAS).
Crie uma base de dados e duas tabelas com o seguinte 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
Consulta tabelas
Pode consultar tabelas, como as criadas no script anterior, da mesma forma que consulta os ficheiros de dados. Em vez de criar um conjunto de linhas com EXTRACT, pode agora referir-se ao nome da tabela.
Para ler a partir das tabelas, modifique o script de transformação que utilizou anteriormente:
@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();
Nota
Atualmente, não pode executar um SELECT numa tabela no mesmo script que aquele em que criou a tabela.