@Description("Records with unresolved foreign key values") @Distributed(reducer = ReferentialIntegrityAnalyzerReducer.class) public class ReferentialIntegrityAnalyzerResult extends AnnotatedRowsResult { private static final long serialVersionUID = 1L; public ReferentialIntegrityAnalyzerResult(final RowAnnotation annotation, final RowAnnotationFactory annotationFactory, final InputColumn<?>[] highlightedColumns) { super(annotation, annotationFactory, highlightedColumns); } }
@Description("Marked rows") @Distributed(reducer = MarkRowsAnalyzerResultReducer.class) public class MarkRowsAnalyzerResult extends AnnotatedRowsResult { private static final long serialVersionUID = 1L; public MarkRowsAnalyzerResult(RowAnnotation annotation, RowAnnotationFactory annotationFactory, InputColumn<?>[] highlightedColumns) { super(annotation, annotationFactory, highlightedColumns); } @Metric(order = 1, value = "Row count") public int getTotalRowCount() { return getAnnotatedRowCount(); } }
@Description("Marked rows") @Distributed(reducer = MarkRowsAnalyzerResultReducer.class) public class MarkRowsAnalyzerResult extends AnnotatedRowsResult { private static final long serialVersionUID = 1L; public MarkRowsAnalyzerResult(RowAnnotation annotation, RowAnnotationFactory annotationFactory, InputColumn<?>[] highlightedColumns) { super(annotation, annotationFactory, highlightedColumns); } @Metric(order = 1, value = "Row count") public int getTotalRowCount() { return getAnnotatedRowCount(); } }
@Description("Incomplete records") @Distributed(reducer = CompletenessAnalyzerResultReducer.class) public class CompletenessAnalyzerResult extends AnnotatedRowsResult implements AnalyzerResult {
@Named("Single word") @Description("Filters single word values from multiple word values.") @Categorized(FilterCategory.class) @Deprecated
@Named("XML decoder") @Description("Decodes XML content into plain text") @Categorized(EncodingCategory.class) public class XmlDecoderTransformer implements Transformer {
@Named("Expression language (EL) transformer") @Description("Generates a column based on an EL expression") @Categorized({ ScriptingCategory.class }) public class ELTransformer implements Transformer {
@Named("Generate UUID") @Description("Generates a universally unique ID") @Categorized(NumbersCategory.class) public class GenerateUUIDTransformer implements Transformer { @Description("A column which represent the scope for which the ID will be generated. " + "If eg. a source column is selected, an ID will be generated for each source record. " + "If a transformed column is selected, an ID will be generated for each record generated that has this column.")
@Named("Convert number to IP") @Categorized(NetworkToolsCategory.class) @Description("Converts a number representation of an IPv4 address to it's regular string representation.") public class NumberToIpConverter implements Transformer {
@Named("HTML encoder") @Description("Encodes/escapes plain text into HTML content") @Categorized(EncodingCategory.class) public class HtmlEncoderTransformer implements Transformer {
@Description( "Transformation for rounding a number, typically to the nearest integer, nearest ten, hundred or thousand.") @Categorized(NumbersCategory.class) @Description( "Defines the factor of rounding. A factor of 1 will round to the nearest integer. " + "A factor of 1000 will round the number to the nearest thousand.") @NumberProperty(zero = false, positive = true, negative = false)
@Named("MockAnalyzer") @Description("For testing purposes. Sleeps for 5 seconds.") @Concurrent(true) public class MockFutureAnalyzer implements Analyzer<AnalyzerResultFuture<AnalyzerResult>> {
@Named("Format date") @Description("Allows you to format a date as a string by applying your own date format.") @Categorized(DateAndTimeCategory.class) public class FormatDateTransformer implements Transformer { @Configured("Date") InputColumn<Date> dateColumn; @Configured String dateFormat = "yyyy-MM-dd HH:mm:ss"; @Override public OutputColumns getOutputColumns() { return new OutputColumns(String.class, dateColumn.getName() + " (formatted)"); } @Override public String[] transform(final InputRow inputRow) { final Date date = inputRow.getValue(dateColumn); if (date == null) { return new String[] { null }; } final SimpleDateFormat format = new SimpleDateFormat(dateFormat); return new String[] { format.format(date) }; } }
@Named("String length range") @Description("Filter rows based on the length of strings.") @Categorized(FilterCategory.class) public class StringLengthRangeFilter implements Filter<RangeFilterCategory> {
@Metric(order = 3, value = DateAndTimeAnalyzer.MEASURE_LOWEST_DATE) @Description( "The lowest date value for the given column. The value is measured in number of days since 1970-01-01.") public Number getLowestDate(final InputColumn<?> col) { final String s = (String) getCrosstab().where(DateAndTimeAnalyzer.DIMENSION_COLUMN, col.getName()) .where(DateAndTimeAnalyzer.DIMENSION_MEASURE, DateAndTimeAnalyzer.MEASURE_LOWEST_DATE).safeGet(null); return convertToDaysSinceEpoch(s); }
@Metric(order = 7, value = DateAndTimeAnalyzer.MEASURE_PERCENTILE75) @Description( "The 75th percentile value for the given column. The value is measured in number of days since 1970-01-01.") public Number getPercentile75(final InputColumn<?> col) { final String s = (String) getCrosstab().where(DateAndTimeAnalyzer.DIMENSION_COLUMN, col.getName()) .where(DateAndTimeAnalyzer.DIMENSION_MEASURE, DateAndTimeAnalyzer.MEASURE_PERCENTILE75).safeGet(null); return convertToDaysSinceEpoch(s); }
@Metric(order = 3, value = DateAndTimeAnalyzer.MEASURE_HIGHEST_DATE) @Description( "The highest date value for the given column. The value is measured in number of days since 1970-01-01.") public Number getHighestDate(final InputColumn<?> col) { final String s = (String) getCrosstab().where(DateAndTimeAnalyzer.DIMENSION_COLUMN, col.getName()) .where(DateAndTimeAnalyzer.DIMENSION_MEASURE, DateAndTimeAnalyzer.MEASURE_HIGHEST_DATE).safeGet(null); return convertToDaysSinceEpoch(s); }
@Metric(order = 5, value = DateAndTimeAnalyzer.MEASURE_MEDIAN) @Description("The median value for the given column. The value is measured in number of days since 1970-01-01.") public Number getMedian(final InputColumn<?> col) { final String s = (String) getCrosstab().where(DateAndTimeAnalyzer.DIMENSION_COLUMN, col.getName()) .where(DateAndTimeAnalyzer.DIMENSION_MEASURE, DateAndTimeAnalyzer.MEASURE_MEDIAN).safeGet(null); return convertToDaysSinceEpoch(s); }
@Metric(order = 4, value = DateAndTimeAnalyzer.MEASURE_MEAN) @Description("The mean value for the given column. The value is measured in number of days since 1970-01-01.") public Number getMean(final InputColumn<?> col) { final String s = (String) getCrosstab().where(DateAndTimeAnalyzer.DIMENSION_COLUMN, col.getName()) .where(DateAndTimeAnalyzer.DIMENSION_MEASURE, DateAndTimeAnalyzer.MEASURE_MEAN).safeGet(null); return convertToDaysSinceEpoch(s); }
@Metric(order = 6, value = DateAndTimeAnalyzer.MEASURE_PERCENTILE25) @Description( "The 25th percentile value for the given column. The value is measured in number of days since 1970-01-01.") public Number getPercentile25(final InputColumn<?> col) { final String s = (String) getCrosstab().where(DateAndTimeAnalyzer.DIMENSION_COLUMN, col.getName()) .where(DateAndTimeAnalyzer.DIMENSION_MEASURE, DateAndTimeAnalyzer.MEASURE_PERCENTILE25).safeGet(null); return convertToDaysSinceEpoch(s); }