Aggregated Columns
Return a data object for an aggregated query, push 0s for rows with
HTML
<pre><div id="ltvData">
</div></pre>
TypeScript
interface Profile {
id: string;
}
interface DataResonseRow {
id: string;
data: number[];
}
function calculateLTV (queryResults: DataResponseRow[], aggregationMethod: string, profiles: Profile[] ) {
//results object
const responsesById: { [id: string]: any[] } = {};
for (const i in profiles){
if (
aggregationMethod === "count" ||
aggregationMethod === "sum"
) {
//default all entries for counted or summed aggregations to 0 to start... will be replaced later if there is a response
responsesById[profiles[i].id] = [0];
}
}
for (const row in queryResults){
responsesById[queryResults[row].id] = queryResults[row].data;
}
return responsesById;
}
const mockQueryResults = [{id:1, data:[112.50]}, {id:2, data:[16.48]}, {id:3, data:[42.97]}, {id:4, data:[96.41]}]
const mockAggregationMethod = "sum"
const mockProfiles = [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}]
const dataToDisplay = JSON.stringify(calculateLTV(mockQueryResults, mockAggregationMethod, mockProfiles), null, 2);
document.getElementById("ltvData").innerHTML = dataToDisplay;