UNPKG

@pujansrt/data-genie

Version:

High performant ETL engine written in TypeScript

21 lines (20 loc) 1.67 kB
"use strict"; 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);