bucketing
by azeq
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>SquashQL</title>
</head>
<body>
<div id="container" />
</body>
<script src="https://unpkg.com/@antv/s2/dist/s2.min.js"></script>
</html>
JavaScript
const squashQLResponse = {
"cells": [{
"_contributors_count_": 8
},
{
"_contributors_count_": 3,
"ageRange.label": "30 - 50"
},
{
"_contributors_count_": 3,
"ageRange.label": "< 30"
},
{
"_contributors_count_": 2,
"ageRange.label": "> 50"
},
{
"_contributors_count_": 2,
"salaryRange.label": "40k-50k"
},
{
"_contributors_count_": 2,
"ageRange.label": "< 30",
"salaryRange.label": "40k-50k"
},
{
"_contributors_count_": 1,
"salaryRange.label": "50k-60k"
},
{
"_contributors_count_": 1,
"ageRange.label": "> 50",
"salaryRange.label": "50k-60k"
},
{
"_contributors_count_": 2,
"salaryRange.label": "60k-70k"
},
{
"_contributors_count_": 1,
"ageRange.label": "30 - 50",
"salaryRange.label": "60k-70k"
},
{
"_contributors_count_": 1,
"ageRange.label": "> 50",
"salaryRange.label": "60k-70k"
},
{
"_contributors_count_": 2,
"salaryRange.label": "70k-80k"
},
{
"_contributors_count_": 1,
"ageRange.label": "30 - 50",
"salaryRange.label": "70k-80k"
},
{
"_contributors_count_": 1,
"ageRange.label": "< 30",
"salaryRange.label": "70k-80k"
},
{
"_contributors_count_": 1,
"salaryRange.label": "80k+"
},
{
"_contributors_count_": 1,
"ageRange.label": "30 - 50",
"salaryRange.label": "80k+"
}
],
"rows": [
"salaryRange.label"
],
"columns": [
"ageRange.label"
],
"values": [
"_contributors_count_"
]
}
function transformData(rawData) {
return {
fields: {
rows: rawData["rows"],
columns: rawData["columns"],
values: rawData["values"],
valueInCols: true,
},
data: rawData["cells"]
}
}
const...