Начало работы с каталогом U-SQL в Azure Data Lake Analytics
Это важно
Azure Data Lake Analytics вышел из эксплуатации 29 февраля 2024 года. Узнайте больше о в этом объявлении.
Для аналитики данных ваша организация может использовать Azure Synapse Analytics или Microsoft Fabric.
Создайте TVF
В предыдущем скрипте U-SQL вы повторяете использование EXTRACT для чтения из того же исходного файла. С помощью табличной функции U-SQL (TVF) можно инкапсулировать данные для последующего повторного использования.
Следующий скрипт создает TVF с именем Searchlog()
в базе данных и схеме по умолчанию:
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;
В следующем сценарии показано, как использовать TVF, определенный в предыдущем сценарии:
@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();
Создание представлений
Если у вас есть одно выражение запроса, вместо TVF можно использовать U-SQL VIEW для инкапсуляции этого выражения.
Следующий скрипт создает представление с именем 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();
Следующий сценарий демонстрирует использование определенного представления:
@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();
Создание таблиц
Как и в таблицах реляционной базы данных, с помощью U-SQL можно создать таблицу с предопределенной схемой или создать таблицу, которая выводит схему из запроса, который заполняет таблицу (также называется CREATE TABLE AS SELECT или CTAS).
Создайте базу данных и две таблицы с помощью следующего сценария:
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
Таблицы запросов
Таблицы, например созданные в предыдущем скрипте, можно запрашивать так же, как и к файлам данных. Вместо создания набора строк с помощью EXTRACT теперь можно ссылаться на имя таблицы.
Чтобы прочитать из таблиц, измените скрипт преобразования, который использовался ранее:
@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();
Примечание.
В настоящее время вы не можете выполнить SELECT для таблицы в том же сценарии, где вы создали таблицу.