28#pragma warning(suppress: 5032)
31#pragma warning(disable: 4100)
33#pragma warning(disable: 4266)
35#pragma warning(disable: 4324)
37#pragma warning(disable: 4355)
39#pragma warning(disable: 4435)
41#pragma warning(disable: 4458)
43#pragma warning(disable: 4800)
46#include <parquet/arrow/writer.h>
50#pragma warning(suppress: 5031)
69 ParquetFormatter(
const std::string& columnNames,
const std::string& compression =
"",
const int batchSize = 1000000);
80 void openTag(std::ostream& into,
const std::string& xmlElement);
95 bool closeTag(std::ostream& into,
const std::string& comment =
"");
108 myBuilders.push_back(std::make_shared<arrow::StringBuilder>());
110 myValues.push_back(isNull ?
nullptr : std::make_shared<arrow::StringScalar>(
toString(val)));
114 void writeAttr(std::ostream& ,
const std::string& attr,
const T& val) {
118 myBuilders.push_back(std::make_shared<arrow::StringBuilder>());
127 myBuilders.push_back(std::make_shared<arrow::DoubleBuilder>());
151 for (
const auto& field :
mySchema->fields()) {
152 if (field->name() == attrString) {
165 throw ProcessError(
TLF(
"Unexpected attribute '%', this file format does not support Parquet output yet.",
toString(attr)));
174 parquet::Compression::type
myCompression = parquet::Compression::UNCOMPRESSED;
183 std::shared_ptr<arrow::Schema>
mySchema = arrow::schema({});
189 std::vector<std::shared_ptr<arrow::ArrayBuilder> >
myBuilders;
195 std::vector<std::shared_ptr<arrow::Scalar> >
myValues;
223 myBuilders.push_back(std::make_shared<arrow::DoubleBuilder>());
225 myValues.push_back(isNull ?
nullptr : std::make_shared<arrow::DoubleScalar>(val));
229 myBuilders.push_back(std::make_shared<arrow::FloatBuilder>());
231 myValues.push_back(isNull ?
nullptr : std::make_shared<arrow::FloatScalar>((
float)val));
240 myBuilders.push_back(std::make_shared<arrow::Int32Builder>());
242 myValues.push_back(isNull ?
nullptr : std::make_shared<arrow::Int32Scalar>(val));
248 if (into.precision() > 2) {
251 myBuilders.push_back(std::make_shared<arrow::DoubleBuilder>());
253 myValues.push_back(std::make_shared<arrow::DoubleScalar>(val));
257 myBuilders.push_back(std::make_shared<arrow::FloatBuilder>());
259 myValues.push_back(std::make_shared<arrow::FloatScalar>((
float)val));
268 myBuilders.push_back(std::make_shared<arrow::Int32Builder>());
270 myValues.push_back(std::make_shared<arrow::Int32Scalar>(val));
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
SumoXMLTag
Numbers representing SUMO-XML - element names.
std::bitset< 96 > SumoXMLAttrMask
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)