@pujansrt/data-genie
Version:
High performant ETL engine written in TypeScript
21 lines (20 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const csv_reader_1 = require("../readers/csv-reader");
const json_writer_1 = require("../writers/json-writer");
const filtering_reader_1 = require("../filters/filtering-reader");
const field_filters_1 = require("../filters/field-filters");
const filter_expressions_1 = require("../filters/filter-expressions");
const job_1 = require("../core/job");
async function runExample() {
// --- Filter Records Example ---
console.log('\n--- Filter Records Example ---');
let readerFilter = new csv_reader_1.CSVReader('input/example.csv').setFieldNamesInFirstRow(true);
const filteringReader = new filtering_reader_1.FilteringReader(readerFilter)
.add(new field_filters_1.FieldFilter('Rating').addRule((0, field_filters_1.IsNotNull)()).addRule((0, field_filters_1.IsType)('string')).addRule((0, field_filters_1.ValueMatch)('B', 'C')).createRecordFilter())
.add(new field_filters_1.FieldFilter('Account').addRule((0, field_filters_1.IsNotNull)()).addRule((0, field_filters_1.IsType)('string')).addRule((0, field_filters_1.PatternMatch)('[0-9]*')).createRecordFilter())
.add(new filter_expressions_1.FilterExpression('record.CreditLimit !== undefined && record.Balance !== undefined && parseFloat(record.CreditLimit) >= 0 && parseFloat(record.CreditLimit) <= 5000 && parseFloat(record.Balance) <= parseFloat(record.CreditLimit)').createRecordFilter());
await job_1.Job.run(filteringReader, new json_writer_1.JsonWriter('output/filtered-data.json'));
console.log('Filtered records written to output/filtered-data.json');
}
runExample().catch(console.error);