Rosstat time series parser in Haskell - transform a badly structured text dump to a machine-readable CSV file.
См. comment.md
Из текствого файла с разнородными таблицами получить данные в CSV файла с колонками `название переменной - частота - год - период - значение'.
Пример: исходный файл gdp.txt
конверируется в gdp.csv
gdp.txt
GDP, % change to year earlier
2017 100,6 102,5 102,2 100,9
2018 101,3 101,9 101,5
gdp.csv
GDP_yoy 2017 q 1 100,6
GDP_yoy 2017 q 2 102,5
GDP_yoy 2017 q 3 102,2
GDP_yoy 2017 q 4 100,9
GDP_yoy 2018 q 1 101,3
GDP_yoy 2018 q 2 101,9
GDP_yoy 2018 q 3 101,5
GDP_yoy 2018 q 4
Пример реального исходного файла: tab.csv
gdp.txt
или tab.csv
Индекс промышленного производства
-> INDPRO
)в % к предыдущему периоду
-> rog
)INDPRO
) и (например, rog
) [название переменной - частота - год - период - значение]
]FilePath -> ByteString -> [Row] -> [Table] -> [Map] -> [Map] -> [Variable] -> [DataTuple] -> ByteString -> FilePath
FilePath
- пути к исходному и результирующему файлуTable
- таблица с блоком заголовков и блоком данных[Мap]
- словарь с соотвествием текста заголовка названию переменной или размерности переменнойTable
[DataTuple]
- кортежи [название переменной - частота - год - период - значение
]. Частота может быть годовой, квартальной или месячной. На название переменной текущей таблицы иногда влияет предыдущая таблица. В примере
ниже имя переменной Индекс промышленного производства
не содержится во второй таблице,
там указано только размерность в % к предыдущему периоду
.
1.2. Индекс промышленного производства1) / Industrial Production index1) в % к соответствующему периоду предыдущего года / percent of corresponding period of previous year
2018 102,8 103,2 102,4 103,2 102,8 103,9 103,7 102,2 103,9
в % к предыдущему периоду / percent of previous period
2018 85,6 105,4 79,3 97,5 113,4 96,9 101,5 99,8 99,7
101,61)2)