U-SQL + Pandas Merge_asof
Я впервые работаю с Azure Data Lake Analytics и не уверен, как объединить 2 набора данных, как это было бы с пандами в python.
Я объединяю два набора данных, которые имеют разные временные метки, но мне нужно выстроить их в ряд, если они находятся в пределах определенного временного интервала. Это прямо в питоне.
Пример кода Python: pandas.merge_asof(trades, quotes, on='time', by='ticker', tolerance=pd.Timedelta('2ms'))
Полный пример можно найти здесь: нажмите здесь
Кажется, что я могу использовать python в своем скрипте, однако я не уверен, как бы я получил два набора данных в функцию python для этого слияния.
1 ответ
Есть несколько способов сделать это. Используя Python, вы можете использовать редуктор Python для перехода с U-SQL на Python. Чтобы запустить Python локально в ADL, вам нужно будет сделать несколько дополнительных шагов.
Однако я бы порекомендовал сделать это в U-SQL. Быстрый способ сделать это - создать округленный столбец DateTime, а затем выполнить внутреннее объединение:
@trades =
SELECT *,
// round up to nearest 2ms:
new DateTime((time.Ticks + TimeSpan.FromMilliseconds(2).Ticks - 1) / TimeSpan.FromMilliseconds(2).Ticks * TimeSpan.FromMilliseconds(2).Ticks, time.Kind) AS RoundedTimeA
FROM @trades;
@quotes =
SELECT *,
// round up to nearest 2ms:
new DateTime((time.Ticks + TimeSpan.FromMilliseconds(2).Ticks - 1) / TimeSpan.FromMilliseconds(2).Ticks * TimeSpan.FromMilliseconds(2).Ticks, time.Kind) AS RoundedTimeB
FROM @quotes;
@result =
SELECT *
FROM @trades AS A INNER JOIN @quotes AS B ON
A.RoundedTimeA == B.RoundedTimeB;