query_extended_age = function (data, options) {
var broker = new Data.Broker()
.addSource(
"https://s3.eu-west-1.amazonaws.com/data.ixmaps.com/Amministrazioni/sesso_e%20_potere/ammcom_23_11_01.csv.gz",
"csv"
)
.realize(function (dataA) {
ixmaps.showLoadingArrayStop();
ixmaps.hideLoading();
var ammcom = dataA[0];
var pivot = ammcom.pivot({
lead: "denominazione_comune",
columns: "sesso",
keep: [
"CODICE_ISTAT",
"codice_regione",
"codice_provincia",
"popolazione_censita"
]
});
var iTotal = pivot.column("Total").index;
var iF = pivot.column("F").index;
pivot.addColumn(
{
destination: "quota"
},
function (row) {
return (row[iF] / row[iTotal]) * 100;
}
);
var lookup = pivot.lookupArray("quota", "denominazione_comune");
ammcom.addColumn(
{ source: "denominazione_comune", destination: "quota" },
function (value) {
return lookup[value];
}
);
var iProv = ammcom.column("codice_provincia").index;
var iCom = ammcom.column("codice_comune").index;
ammcom.addColumn({ destination: "PROCOM" }, function (row) {
return row[iProv] + ("000" + String(row[iCom])).slice(-3);
});
var iNat = ammcom.column("data_nascita").index;
ammcom.addColumn({ destination: "eta" }, function (row) {
var dA = row[iNat].split("/");
return (
(new Date().getTime() -
new Date(dA[2] + "/" + dA[1] + "/" + dA[0]).getTime()) /
(1000 * 60 * 60 * 24 * 356)
).toFixed(0);
});
ammcom.addColumn(
{ source: "eta", destination: "eta_10" },
function (value) {
return Math.floor(value / 10) * 10;
}
);
ammcom.addColumn(
{ source: "eta", destination: "eta_5" },
function (value) {
return Math.floor(value / 5) * 5;
}
);
ammcom.addColumn(
{ source: "popolazione_censita", destination: "popolazione_log" },
function (value) {
return Math.log10(value);
}
);
var ammcomF = ammcom.select("WHERE sesso = F");
var ammcomM = ammcom.select("WHERE sesso = M");
var pivotF = ammcomF.pivot({
lead: "denominazione_comune",
columns: "eta_10",
keep: [
"CODICE_ISTAT",
"PROCOM",
"codice_regione",
"codice_provincia",
"sigla_provincia",
"popolazione_censita"
]
});
var pivotM = ammcomM.pivot({
lead: "denominazione_comune",
columns: "eta_10",
keep: [
"CODICE_ISTAT",
"PROCOM",
"codice_regione",
"codice_provincia",
"sigla_provincia",
"popolazione_censita"
]
});
var merger1 = new Data.Merger();
var final = merger1
.addSource(pivotM, {
lookup: "denominazione_comune",
columns: pivotM.columnNames()
})
.addSource(pivotF, {
lookup: "denominazione_comune",
columns: pivotF.columnNames()
})
.realize();
var iTotal1 = final.column("Total.1").index;
var iTotal2 = final.column("Total.2").index;
final.addColumn(
{
destination: "Total"
},
function (row) {
return row[iTotal1] + row[iTotal2];
}
);
ixmaps.setExternalData(final, {
type: "dbtable",
name: options.name
});
});
}