U-SQL + Панды Merge_asof - PullRequest
       10

U-SQL + Панды Merge_asof

0 голосов
/ 18 сентября 2018

Я работаю с Azure Data Lake Analytics впервые и не уверен, как объединить 2 набора данных, как это было бы с пандами в python.

Я объединяю два набора данных, которые имеют разные временные метки, но мне нужно выстроить их в ряд, если они находятся в пределах определенного временного интервала. Это прямо в Python.

Пример кода Python: pandas.merge_asof(trades, quotes, on='time', by='ticker', tolerance=pd.Timedelta('2ms'))

Полный пример можно найти здесь: нажмите здесь

Кажется, что я могу использовать python в своем скрипте, однако я не уверен, каким образом я получу два набора данных в функцию python для этого слияния.

1 Ответ

0 голосов
/ 19 сентября 2018

Есть несколько способов сделать это.Используя Python, вы можете использовать редуктор Python для перехода с U-SQL на Python.Для локального запуска Python в ADL вам нужно будет выполнить несколько дополнительных шагов 1004 *.

Однако я бы порекомендовал сделать это в 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;
...