turnilo
Version:
Business intelligence, data exploration and visualization web application for Druid, formerly known as Swiv and Pivot
56 lines • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const chronoshift_1 = require("chronoshift");
const data_cube_1 = require("../../../common/models/data-cube/data-cube");
const used_measures_1 = require("../../../common/models/series/used-measures");
function start(clause) {
return clause.values.first().start;
}
function intervalLength(start, end) {
return end.getTime() - start.getTime();
}
function clauseInterval(clause) {
const { end, start } = clause.values.first();
return intervalLength(start, end);
}
function timeVariables(essence, timekeeper) {
const maxTime = data_cube_1.getMaxTime(essence.dataCube, timekeeper);
const timeFilter = essence.currentTimeFilter(timekeeper);
const timeDimension = essence.getTimeDimension();
const timeSplit = essence.splits.findSplitForDimension(timeDimension);
const startTime = start(timeFilter);
const interval = clauseInterval(timeFilter);
const variables = {
startTime: startTime.toISOString(),
startTimeMsAgo: intervalLength(startTime, maxTime),
interval
};
if (timeSplit && timeSplit.bucket instanceof chronoshift_1.Duration) {
variables.granularity = timeSplit.bucket.toString();
}
if (essence.hasComparison()) {
const previousTimeFilter = essence.previousTimeFilter(timekeeper);
const shiftedStartTime = start(previousTimeFilter);
variables.shiftedStartTime = shiftedStartTime.toISOString();
variables.shiftedStartTimeMsAgo = intervalLength(shiftedStartTime, maxTime);
variables.timeShift = essence.timeShift.toString();
}
return variables;
}
function logQueryInfo(essence, timekeeper, logger, executionTime, context, error) {
const nonTimeFilters = essence.filter.removeClause(essence.getTimeDimension().name);
const logData = {
...context,
executionTime,
...timeVariables(essence, timekeeper),
dataCube: essence.dataCube.name,
visualization: essence.visualization.name,
filters: nonTimeFilters.clauses.map(clause => clause.reference).toArray(),
splits: essence.splits.splits.map(split => split.reference).toArray(),
measures: essence.series.series.flatMap(used_measures_1.usedMeasures).toSet().toArray(),
...(error && { error: error.message })
};
logger.log(`Visualization query ${essence.description(timekeeper)}`, logData);
}
exports.logQueryInfo = logQueryInfo;
//# sourceMappingURL=log-query.js.map