{"repo":"maxim2266/csvplus","free":true,"listed":false,"github":"https://github.com/maxim2266/csvplus","clone":"git clone https://github.com/maxim2266/csvplus.git","description":"csvplus extends the standard Go encoding/csv package with fluent interface, lazy stream operations, indices and joins.","language":"Go","stars":67,"topics":["go","csv","csv-format","fluent-interface","stream-processing","go-csv","etl-pipeline","etl-framework","etl"],"license":"BSD-3-Clause","category":"data-pipelines","readme_excerpt":"csvplus Package csvplus extends the standard Go encoding/csv package with fluent interface, lazy stream processing operations, indices and joins. The library is primarily designed for ETL-like processes. It is mostly useful in places where the more advanced searching/joining capabilities of a fully-featured SQL database are not required, but the same time the data transformations needed still include SQL-like operations. License: BSD Examples Simple sequential processing: More involved example: Design principles The package functionality is based on the operations on the following entities: - type Row - type DataSource - type Index Type Row Row represents one row from a DataSource . It is a map from column names to the string values under those columns on the current row. The package expects a unique name assigned to every column at source. Compared to using integer indices this provides more convenience when complex transformations get applied to each row during processing. type DataSource Type DataSource represents any source of zero or more rows, like .csv file. This is a function that when invoked feeds the given callback with the data from its source, one Row at a time. The type also has a number of operations defined on it that provide for easy composition of the operations on the DataSource , forming so called fluent interface. All these operations are 'lazy', i.e. they are not performed immediately, but instead each of them returns a new DataSource . There is also a n","default_branch":null,"files":null,"tree":[],"storefront":"/r/maxim2266","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/maxim2266/csvplus/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}