如何在 Tibco Spotfire 中解析 FIX 消息并将其拆分为列?

问题描述 投票:0回答:1

我正在使用 Tibco Spotfire 中的一个表,其中包含以字符串形式存储在单列中的 FIX(财务信息交换)消息。

我需要将此列拆分为多个新列,其中每列代表一个 FIX 标记及其对应的值。

FIX消息的格式如下:

tag number + "=" + value + special character ""

有人有任何在 Spotfire 中实现此目标的技巧或解决方案吗?

谢谢!

修复消息示例:

8=FIX.4.49=5935=034=51349=TEST52=20240920-14:46:02.37456=TEST10=181

使用不可打印的特殊字符 SOH 进行打印:

enter image description here

enter image description here

spotfire fix-protocol
1个回答
0
投票

如果您的数据具有一致的格式并且 FIX 数据中存在标签,您可以通过手动创建计算列将数据拆分为列。手动不太理想,但至少你只需要做一次。

例如,名称为“8”的计算列可以是:

Split(Split([fix_column],'\u0001',1),'=',2)

字符串 '\u0001' 用于分割 SOH 特殊字符上的文本。

只要标签 8 处于第一个位置,就可以工作。

如果标签数量或标签位置可变,那么更通用的解决方案是使用 python 数据函数。传入修复列作为参数并将结果放入新表中

import pandas as pd
r = []

for i, row in fix_col.items():
    tags = row.split('\u0001')
    tags = [tag for tag in tags if '=' in tag]
    for tag_value in tags:
        tag, value = tag_value.split('=')
        r.append([i, tag, value])
df_out = pd.DataFrame(r,columns=['row_index', 'tag_number', 'tag_value']).pivot(index='row_index',columns='tag_number',values='tag_value').reset_index()

这应该给你一个像这样的桌子 example output table with FIX tags

如果这是一次性的事情,您可能还想查看 Spotfire 文本到列工具

© www.soinside.com 2019 - 2024. All rights reserved.