For each target, I have some KV/associative array/hash/map data. I can inject this data as labels (each either as a tuple entirely within the label key; as separate keys and values with keys embedded in label names and values as the labels’ values; or aggregated together with all tuples merged into one value).
That is, I have either:
__tmp_asTuple_foo_fooValue: 1
__tmp_asTuple_bar_SomethingElse: 1
__tmp_asTuple_quux_NobodyWantsMe: 1
or
__tmp_byKey_foo: fooValue
__tmp_byKey_bar: SomethingElse
__tmp_byKey_quux: NobodyWantsMe
or
__tmp_allTogetherNow: 'foo:fooValue;bar:SomethingElse;quux:NobodyWantsMe'
Along with raw series data like:
series1 { myKey = "foo" }
series2 { myKey = "bar" }
series3 { myKey = "baz" }
What I want to have in the end is:
series1 { myKey = "foo", myValue = "fooValue" }
series2 { myKey = "bar", myValue = "SomethingElse" }
series3 { myKey = "baz" }
I think that I’d be able to do this with metric_relabel_configs
if backreferences were supported, or if my key space/domain was small and closed (technically it is closed, but there’s trillions of potential keys, so enumerating all of the possibilities isn’t anywhere close to feasible).
I’m at a loss on how to do this sort of denormalisation/chained lookup via relabeling (where we select which label to relabel based on the value of a different label (with a static/known name)). Is this possible, or do I have to resign myself to ugly and cumbersome lookups at query time?