Remove '_' as prefix for template's context properties

This commit is contained in:
Daniel García Aubert
2017-09-12 13:05:46 +02:00
parent c0cfdad7d1
commit 4a89ad57d7
2 changed files with 71 additions and 71 deletions
@@ -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);
@@ -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)}
`;
}