使用 T-SQL 在时间序列数据中前向填充空值的有效方法

2024-02-10

我有一个包含时间序列数据的表,其中大部分为空值,我想用最后一个已知值填充所有空值。

我有一些解决方案,但它们比同等的解决方案慢得多DataFrame.fillna(method='ffill')在 Pandas 中进行操作。

我正在使用的代码/数据的简化版本:

select d.[date], d.[price],
       (select top 1 p.price from price_table p
        where p.price is not null and p.[date] <= p.[date]
        order by p.[date] desc) as ff_price
from price_table d

制作表格

date       price ff_price
---------- ----- --------
2016-07-11 0.79  0.79
2016-07-12 NULL  0.79
2016-07-13 NULL  0.79
2016-07-14 0.69  0.69
2016-07-15 NULL  0.69
...
2016-09-21 0.88  0.88
...

我有超过 1 亿行,所以这需要相当长的时间。


这看起来像是一个“经典”的差距和岛屿问题。Assuming您没有使用 2008 年或更早版本(它们(几乎)完全不受支持)should得到你想要的结果:

WITH CTE AS(
    SELECT [date],
           price,
           COUNT(CASE WHEN price IS NOT NULL THEN 1 END) OVER (ORDER BY [date]
                                                               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Grp
    FROM price_table p)
SELECT [date],
       price,
       MIN(price) OVER (PARTITION BY grp) AS ff_price
FROM CTE;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 T-SQL 在时间序列数据中前向填充空值的有效方法 的相关文章

  • SQL Server - 将行连接到逗号分隔的列表中

    假设我有一个临时表 如下所示 Id Value 1 1 1 2 1 3 2 1 2 2 我希望我的桌子是这样的 Id ValueList 1 1 2 3 2 1 2 所以基本上我需要将我的值分组为逗号分隔的列表 我已经尝试过以下操作 SEL
  • NVARCHAR 变量在Where 子句中不起作用

    在 SQL Server 我想是 2018 我不知道如何判断 中 我的变量不起作用WHERE的条款NVARCHAR 比较应该返回值 但它什么也没返回 如果我只是手动输入声明的文本 它会突然起作用并返回值 没有任何逻辑原因应该有任何不同 类型
  • SQL Server 中高效的字符串后缀搜索?

    我想找到与谓词匹配的所有行MyColumn LIKE FooBar 但通过使用索引查找而不是扫描 一种方法本质上是创建 MyColumn 的反向版本并搜索反向模式 ooF 在该列上 在反向列上有一个常规索引 然而 我不喜欢手动创建这个反向列
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • IIF(...) 不是公认的内置函数

    我正在尝试在 Microsoft SQL Server 2008 R2 中使用它 SET SomeVar SomeOtherVar IIF SomeBool value when true value when false 但我收到一个错误
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 使用存储过程中的 Select 查询将单个变量分配给多行

    我的查询是使用 Select 将单个变量分配给多行 存储过程中的查询 例如 我从 Employee 表中获取 10 个 比如 1 到 10 个员工 ID 声明 id int select id EmpId from Employee sel
  • SQL Server 2008。允许远程连接吗?

    我在 Windows XP Pro 机器上安装了 SQL Server 2000 和 2008 我可以在本地连接到两个数据库实例 从另一个机器 Windows 7 机器 中 我可以连接到第一个机器上的 SQL 2000 实例 但无法使用本地
  • 没有提示指令的直连接中表的顺序是否会影响性能?

    所有基于 SQL 的 RDBMS 10 年前的版本 直接连接查询 没有提示指令 中的表顺序是否会对最佳性能和内存管理产生影响 听说最后一个join应该是最大的表 您的数据库的查询优化器如何处理这种情况 回答你的问题 是的 表的顺序在连接中有
  • SQL Server 错误“隐式转换,因为值的排序规则由于排序规则冲突而无法解析。”

    我在开发存储过程时遇到此错误 无法执行 varchar 值到 varchar 的隐式转换 因为由于排序规则冲突而无法解析该值的排序规则 声明是这样的 Select City COLLATE DATABASE DEFAULT AS Place
  • 可以有一个带有可变列的表吗?

    这可能是一个愚蠢的问题 但这里是 是否可以创建一个能够包含具有可变列数和自定义列名称的行的动态表 我浏览过 EAV 建模 但看起来很沉重 现实生活中的例子可能是这样的 假设我有一个客户登记册 但每个客户可能需要输入不同的信息 根据您要输入的
  • SQL Server 查询中 UNION ALL 与 OR 条件

    我必须根据表上不存在的条件选择一些行 如果我使用如下的 union all 它会在不到 1 秒的时间内执行 SELECT 1 FROM dummyTable WHERE NOT EXISTS SELECT 1 FROM TABLE t WH
  • 如何在 SQL Server 中不循环更新列?

    出于性能角度的考虑 我只需要删除循环并使用一些联接或其他解决方案来更新 Result 表中的数据并获得循环返回的相同结果 标量函数 CREATE FUNCTION MultiplyerScl a INT b INT RETURNS INT
  • 以编程方式读取 SQL Server 查询计划建议的 SQL 特定执行的索引?

    如果我在 SSMS 中运行此命令 set showplan xml on GO exec some procedure arg1 arg2 arg3 GO set showplan xml off GO 我获得查询执行中涉及的完整调用堆栈的
  • 更改表添加列并在同一条件 IF 语句中更新新列

    我正在尝试添加列并在同一 if 语句中更新它 BEGIN TRAN IF NOT EXISTS SELECT 1 FROM sys columns WHERE Name N Code AND Object ID Object ID N Te
  • SSIS 包在 sql server 代理中失败,但在 Visual Studio 中失败。 ODBC 连接

    我有一个 SSIS 包 在 Visual Studio 2010 中运行良好 但作为 SQL Server 的一项作业 它在连接到 ODBC 数据库时失败 该项目使用密码对敏感数据进行加密 这是因为代理服务器不是我的帐户 也恰好是使用连接字
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • 我可以使用 Order by 对存储过程结果进行排序吗?

    简单来说 我有这样的SQL语句 EXEC xp cmdshell tasklist 我们可以使用以下命令对结果进行排序或过滤吗order by or where Thanks 我检查了 jamietre 链接 这是完整的答案 Create
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是

随机推荐

  • python 相当于 R 的 qnorm、qf 和 qchi2

    我需要 python 中某些分布的分位数 在 r 中 可以使用 qf qnorm 和 qchi2 函数来计算这些值 python 中是否有这些 R 函数的等价物 我一直在寻找 scipy 但我没有找到任何东西 相当于Rpnorm 函数是 s
  • 如何在不禁用的情况下禁用用户触摸 UIbarbutton?

    我的工具栏中有一个 UiBarButton 项目 我需要停用用户触摸交互 UiBarButton 没有设置用户交互启用其财产 当我隐藏它时 没有适当的可见性 有人可以告诉我如何在不禁用 UIbarbutton 的情况下禁用它的用户触摸交互吗
  • 尝试在Python中制作JSON Schema验证器来设置默认值

    我正在使用稍微修改过的代码版本JSON 架构常见问题解答 http python jsonschema readthedocs io en latest faq why doesn t my schema that has a defaul
  • Datalog、CLIPS、Prolog

    和很多程序员一样 我在大学里学过 Prolog 但只学了很少的部分 我理解Prolog和Datalog密切相关 但是Datalog更简单 另外 我相信我读到 Datalog 不依赖于逻辑子句的顺序 但我不确定为什么这是优点 CLIPS 据说
  • 使用 VBA 在 PowerPoint 中设置对象的位置

    我使用以下 VBA 行来设置刚刚粘贴到 PowerPoint 中的 Excel 选区的大小 位置 Set Shp PPApp ActivePresentation Slides PPApp ActiveWindow Selection Sl
  • 返回空列表而不是 null

    我想更改当前函数以返回空 JSON 列表 当前它返回nil 这是我当前的代码 func s Service projectsGet c gin Context var projects models Project user getUser
  • 沿轴对张量进行火炬求和

    如何对张量的列求和 torch Size 10 100 gt torch Size 10 最简单和最好的解决方案是使用torch sum 对张量的所有元素求和 torch sum x gives back a scalar 对所有行 即每列
  • 使用 pyparsing 解析嵌套结构

    我正在尝试解析生物序列中位置的特定语法 职位可以采用以下形式 12 a simple position in the sequence 12 34 a complex position as a base 12 and offset 34
  • 递归 SQL 将 CSV 拆分为表行

    在解决了一个不同的问题后 我偶然发现了递归 CTE 从表面上看 这似乎是解决 将 csv 拆分为表行 问题的相当简单的方法 我把这个例子放在一起 DECLARE InputString varchar 255 a b c d e f g h
  • java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.ClassLoadingException

    我使用 spring junit 测试 但在所有测试中都收到此错误消息 因为我更新了 Hibernate Search Hibernate 和 Springframework 在 pom xml 中 我包含了来自 Hibernate 的 c
  • WPF 中某些情况下上下文菜单被剪切

    上下文菜单在不同的 NET Framework 中被截断 查看 ZIP 文件中的图像 有两张截图 一张来自 XP 另一张来自 Win7 我创建了一个简单的 Visual Studio 2010 解决方案来重现我的问题 http www me
  • 在 iOS 13 中连接到 NFCTagReaderSession NFCISO7816Tag 标签并发送命令

    我正在研究 iOS 13 中新提供的 NFCTagReaderSession 我突然连接了会话标签并发送 apdu 命令进行通信 当我调用 connect 属性时 在连接时 发出蜂鸣声 它看起来需要 15 秒才能连接 它会显示一条错误消息
  • Python嵌入

    我想要一个嵌入 Python 解释器和一个小脚本的大型二进制文件 我对整个静态链接 配置和制作以及 GCC 等完全陌生 请问 有人可以向我描述构建此类可执行文件的基本步骤吗 我使用的是 MacOS 10 6 我下载了 Python 3 3
  • Tensorflow 重塑张量

    我正在尝试使用tf nn sparse softmax cross entropy with logits我已遵循用户 Olivier Moindrot 此处 1 的回答 但出现尺寸错误 我正在构建一个分割网络 因此输入图像为 200x20
  • BLOB 如何存储在索引视图中?

    问题 假设我在包含以下内容的表上创建索引视图varbinary max 列 二进制内容是否会被物理复制到索引视图的 B 树中 或者原始字段是否会以某种方式 引用 而无需物理复制其内容 换句话说 如果我在包含 BLOB 的表上创建索引视图 是
  • 将日期时间转换为 24 小时格式

    我从服务器得到的时间就像Jul 27 2011 8 35 29 AM 我想将其转换为yyyy MM dd HH mm ss 我还希望转换后的时间采用 24 小时格式 任何人都可以解决这个问题 我想要得到的输出就像2011 07 27 08
  • 在 Mac OS X 上使用 libpng 编译 C 程序

    我有一个用 C 语言编写的使用 libpng 的小实用程序 在linux下 我只需安装libpng dev并执行 gcc myapp c usr lib libpng so o myapp 在 Mac OS X 中 我安装了 Xcode 工
  • Postgres 从左连接更新

    我是 PostgreSQL 的新手 正在尝试转换来自 SQL Server 的查询 我有一个用户表 其中包括 bUsrActive bUsrAdmin 和 sUsrClientCode 列 如果不存在具有相同 sUsrClientCode
  • 有没有快速的库可以在 Flash 中查找人的眼睛和嘴巴? (动作脚本)

    所以我有实时视频流 上面有 1 一 人 它是黑白的 我需要能够捕捉到这个人的眼睛和嘴巴 方向 至少X Y 状态 至少打开或关闭 那么在这种情况下 有没有快速的库可以在 Flash 中找到人的眼睛和嘴巴呢 纯 Actionscript 或 H
  • 使用 T-SQL 在时间序列数据中前向填充空值的有效方法

    我有一个包含时间序列数据的表 其中大部分为空值 我想用最后一个已知值填充所有空值 我有一些解决方案 但它们比同等的解决方案慢得多DataFrame fillna method ffill 在 Pandas 中进行操作 我正在使用的代码 数据