u-sql: загрузка файлов в скрипт u-sql

У меня есть тысячи CSV-файлов, содержащих период с января 2016 года по сегодняшний день. Я хочу загрузить все файлы с 25 ноября 2016 года по 02 января 2017 года.

Я знаю, что могу использовать виртуальный путь, как показано ниже, но не загрузит ли он все мои данные с диска? Мне нужны данные только за указанный выше период. Будет ли добавление запроса @result (с изменением моего периода времени) обеспечивать загрузку в память только тех файлов, которые меня интересуют?

DECLARE @file_set_path2 string = @dir + "{date:yyyy}/{date:MM}/{date:dd}/{date:MM}{date:dd}{date:yyyy}.csv";

@data = 
    EXTRACT vala int, 
            valb long, 
            valc DateTime, 
            date DateTime // virtual file set column
    FROM @file_set_path2
    USING Extractors.Csv();

@result = 
SELECT *
FROM @data
WHERE date > DateTime.Parse("2016-11-24")
AND   date < DateTime.Parse("2017-01-03");


person reachify    schedule 20.06.2017    source источник


Ответы (1)


Если предикат сравнивается со значениями, которые может видеть компилятор (например, константы, константные складные выражения или параметры скрипта), и предикат может быть перемещен (например, вы используете И, а не && в предикате для соединения), тогда оптимизатор будет только коснитесь файлов внутри указанного диапазона. Таким образом, запрос выше должен быть в порядке.

Вы должны получить предупреждение, если предикат не является одним из перечисленных выше.

Если вы не получите это поведение, пожалуйста, дайте мне знать.

person Michael Rys    schedule 20.06.2017