我有一项任务要完成。
有两种类型的csv文件4000+
都相互关联
有两种类型:
1. Country2.csv
2. Security_Name.csv
Country2.csv
的内容:
Company Name;Security Name;;;;Final NOS;Final FFR
Security_Name.csv
的内容:
Date;Close Price;Volume
有多个国家/地区和每个国家/地区有多个安全文件
现在我需要阅读他们做一些 CALCULATION 然后 WRITE 输出另一个文件
阅读
同时读取Country 2.csv和Security.csv文件并从中提取所有数据。
例如:
阅读法国2.csv,摘录Security_Name, Final NOS, Final FFR
然后阅读Security.csv(与Security_Name
匹配)并提取
Date, Close Price, Volume
计算
计算基本上是找到提取值的中位数,这很简单。
例如:
每月中位数交易价值
证券的每日交易价值......等等
写
根据月份,我需要将输出分为两个不同的文件,格式如下:
如果月%3 = 0
以下列格式将其另存为MONTH_NAME.csv:
Security name; 12-month indicator; 3-month indicator; FOT
否则
以下列格式将其另存为MONTH_NAME.csv:
Security Name; Monthly Median Traded Value Ratio; Number of days Volume > 0
我的问题是如何以可维护的方式设计我的应用程序,并且整个执行过程中的数据流是无缝的?
答案 0 :(得分:0)
首先。根据您要生成的数据类型,我可能会考虑尽可能将此数据移动到SQL数据库。这是“一种SQL查询”的东西。并且远比从CSV文件生成CSV文件的C ++更易于维护。
除此之外,我可能会考虑使用datamash
和/或perl
。在Windows平台上,您可以通过Cygwin或WSL执行此操作。可能不太可维护,但更容易,这不是一个问题。
那就是说,如果你正在寻找适度可维护的东西,C ++可以工作。我要做的第一件事就是设计我的输入类。以数据为中心,但它可以工作。听起来你可能有一个Country
类,一个Security
类和一个SecurityClose
类......或者其他类似的东西。您可以考虑一个Security类是否应该包含SecurityClose
es(数据)的集合,或者数据是否应该“松散”并引用它所属的Security
。与Country->安全关系相同。
一旦你决定了所有这些,你想要一些可能tokenize
CSV行的东西(可能是一个功能)。因此"1,2,3"
变为vector<string>
,内容为"1"
"2"
"3"
。然后,每个输入类都应该有一个构造函数或初始值设定项,它接受vector<string>
并填充自身。您可能还需要传递更高级别的数据。与文件名一样,如果您希望安全数据知道它属于哪个安全性..
这基本上是那里的大部分战斗。一旦你将数据提取到合理组织的课程中,其余的应该更容易。如果您遇到困难,希望您可以从那里询问具体的设计或实施问题。