用sql解析通达信二进制day文件,得到历史股价数据

本文介绍了如何利用Spark SQL解析炒股软件通达信的二进制day文件,获取历史股价数据。通过创建自定义UDF,将二进制数据按特定格式转换为可读格式,包括切割、反转字节顺序、转化为十进制等步骤,最终成功提取日期、开盘价、最高价、最低价、收盘价、成交额和成交量等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

炒股软件通达信把日k线存放在vipdoc\sz\lday下面。sz表示深圳交易所的证券。sz000002.day表示万科的日k线数据,它是二进制的,不能直接阅读,需要一个解析的规则。网络上有一些用python的struct库解析的方法,这里尝试用spark sql来解析。

先看一下二进制文件长啥样:

val df = spark.read.format("binaryFile").load("C:/zd_xdzq/vipdoc/sz/lday/sz000002.day")
df.select("content").show()

 读出来是字节数组。每32个字节是一天的数据。这32个字节中,1-4是日期,5-8是开盘价,9-12是最高价,13-16是最低价,17-20是收盘价,21-24是成交额,25-28是成交量。

 这个[76 7A 33 01]用python struct解析出来是20150902,用sql

select hex(20150902)

得到的结果是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值