Published
Edited
Feb 3, 2022
1 fork
Insert cell
Insert cell
splitgraph`SELECT COUNT(*) FROM "trase/supply-chains"."supply-chains"`
Insert cell
Insert cell
{
const [{ count }] = await splitgraph`
SELECT COUNT(*) FROM "trase~supply-chains"."supply-chains"
`;
return md`_There are ${count} rows in the supply-chains table_`;
}
Insert cell
Insert cell
{
let promise = splitgraph`SELECT foo FROM bar`;
return promise.catch(
error => html`<p class="observablehq--error">${error}</p}`
);
}
Insert cell
Insert cell
splitgraph`
SELECT exporter_group,
SUM(volume) AS volume
FROM "trase~supply-chains"."supply-chains"
GROUP BY exporter_group
ORDER BY volume DESC
LIMIT 10
`
Insert cell
Insert cell
{
const response = await fetch(
"https://data.splitgraph.com:443/trase/supply-chains/latest/-/rest/supply-chains?region_production_1=eq.SORRISO&limit=10"
);
return response.json();
}
Insert cell
Insert cell
async function splitgraph(strings) {
let query = strings[0] + "",
i = 0,
n = arguments.length;
while (++i < n) query += arguments[i] + "" + strings[i];
query = query.replace('"trase/', '"trase~');
query = query.replace('"trase-development/', '"trase-development~');
const options = {
method: "POST",
headers: {
Authorization: `Bearer ${await token()}`,
"Content-Type": "application/json"
},
body: JSON.stringify({ sql: query })
};
return fetch(
"https://data.splitgraph.test/sql/query/e9e08f2b418f558f9c2022fcda95f81f",
options
)
.then((response) => response.json())
.then((json) => {
if (!json.success)
throw new Error(json.error || "Failed to parse response");
return json.rows;
});
}
Insert cell
token = () =>
fetch("https://api.splitgraph.test/auth/anonymous_access_token", {
method: "POST"
})
.then(response => response.json())
.then(json => json.access_token)
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more