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;
Другие вопросы по тегам