Array „flach“ als JSON darstellen für echart-Diagramm
Ich habe eine etwas komplexere Abfrage, bei deren Ergebnis eine verschachtelte Array-Struktur zurückgegeben wird. Da ich das Ergebnis für ein echart-Diagramm benötige, dort aber nur flache JSON-Strukturen verarbeitet werden können, stehe ich auf dem Schlauch, wie ich das Ergebnis umwandele, oder umstelle, damit eine JSON-Struktur ausgegeben wird. Hier meine Abfrage:
"Median-CIR-Grafik";
"Geschäftsjahr ermitteln;";
let myyear := number(Auswahl_GJ);
let res := record(Bundesanzeiger,myyear).'Geschäftsjahr';
"Datenbasis aufbereiten;";
let myquery := (select Bundesanzeiger);
let table := myquery['Geschäftsjahr' >= 2017 and 'Geschäftsjahr' <= res and
'Median CIR AuM-Cluster' != null];
"Jahre und Cluster ermitteln;";
let years := sort(unique(table.'Geschäftsjahr'));
let clusters := sort(unique(table.'Cluster AuM'));
"Zwischenspeicher initialisieren;";
"Für jedes Jahr und Cluster Objekte manuell einfügen;";
let my := for y in years do
for c in clusters do
{
year: y,
aumcluster: c,
cirmed: first(table['Geschäftsjahr' = y and 'Cluster AuM' = c].'Median CIR AuM-Cluster')
}
end
end;
Als Ergebnis erhalte ich ein Array mit folgender Struktur:
[[{"year":2017,"aumcluster":"1. AuM > 10 Mrd.€","cirmed":42.400666438570134},{"year":2017,"aumcluster":"2. AuM 2,5 - 10 Mrd.€","cirmed":58.09042242482174},{"year":2017,"aumcluster":"3. AuM 500 Mio. - 2,5 Mrd.€","cirmed":65.76453243470935},{"year":2017,"aumcluster":"4. AuM 250 - 500 Mio.€","cirmed":74.03760071620412},{"year":2017,"aumcluster":"5. AuM 50 - 250 Mio.€","cirmed":86.07907742998353},{"year":2017,"aumcluster":"6. AuM < 50 Mio.€","cirmed":96.17943268964243}],[{"year":2018,"aumcluster":"1. AuM > 10 Mrd.€","cirmed":57.29921130854022},{"year":2018,"aumcluster":"2. AuM 2,5 - 10 Mrd.€","cirmed":76.14896988906497}]]
Wie kann ich das umstellen, damit ich ein reines JSON-Ergebnis erhalte?
Frank
1 Antwort
-
Ich habe nun selbst einen Weg gefunden, dass Array in der gewünschten Form selbst zusammen zu bauen. Hier mein Lösungsansatz zusammen mit den echart-Parametern für einen Linienchart.
"Median-CIR-Grafik mit Datenstring-Aufbau.";
let myyear := number(Auswahl_GJ);
let res := record(Bundesanzeiger,myyear).'Geschäftsjahr';
let table := (select Bundesanzeiger)['Geschäftsjahr' >= 2017 and 'Geschäftsjahr' <= res and
'Median CIR AuM-Cluster' != null];
let years := sort(unique(table.'Geschäftsjahr'));
let clusters := sort(unique(table.'Cluster AuM'));
"Achsenbeschriftung vorbereiten:";
let myYears := "";
for y in years do
myYears := myYears + "'" + text(y) + "',"
end;
let xAxis := "[" + substring(myYears, 0, length(myYears) - 1) + "]";
"Serien-Daten als Text aufbauen pro Cluster:";
let seriesData := "";
for c in clusters do
let values := "";
for y in years do
let v := first(table['Geschäftsjahr' = y and 'Cluster AuM' = c].'Median CIR AuM-Cluster');
if v != null then
values := values + replace(text(v), ",", ".") + ","
else
values := values + "null,"
end
end;
let dataStr := "[" + substring(values, 0, length(values) - 1) + "]";
seriesData := seriesData +
"{
name: '" +
text(c) +
"',
type: 'line',
label: { show: true },
data: " +
dataStr +
"
},"
end;
seriesData := "[" + substring(seriesData, 0, length(seriesData) - 1) + "]";
"Komplette Chart-Option zusammenbauen:";
let chartOptions := "
{
title: { text: 'Median CIR je Cluster & Jahr' },
tooltip: { trigger: 'axis' },
legend: { top: 'bottom' },
xAxis: {
type: 'category',
data: " +
xAxis +
"
},
yAxis: {
type: 'value',
axisLabel: { formatter: '{value} %' }
},
series: " +
seriesData +
"
}";
"Diagramm anzeigen:";
html(renderEChart("_cid_" + random(), chartOptions))
Content aside
- Status Answered
- vor 4 TagenZuletzt aktiv
- 1Antworten
- 17Ansichten
-
1
Folge bereits