2016-12-16 3 views
1

Мне нужно загрузить текст из одного файла и выбрать определенные записи из другого, где один из вторых столбцов файла равен тексту, загруженному из первого файла.Использовать строковый текст из файла в запросе u-sql where where (U-SQL)

Я пытаюсь с чем-то вроде этого, но на самом деле это не работает.

@countryName = 
    EXTRACT City string 
    FROM "/TestCatalog/test.txt" 
    USING Extractors.Text(); 

@result = 
    SELECT CityName, 
      Temperature, 
      MeasurmentDate 
    FROM @readEmployee 
    WHERE CityName IN(@countryName); 

Каков наилучший способ передать некоторые параметры, где выражение (прочитанное из другого файла в лазурном озере данных)?

ответ

2

Переменные в U-SQL, которые назначены с помощью EXTRACT или SEELCT, представляют собой ряды, а не скалярные переменные. Поэтому использование SEMIJOIN сделать это, например:

@output = 
    SELECT re.CityName, 
      re.Temperature, 
      re.MeasurmentDate 
    FROM @readEmployee AS re 
      SEMIJOIN @countryName AS c ON re.CityName == c.City; 
+0

Это работает идеально, но, может быть, вы знаете, что я могу сделать, если я хочу выбрать, например, температуру, которая больше, чем первое значение из загруженной строки и ниже, чем второе значение нагруженного ряд. – dawcza94

+0

Можете ли вы предоставить некоторые примеры данных и ожидаемые результаты? Возможно, в качестве отдельного вопроса ... – wBob

+0

В моем txt-файле я хочу поставить две переменные (возможно, дату или некоторый int/double). Затем я хочу использовать это значение для определенного диапазона параметров, таких как температура или измерение. – dawcza94

0

EXTRACT этот другой файл в другой набор строк и присоединяйтесь к обоим наборам строк.