I am trying to use MQL queries to export data from Google Cloud Monitoring to BigQuery for long-term archiving. I've found that queries that group-by user generated metadata labels including a dash character (e.g "wdl-call-alias") do not seem to be compatible with MQL. I rely on a third-party system that generates these labels and they are not easy to change.
Is there a way to use MQL to group-by metadata labels that include dashes? I've included two cases below, for reference.
Working query using "sample" label:
fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/reserved_cores'
| group_by 1m, [value_reserved_cores_mean: mean(value.reserved_cores)]
| every 1m
| group_by [metadata.user.sample: metadata.user_labels.sample],
[value_reserved_cores_mean_aggregate: aggregate(value_reserved_cores_mean)]
Broken query using "wdl-call-alias" label:
fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/reserved_cores'
| group_by 1m, [value_reserved_cores_mean: mean(value.reserved_cores)]
| every 1m
| group_by [metadata.user.wdl-call-alias: metadata.user_labels.wdl-call-alias],
[value_reserved_cores_mean_aggregate: aggregate(value_reserved_cores_mean)]
Use the syntax: metadata.user_labels.c'wdl-call-alias'
Metadata uses the same syntax as column labels (it is kind of a pseudo-column), and column label components that are not identifiers need to be quoted using the c'....'
or c"...."
syntax.
So:
| group_by [metadata.user.wdl-call-alias: metadata.user_labels.c'wdl-call-alias'],
[value_reserved_cores_mean_aggregate: aggregate(value_reserved_cores_mean)]
Or more compactly:
| group_by [metadata.user_labels.c'wdl-call-alias'], .aggregate