Rounding dates in Elasticsearch using the mapping.calendar_interval property
Mapping configuration
by Flexmonster Pivot Table
HTML
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>
<button onclick="roundDates('1m')">Default dates</button>
<button onclick="roundDates('1d')">Rounded dates</button>
<div id="pivot-container"></div>
CSS
@import url(https://cdn.flexmonster.com/assets/jsfiddle-styles.css);
JavaScript
let pivot = new Flexmonster({
container: "pivot-container",
componentFolder: "https://cdn.flexmonster.com/",
toolbar: true,
report: {
dataSource: {
type: "elasticsearch",
node: "https://olap.flexmonster.com:9200",
index: "kibana_sample_data_flights",
mapping: {
"timestamp": {
format: "dd/MM/yyyy HH:mm",
calendar_interval: "day",
caption: "Arrival date"
},
"DestCityName": {
caption: "Destination city"
},
"DistanceMiles": {
caption: "Distance"
}
}
},
slice: {
rows: [
{
uniqueName: "timestamp"
}
],
columns: [
{
uniqueName: "DestCityName",
filter: {
members: ["destcityname.[chitose / tomakomai]", "destcityname.[paris]"]
}
},
{
uniqueName: "[Measures]"
}
],
measures: [
{
uniqueName: "DistanceMiles",
aggregation: "sum"
}
]
},
formats: [
{
name: "",
decimalPlaces: 2
}
]
}
});
function roundDates(interval) {
let report = pivot.getReport();
report.dataSource.mapping["timestamp"].calendar_interval = interval;
pivot.setReport(report);
}