【问题标题】:U-SQL + Pandas Merge_asofU-SQL + Pandas Merge_asof
【发布时间】:2018-09-18 01:19:30
【问题描述】:

我是第一次使用 Azure Data Lake Analytics,我不确定如何像在 python 中使用 pandas 那样合并 2 个数据集。

我正在合并两个具有不同时间戳的数据集,但如果它们在特定时间跨度内,我需要将它们排列起来。这在 python 中是直截了当的。

示例 python 代码:pandas.merge_asof(trades, quotes, on='time', by='ticker', tolerance=pd.Timedelta('2ms'))

完整的例子可以在这里找到:click here

似乎我可以在我的脚本中使用 python,但是我不确定如何将两个数据集放入 python 函数中来执行此合并。

【问题讨论】:

    标签: python pandas azure-data-lake u-sql


    【解决方案1】:

    有几种方法可以做到这一点。使用 Python,您可以使用 Python reducer 从 U-SQL 转到 Python。要在 ADL 中本地运行 Python,您需要执行一些操作 additional steps。

    但是我建议在 U-SQL 中执行此操作。一种快速的方法是创建一个rounded DateTime column,然后对其进行内部连接:

    @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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2022-11-01
      • 2021-06-24
      • 2018-07-17
      相关资源
      最近更新 更多