diff --git a/lib/cartodb/models/dataview/histograms/date-histogram.js b/lib/cartodb/models/dataview/histograms/date-histogram.js index 8124f2db..34a42f9a 100644 --- a/lib/cartodb/models/dataview/histograms/date-histogram.js +++ b/lib/cartodb/models/dataview/histograms/date-histogram.js @@ -45,45 +45,45 @@ const nullsQueryTpl = ctx => ` __cdb_nulls AS ( SELECT count(*) AS __cdb_nulls_count - FROM (${ctx._query}) __cdb_histogram_nulls - WHERE ${ctx._column} IS NULL + FROM (${ctx.query}) __cdb_histogram_nulls + WHERE ${ctx.column} IS NULL ) `; const dateBasicsQueryTpl = ctx => ` __cdb_basics AS ( SELECT - max(date_part('epoch', ${ctx._column})) AS __cdb_max_val, - min(date_part('epoch', ${ctx._column})) AS __cdb_min_val, - avg(date_part('epoch', ${ctx._column})) AS __cdb_avg_val, + max(date_part('epoch', ${ctx.column})) AS __cdb_max_val, + min(date_part('epoch', ${ctx.column})) AS __cdb_min_val, + avg(date_part('epoch', ${ctx.column})) AS __cdb_avg_val, min( date_trunc( - '${ctx._aggregation}', ${ctx._column}::timestamp AT TIME ZONE '${ctx._offset}' + '${ctx.aggregation}', ${ctx.column}::timestamp AT TIME ZONE '${ctx.offset}' ) ) AS __cdb_start_date, - max(${ctx._column}::timestamp AT TIME ZONE '${ctx._offset}') AS __cdb_end_date, + max(${ctx.column}::timestamp AT TIME ZONE '${ctx.offset}') AS __cdb_end_date, count(1) AS __cdb_total_rows - FROM (${ctx._query}) __cdb_basics_query + FROM (${ctx.query}) __cdb_basics_query ) `; const dateOverrideBasicsQueryTpl = ctx => ` __cdb_basics AS ( SELECT - max(${ctx._end})::float AS __cdb_max_val, - min(${ctx._start})::float AS __cdb_min_val, - avg(date_part('epoch', ${ctx._column})) AS __cdb_avg_val, + max(${ctx.end})::float AS __cdb_max_val, + min(${ctx.start})::float AS __cdb_min_val, + avg(date_part('epoch', ${ctx.column})) AS __cdb_avg_val, min( date_trunc( - '${ctx._aggregation}', - TO_TIMESTAMP(${ctx._start})::timestamp AT TIME ZONE '${ctx._offset}' + '${ctx.aggregation}', + TO_TIMESTAMP(${ctx.start})::timestamp AT TIME ZONE '${ctx.offset}' ) ) AS __cdb_start_date, max( - TO_TIMESTAMP(${ctx._end})::timestamp AT TIME ZONE '${ctx._offset}' + TO_TIMESTAMP(${ctx.end})::timestamp AT TIME ZONE '${ctx.offset}' ) AS __cdb_end_date, count(1) AS __cdb_total_rows - FROM (${ctx._query}) __cdb_basics_query + FROM (${ctx.query}) __cdb_basics_query ) `; @@ -98,7 +98,7 @@ const dateBinsQueryTpl = ctx => ` SELECT GENERATE_SERIES( __cdb_start_date::timestamptz, __cdb_end_date::timestamptz, - ${ctx._aggregation === 'quarter' ? `'3 month'::interval` : `'1 ${ctx._aggregation}'::interval`} + ${ctx.aggregation === 'quarter' ? `'3 month'::interval` : `'1 ${ctx.aggregation}'::interval`} ) ) AS __cdb_bins_array FROM __cdb_basics @@ -117,7 +117,7 @@ const dateHistogramQueryTpl = ctx => ` 1, LEAST( WIDTH_BUCKET( - ${ctx._column}::timestamp AT TIME ZONE '${ctx._offset}', + ${ctx.column}::timestamp AT TIME ZONE '${ctx.offset}', __cdb_bins_array ), __cdb_bins_number @@ -128,17 +128,17 @@ const dateHistogramQueryTpl = ctx => ` date_part( 'epoch', date_trunc( - '${ctx._aggregation}', ${ctx._column}::timestamp AT TIME ZONE '${ctx._offset}' - ) AT TIME ZONE '${ctx._offset}' + '${ctx.aggregation}', ${ctx.column}::timestamp AT TIME ZONE '${ctx.offset}' + ) AT TIME ZONE '${ctx.offset}' ) )::numeric AS timestamp, date_part('epoch', __cdb_start_date)::numeric AS timestamp_start, - min(date_part('epoch', ${ctx._column}))::numeric AS min, - max(date_part('epoch', ${ctx._column}))::numeric AS max, - avg(date_part('epoch', ${ctx._column}))::numeric AS avg, + min(date_part('epoch', ${ctx.column}))::numeric AS min, + max(date_part('epoch', ${ctx.column}))::numeric AS max, + avg(date_part('epoch', ${ctx.column}))::numeric AS avg, count(*) AS freq - FROM (${ctx._query}) __cdb_histogram, __cdb_basics, __cdb_bins, __cdb_nulls - WHERE date_part('epoch', ${ctx._column}) IS NOT NULL + FROM (${ctx.query}) __cdb_histogram, __cdb_basics, __cdb_bins, __cdb_nulls + WHERE date_part('epoch', ${ctx.column}) IS NOT NULL GROUP BY bin, bins_number, bin_width, nulls_count, timestamp_start ORDER BY bin `; @@ -177,7 +177,7 @@ module.exports = class DateHistogram extends BaseHistogram { _buildQueryTpl (ctx) { return ` WITH - ${this._hasOverridenRange(ctx._override) ? dateOverrideBasicsQueryTpl(ctx) : dateBasicsQueryTpl(ctx)}, + ${this._hasOverridenRange(ctx.override) ? dateOverrideBasicsQueryTpl(ctx) : dateBasicsQueryTpl(ctx)}, ${dateBinsQueryTpl(ctx)}, ${nullsQueryTpl(ctx)} ${dateHistogramQueryTpl(ctx)} @@ -205,13 +205,13 @@ module.exports = class DateHistogram extends BaseHistogram { } const histogramSql = this._buildQueryTpl({ - _override: override, - _query: this.query, - _column: this.column, - _aggregation: this._getAggregation(override), - _start: this._getBinStart(override), - _end: this._getBinEnd(override), - _offset: this._parseOffset(override) + override: override, + query: this.query, + column: this.column, + aggregation: this._getAggregation(override), + start: this._getBinStart(override), + end: this._getBinEnd(override), + offset: this._parseOffset(override) }); debug(histogramSql); diff --git a/lib/cartodb/models/dataview/histograms/numeric-histogram.js b/lib/cartodb/models/dataview/histograms/numeric-histogram.js index 1df88adb..ea191bea 100644 --- a/lib/cartodb/models/dataview/histograms/numeric-histogram.js +++ b/lib/cartodb/models/dataview/histograms/numeric-histogram.js @@ -4,27 +4,27 @@ const debug = require('debug')('windshaft:dataview:numeric-histogram'); const columnCastTpl = ctx => `date_part('epoch', ${ctx.column})`; const filterOutSpecialNumericValues = ctx => ` - ${ctx._column} != 'infinity'::float + ${ctx.column} != 'infinity'::float AND - ${ctx._column} != '-infinity'::float + ${ctx.column} != '-infinity'::float AND - ${ctx._column} != 'NaN'::float + ${ctx.column} != 'NaN'::float `; const filteredQueryTpl = ctx => ` __cdb_filtered_source AS ( SELECT * - FROM (${ctx._query}) __cdb_filtered_source_query - WHERE ${ctx._column} IS NOT NULL - ${ctx._isFloatColumn ? `AND ${filterOutSpecialNumericValues(ctx)}` : ''} + FROM (${ctx.query}) __cdb_filtered_source_query + WHERE ${ctx.column} IS NOT NULL + ${ctx.isFloatColumn ? `AND ${filterOutSpecialNumericValues(ctx)}` : ''} ) `; const basicsQueryTpl = ctx => ` __cdb_basics AS ( SELECT - max(${ctx._column}) AS __cdb_max_val, min(${ctx._column}) AS __cdb_min_val, - avg(${ctx._column}) AS __cdb_avg_val, count(1) AS __cdb_total_rows + max(${ctx.column}) AS __cdb_max_val, min(${ctx.column}) AS __cdb_min_val, + avg(${ctx.column}) AS __cdb_avg_val, count(1) AS __cdb_total_rows FROM __cdb_filtered_source ) `; @@ -32,8 +32,8 @@ const basicsQueryTpl = ctx => ` const overrideBasicsQueryTpl = ctx => ` __cdb_basics AS ( SELECT - max(${ctx._end}) AS __cdb_max_val, min(${ctx._start}) AS __cdb_min_val, - avg(${ctx._column}) AS __cdb_avg_val, count(1) AS __cdb_total_rows + max(${ctx.end}) AS __cdb_max_val, min(${ctx.start}) AS __cdb_min_val, + avg(${ctx.column}) AS __cdb_avg_val, count(1) AS __cdb_total_rows FROM __cdb_filtered_source ) `; @@ -43,7 +43,7 @@ const iqrQueryTpl = ctx => ` SELECT max(quartile_max) - min(quartile_max) AS __cdb_iqr FROM ( SELECT quartile, max(_cdb_iqr_column) AS quartile_max from ( - SELECT ${ctx._column} AS _cdb_iqr_column, ntile(4) over (order by ${ctx._column} + SELECT ${ctx.column} AS _cdb_iqr_column, ntile(4) over (order by ${ctx.column} ) AS quartile FROM __cdb_filtered_source) _cdb_quartiles WHERE quartile = 1 or quartile = 3 @@ -58,10 +58,10 @@ const binsQueryTpl = ctx => ` CASE WHEN __cdb_total_rows = 0 OR __cdb_iqr = 0 THEN 1 ELSE GREATEST( - LEAST(${ctx._minBins}, CAST(__cdb_total_rows AS INT)), + LEAST(${ctx.minBins}, CAST(__cdb_total_rows AS INT)), LEAST( CAST(((__cdb_max_val - __cdb_min_val) / (2 * __cdb_iqr * power(__cdb_total_rows, 1/3))) AS INT), - ${ctx._maxBins} + ${ctx.maxBins} ) ) END AS __cdb_bins_number @@ -72,7 +72,7 @@ const binsQueryTpl = ctx => ` const overrideBinsQueryTpl = ctx => ` __cdb_bins AS ( - SELECT ${ctx._override.bins} AS __cdb_bins_number + SELECT ${ctx.override.bins} AS __cdb_bins_number ) `; @@ -80,8 +80,8 @@ const nullsQueryTpl = ctx => ` __cdb_nulls AS ( SELECT count(*) AS __cdb_nulls_count - FROM (${ctx._query}) __cdb_histogram_nulls - WHERE ${ctx._column} IS NULL + FROM (${ctx.query}) __cdb_histogram_nulls + WHERE ${ctx.column} IS NULL ) `; @@ -89,11 +89,11 @@ const infinitiesQueryTpl = ctx => ` __cdb_infinities AS ( SELECT count(*) AS __cdb_infinities_count - FROM (${ctx._query}) __cdb_infinities_query + FROM (${ctx.query}) __cdb_infinities_query WHERE - ${ctx._column} = 'infinity'::float + ${ctx.column} = 'infinity'::float OR - ${ctx._column} = '-infinity'::float + ${ctx.column} = '-infinity'::float ) `; @@ -101,8 +101,8 @@ const nansQueryTpl = ctx => ` __cdb_nans AS ( SELECT count(*) AS __cdb_nans_count - FROM (${ctx._query}) __cdb_nans_query - WHERE ${ctx._column} = 'NaN'::float + FROM (${ctx.query}) __cdb_nans_query + WHERE ${ctx.column} = 'NaN'::float ) `; @@ -124,26 +124,26 @@ const histogramQueryTpl = ctx => ` (__cdb_max_val - __cdb_min_val) / cast(__cdb_bins_number as float) AS bin_width, __cdb_bins_number AS bins_number, __cdb_nulls_count AS nulls_count, - ${ctx._isFloatColumn ? `${specialNumericValuesColumnDefinitionTpl()},` : ''} + ${ctx.isFloatColumn ? `${specialNumericValuesColumnDefinitionTpl()},` : ''} __cdb_avg_val AS avg_val, CASE WHEN __cdb_min_val = __cdb_max_val THEN 0 ELSE GREATEST( 1, LEAST( - WIDTH_BUCKET(${ctx._column}, __cdb_min_val, __cdb_max_val, __cdb_bins_number), + WIDTH_BUCKET(${ctx.column}, __cdb_min_val, __cdb_max_val, __cdb_bins_number), __cdb_bins_number ) ) - 1 END AS bin, - min(${ctx._column})::numeric AS min, - max(${ctx._column})::numeric AS max, - avg(${ctx._column})::numeric AS avg, + min(${ctx.column})::numeric AS min, + max(${ctx.column})::numeric AS max, + avg(${ctx.column})::numeric AS avg, count(*) AS freq FROM __cdb_filtered_source, __cdb_basics, __cdb_nulls, __cdb_bins - ${ctx._isFloatColumn ? `, ${specialNumericValuesCTETpl()}` : ''} + ${ctx.isFloatColumn ? `, ${specialNumericValuesCTETpl()}` : ''} GROUP BY bin, bins_number, bin_width, nulls_count, avg_val - ${ctx._isFloatColumn ? `, ${specialNumericValuesColumnTpl()}` : ''} + ${ctx.isFloatColumn ? `, ${specialNumericValuesColumnTpl()}` : ''} ORDER BY bin `; @@ -167,14 +167,14 @@ module.exports = class NumericHistogram extends BaseHistogram { _buildQuery (psql, override, callback) { const histogramSql = this._buildQueryTpl({ - _override: override, - _column: this._columnType === 'date' ? columnCastTpl({ column: this.column }) : this.column, - _isFloatColumn: this._columnType === 'float', - _query: this.query, - _start: this._getBinStart(override), - _end: this._getBinEnd(override), - _minBins: BIN_MIN_NUMBER, - _maxBins: BIN_MAX_NUMBER, + override: override, + column: this._columnType === 'date' ? columnCastTpl({ column: this.column }) : this.column, + isFloatColumn: this._columnType === 'float', + query: this.query, + start: this._getBinStart(override), + end: this._getBinEnd(override), + minBins: BIN_MIN_NUMBER, + maxBins: BIN_MAX_NUMBER, }); debug(histogramSql); @@ -186,13 +186,13 @@ module.exports = class NumericHistogram extends BaseHistogram { return ` WITH ${filteredQueryTpl(ctx)}, - ${this._hasOverridenRange(ctx._override) ? overrideBasicsQueryTpl(ctx) : basicsQueryTpl(ctx)}, - ${this._hasOverridenBins(ctx._override) ? + ${this._hasOverridenRange(ctx.override) ? overrideBasicsQueryTpl(ctx) : basicsQueryTpl(ctx)}, + ${this._hasOverridenBins(ctx.override) ? overrideBinsQueryTpl(ctx) : `${iqrQueryTpl(ctx)}, ${binsQueryTpl(ctx)}` }, ${nullsQueryTpl(ctx)} - ${ctx._isFloatColumn ? `,${infinitiesQueryTpl(ctx)}, ${nansQueryTpl(ctx)}` : ''} + ${ctx.isFloatColumn ? `,${infinitiesQueryTpl(ctx)}, ${nansQueryTpl(ctx)}` : ''} ${histogramQueryTpl(ctx)} `; }