mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-01 14:47:38 +00:00
bb6424aeca
This query arg is needed for https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6545 in order to return top N groups with the biggest number of hits.
70 lines
1.4 KiB
Text
70 lines
1.4 KiB
Text
{% import (
|
|
"slices"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/logstorage"
|
|
) %}
|
|
|
|
{% stripspace %}
|
|
|
|
// FieldsForHits formats labels for /select/logsql/hits response
|
|
{% func FieldsForHits(columns []logstorage.BlockColumn, rowIdx int) %}
|
|
{
|
|
{% if len(columns) > 0 %}
|
|
{%q= columns[0].Name %}:{%q= columns[0].Values[rowIdx] %}
|
|
{% for _, c := range columns[1:] %}
|
|
,{%q= c.Name %}:{%q= c.Values[rowIdx] %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
}
|
|
{% endfunc %}
|
|
|
|
{% func HitsSeries(m map[string]*hitsSeries) %}
|
|
{
|
|
{% code
|
|
sortedKeys := make([]string, 0, len(m))
|
|
for k := range m {
|
|
sortedKeys = append(sortedKeys, k)
|
|
}
|
|
slices.Sort(sortedKeys)
|
|
%}
|
|
"hits":[
|
|
{% if len(sortedKeys) > 0 %}
|
|
{%= hitsSeriesLine(m, sortedKeys[0]) %}
|
|
{% for _, k := range sortedKeys[1:] %}
|
|
,{%= hitsSeriesLine(m, k) %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
]
|
|
}
|
|
{% endfunc %}
|
|
|
|
{% func hitsSeriesLine(m map[string]*hitsSeries, k string) %}
|
|
{
|
|
{% code
|
|
hs := m[k]
|
|
hs.sort()
|
|
timestamps := hs.timestamps
|
|
hits := hs.hits
|
|
%}
|
|
"fields":{%s= k %},
|
|
"timestamps":[
|
|
{% if len(timestamps) > 0 %}
|
|
{%q= timestamps[0] %}
|
|
{% for _, ts := range timestamps[1:] %}
|
|
,{%q= ts %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
],
|
|
"values":[
|
|
{% if len(hits) > 0 %}
|
|
{%dul= hits[0] %}
|
|
{% for _, v := range hits[1:] %}
|
|
,{%dul= v %}
|
|
{% endfor %}
|
|
{% endif %}
|
|
],
|
|
"total":{%dul= hs.hitsTotal %}
|
|
}
|
|
{% endfunc %}
|
|
|
|
{% endstripspace %}
|