Я новичок в U-SQL и начал запрашивать файлы.На основании инструкций, которые я видел в документации и здесь о переполнении стека, у меня есть письменный запрос для извлечения метаданных из набора файлов json, как показано ниже.
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
USING Microsoft.Analytics.Samples.Formats.Json;
DECLARE @InputFile string = "/test/{*}.json";
DECLARE @OutputFile string = "/metadata.csv";
@json =
EXTRACT
id string,
date DateTime,
type string,
uri = FILE.URI()
, modified_date = FILE.MODIFIED()
, created_date = FILE.CREATED()
, file_sz = FILE.LENGTH()
FROM
@InputFile
USING new JsonExtractor();
@json2 =
SELECT
uri
modified_date,
created_date,
file_sz
FROM @json;
@json3 =
SELECT DISTINCT uri,
modified_date,
created_date,
file_sz
FROM @json2;
OUTPUT @json3
TO @OutputFile
USING Outputters.Csv(outputHeader:true,quoting:true);
DROP ASSEMBLY [Newtonsoft.Json];
DROP ASSEMBLY [Microsoft.Analytics.Samples.Formats];
Это генерирует необходимые метаданные (я запускаюэто на портале Azure, даже если здесь расположение относительно)
Мои вопросы:
1) Как мы можем использовать значения из столбца (столбца имен файлов) из внутренней таблицы / файлакак список путей к файлам для ввода?
2) Как мы можем добавить новые данные в существующий файл и обновить файл метаданных списком новых файлов.
Мои метаданные выглядят так:
uri created_date modified_date file_sz
/…/abc.json 09-22-2018 09-23-2018 250
/…/del.json 09-24-2018 09-24-2018 126
ОЖИДАЕМЫЙ ВЫХОД (если возможно)
@filespresent =
SELECT uri
FROM @metadata
DECLARE @Inputfile string = @filespresent
Основная цель этого - каждый день получать новый пакет файлов и хочу читать только те файлы, которые были загружены сегодня.
Имя файла не содержит даты, и единственный способ извлечь информацию о дате - это найти внутри файла.Я извлекаю метаданные в отдельном запросе, а затем запускаю основное задание для файлов, выбранных из файла метаданных.
Если есть и другие обходные пути, они также приветствуются.
Любая помощьценится.