gpt4 book ai didi

azure - 时间序列的注意事项

转载 作者:行者123 更新时间:2023-12-04 02:05:54 25 4
gpt4 key购买 nike

我们正在考虑将 Azure 表存储 (ATS) 与 Deedle(或具有类似功能的其他库)一起使用来进行时间序列存储、操作和计算。据我所知,F# 似乎也是数组操作的不错选择。

我们的出发点是一组能源消耗的时间序列。该系列要么是一个间隔内的消耗(固定或不规则间隔),要么是一个计数器(从中我们可以计算从一个读数到下一个读数的消耗)。由于数据点只是一个标签(用作分区键)、时间戳(行键)和值,因此这应该非常适合 ATS。

从用户的角度来看,他们希望对给定周期和分辨率的序列进行计算,例如对于给定年份,以月度分辨率计算第三个系列作为其他两个系列之间的差异。

这引发了一些问题:

  • ATS 与 F# 结合起来足够快吗?如果我们有 10,000 个数据点呢? 100.000?与 C# 相比?
  • 重新采样需要计算系列时间戳之间的点。我还没有看到任何(线性)插值的 Deedle 示例,但我认为这只是传递一个可以查看必要数据点的函数?这对于我们的点数来说足够快吗?
  • 计算将由用户决定,我们必须将其作为配置。到目前为止,我最好的猜测是采用某种格式的公式,我们可以轻松地将其解析为反向波兰表示法,并特别注意代表系列的标签(即从 ATS 读取,重新采样,然后执行操作)。

任何评论都将受到高度赞赏!

最佳答案

我认为Isaac已经提到了最重要的几点,但由于这个问题涉及到我所涉及的一些事情,我想我还需要补充一些意见!

BigDeedle。正如 Isaac 提到的,我在 BigDeedle 中使用了 Azure 表存储。 。如果您想使用 Deedle API 以交互方式探索数据并在将数据获取到内存中并运行计算之前进行一些过滤和范围限制,这非常有用。 BigDeedle 从可能非常大的外部数据源延迟加载数据。也就是说,如果您最终需要将所有数据加载到内存中,这对您来说可能没什么用。

BigDeedle 中使用的存储模型可能很有用 - 它根据日期对数据进行分区,因此当您想要获取给定日期范围内的值时,它知道要查找哪些分区。根据我的经验,从 ATS 加载数据效果非常好,特别是如果您可以在 Azure 中运行的 MBrace 集群上执行此操作(这就是我的 NDC 演示最终所做的)。

效率。我认为该组合应该适用于 10k 或 100k 数据点 - 无论您是从 F# 还是 C# 执行此操作都没有区别。至于 Deedle,我肯定已经将它用于这种大小的数据集 - 我们“根据需要”优化该库。大多数功能已经相当高效,但可能有一些操作效率不高。如果您在 GitHub 上提出问题,则可以修复此问题。

重采样。有用于线性插值的内置函数(请参阅 here ),但我怀疑您可能需要编写自己的自定义插值。 Deedle 不会向您“隐藏底层数据”,因此这并不太难 - this page 上的最后一个示例显示使用线性插值填充缺失数据的自定义函数。如果您要做这样的事情,则需要将数据存储在内存中(因此 BigDeedle 在这里不是很有用)。

指定计算。我怀疑这是一个单独的问题,但 F# 非常适合特定于领域的语言。我做了一个talk on that at earlier NDC 。一般来说,您可以指定自己的 DSL(并解析它),也可以使用嵌入式 DSL,人们可以在其中编写 F# 的子集。 F# 对两者都有很好的支持。

PS:如果您想获得有关 F#、Deedle 和 Azure 表的更多帮助,请随时与我们联系。我很高兴分享我的经验 - 您应该能够通过我的个人资料找到联系人。

关于azure - 时间序列的注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43467879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com