在我的研究中,我们使用的是(fix5.0sp2)协议格式和(cme数据挖掘)数据。但是我在为这些数据创建表(嵌套表)时遇到了问题。例如,基本消息格式由msg#1给出,从(^a1128)开始,到(^a10)结束。现在,对于msg#2,我们有相同的基本消息,从(^a1128)开始,有多个消息从(^a1023)开始,到(^a346)结束。
MSG#1 MSG#2
---------------------------------------------------------------------
^A1128=9 ^A1128=9
^A9=136 ^A9=1417
^A35=X ^A35=X
^A49=CME ^A49=CME
^A34=578 ^A34=731
^A52=20130714180133577 ^A52=20130714190005961
^A75=20130715 ^A75=20130710
^A268=1 ^A268=15
^A279=0 ^A279=0
^A22=8 ^A22=8
^A48=111473 ^A48=28112
^A64=20130712 ^A83=2
^A83=1 ^A107=ESZ3
^A107=ESU4 ^A269=0
^A269=6 ^A270=166000
^A270=164350 ^A271=1
^A273=180133000 ^A273=190005000
^A10=248 ^A336=0
^A346=1
^A1023=1
^A279=0
^A22=8
^A48=28112
^A83=3
^A107=ESZ3
^A269=0
^A270=165675
^A271=1
^A273=190005000
^A336=0
^A346=1
... ... ... ...
^A1023=5
^A10=029
数据以不带空格的行序列出现,并且在消息的末尾有一个(\n)字符。像这样的事,
^A1128=9^A9=157^A35=X^A49=CME^A34=406238^A52=20130715123719934^A75=20130715^A268=1^A279=1^A22=8^A48=28112^A83=49004^A107=ESZ3^A269=1^A270=166775^A271=186^A273=123719000^A336=2^A346=3^A1023=1^A10=210^A
下面是我用来在配置单元中创建表但没有成功的代码。
CREATE EXTERNAL TABLE fix_map
(tag MAP<INT, STRING>)
ROW FORMAT DELIMITED
COLLECTION ITEMS TERMINATED BY '1'
FIELDS TERMINATED BY '2'
MAP KEYS TERMINATED BY '='
LOCATION '/user/data/';
如有任何建议,将不胜感激。
1条答案
按热度按时间eqzww0vc1#
我没有找到这个问题的具体答案我用了不同的方法来解决这个问题。第一种解决方案是创建两个不同的表,一个用于主部件,另一个用于嵌套部件,然后连接两个表。我使用以下代码创建第一个表:
另一种方法是使用(sungard实验室)的fis2json(npm)工具,这个家伙创建了一个很好的工具来解码fix到json格式(fix2json)。解码数据后,您将有更多的工具来处理嵌套表,fi2json解码器也会将所有标记更改为正确的名称!下面是fix2json输出的一个示例。