Skip to main content

I am looking for some guidance.

I have a dataset containing values for Birmingham wards, England and the Region.

I would like to have a visual (Column chart) which shows each ward. But then a reference line to show the average for England and the Region based on their latest value.

At the moment I am doing this using variables I define. But I would like it to autmatically figure out the latest year and return the latest value for England and the Region rather than me hardcoding it into the variables. My Code looks like this;

<!--Variables Start-->
<div ng-init="
valuelabel = 'Value (%)';
maphigh = '8,48,107';
maplow = '198,219,239';
decimalprec = '1';
complatestperiod = '2021';
compBirmlatestvalue = '10.8';
compEnglatestvalue = '6.4';
compWMCAlatestvalue = '8.9'
">
<!--Variables End-->

<ods-dataset-context
context="ctxenglatestavgagg"
ctxenglatestavgagg-dataset="{{ ctx.dataset.datasetid }}"
ctxenglatestavgagg-parameters="{
'disjunctive.date': true,
'sort': 'date',
'refine.areaidentifier': 'AllLaInCountry_England',
'refine.date': complatestperiod
}">

<div ods-aggregation="aggEngLatestValue"
ods-aggregation-context="ctxenglatestavgagg"
ods-aggregation-expression="value"
ods-aggregation-function="AVG">
Latest year: <br>
Latest value:
</div>
</ods-dataset-context>
</div>

But with my limited knowledge. If I try and add another aggregation within the div is seems to fail. Is this possible and then to be used on the same chart?

 

Chart code currently looks like this (where its using the hardcoded values)

<ods-chart single-y-axis="true" single-y-axis-label="" scientific-display="true" align-month="true">
<ods-chart-query context="ctx" field-x="arealabel" maxpoints="0" sort="serie1-1">
<ods-chart-serie expression-y="value" chart-type="column" function-y="AVG" label-y="Constituency Average" color="#85ADAE" display-units="true" display-values="true" display-stack-values="false" scientific-display="true" color-thresholds=''{"color":"#fb9a99","value":]'>
</ods-chart-serie>
<ods-chart-serie expression-y="" chart-type="line" function-y="CONSTANT" label-y="Mean for Birmingham" color="#864192" display-units="true" scientific-display="true">
</ods-chart-serie>
<ods-chart-serie expression-y="" chart-type="line" function-y="CONSTANT" label-y="Mean for West Midlands combined authority" color="#DD2B60" display-units="true" scientific-display="true">
</ods-chart-serie>
<ods-chart-serie expression-y="" chart-type="line" function-y="CONSTANT" label-y="Mean for All English authorities" color="#FCAF17" display-units="true" scientific-display="true">
</ods-chart-serie>
</ods-chart-query>
</ods-chart>

 

Auto-translation 🪄

Je recherche des conseils. J'ai un ensemble de données contenant des valeurs pour les quartiers de Birmingham, l'Angleterre et la région. J'aimerais avoir un visuel (graphique à colonnes) qui montre chaque quartier. Mais ensuite une ligne de référence pour montrer la moyenne pour l'Angleterre et la région en fonction de leur dernière valeur. Pour le moment, je fais cela en utilisant des variables que je définis. Mais j'aimerais qu'il détermine automatiquement la dernière année et renvoie la dernière valeur pour l'Angleterre et la région plutôt que de la coder en dur dans les variables. Mon code ressemble à ceci ;

Update. I have got the numtiple aggregations working. But I cannot fathom how to have it return just the latest result for the dates available.

Also, the result for one is stored in the {{aggbham}} and displays OK, works fine in the line charts. But if I use it to determine the colour threshold in the code below. The graph fails to render. However, put the value in another variable it works fine.

<ods-chart-query context="ctx" field-x="arealabel" maxpoints="0" sort="serie1-1">
<ods-chart-serie expression-y="value" chart-type="column" function-y="AVG" label-y="Constituency Average" color="#85ADAE" display-units="true" display-values="true" display-stack-values="false" scientific-display="true" color-thresholds='[{"color":"#DD2B60","value": {{aggbham}} }]'>
</ods-chart-serie>
<ods-chart-serie expression-y="{{aggbham}}" chart-type="line" function-y="CONSTANT" label-y="Mean for Birmingham" color="#864192" display-units="true" scientific-display="true">
</ods-chart-serie>
<ods-chart-serie expression-y="{{aggwm}}" chart-type="line" function-y="CONSTANT" label-y="Mean for West Midlands combined authority" color="#DD2B60" display-units="true" scientific-display="true">
</ods-chart-serie>
<ods-chart-serie expression-y="{{aggeng}}" chart-type="line" function-y="CONSTANT" label-y="Mean for All English authorities" color="#FCAF17" display-units="true" scientific-display="true">
</ods-chart-serie>
</ods-chart-query>

 


Hello Danny,

 

To answer your need for the average of the latest date I would have suggested you to use ods-adv-analysis which has more capacity. You can solve this trouble by - getting your values for each year :

ods-adv-analysis-select=”avg(value)”

ods-adv-analysis-group-by=”year”

then order it by year

order-by=”year DESC ”

and take the first value to have only your last date :

ods-adv-analysis-limit=”1”

 

With this you can easily get your latest value with one widget.

 

For the color threshold use the syntax : 

color-thresholds=""{'color':'#DD2B60','value': }]"

“ can contain ‘ but ‘ can’t contain “ so this was creating an error.

 

I hope this will help you,


Best

Auto-translation 🪄

Bonjour Danny, Pour répondre à votre besoin de la moyenne de la dernière date, je vous aurais suggéré d'utiliser ods-adv-analysis qui a plus de capacité. Vous pouvez résoudre ce problème en - obtenant vos valeurs pour chaque année :ods-adv-analysis-select=”avg(value)”ods-adv-analysis-group-by=”year”puis en les classant par annéeorder-by=”year DESC ”et en prenant la première valeur pour n'avoir que votre dernière date :ods-adv-analysis-limit=”1” Avec cela, vous pouvez facilement obtenir votre dernière valeur avec un seul widget. Pour le seuil de couleur, utilisez la syntaxe : color-thresholds="r{'color':'#DD2B60','value': }]"“ peut contenir ‘ mais ‘ ne peut pas contenir “ donc cela créait une erreur. J'espère que cela vous aidera, Cordialement

Thanks @Aubin . You got me closer for the using of an aggregated value. It turns out I need to bind the value. So my corrected output was…

ng-attr-color-thresholds='s{"color":"#fb9a99", "value": ]'

 

Auto-translation 🪄

Merci @Aubin . Tu m'as rapproché de l'utilisation d'une valeur agrégée. Il s'avère que je dois lier la valeur. Donc ma sortie corrigée était… ng-attr-color-thresholds='l{"color":"#fb9a99", "value": ]' 

Reply