Home > Mobile >  How to project column name and value from JSON in KQL?
How to project column name and value from JSON in KQL?

Time:12-06

I have the following 'SetOfSignals' in KQL (using mv-expand):

"SetOfSignals": {
    "name": "CompanyName",
    "signals": [
        {
            "name": "AmbientAirTemperature",
            "unit": "C",
            "dataType": "Float32",
            "values": [
                "11.5"
            ]
        },
        {
            "name": "AverageEnergyConsumption",
            "unit": "W",
            "dataType": "Float32",
            "values": [
                "780.0"
            ]
        }
}

and now I want to project the signal names with corresponding values.

I want it to look like this:

... AmbientAirTemperature AverageEnergyConsumption
... 11.5 780.0

but using something like | extend AmbientAirTemperature = signals.name doesn't works since there are multiple strings within "signals" with the name "name".

Thanks.

CodePudding user response:

datatable(SetOfSignals:dynamic)
[
    dynamic
    (
        {
            "name": "CompanyName",
            "signals": [
                {
                    "name": "AmbientAirTemperature",
                    "unit": "C",
                    "dataType": "Float32",
                    "values": [
                        "11.5"
                    ]
                },
                {
                    "name": "AverageEnergyConsumption",
                    "unit": "W",
                    "dataType": "Float32",
                    "values": [
                        "780.0"
                    ]
                }
            ]
        }
    )
]
| mv-apply signal = SetOfSignals.signals on 
  (
    summarize make_bag(bag_pack(tostring(signal.name), signal.values[0]))
  )
| project-away SetOfSignals
| evaluate bag_unpack(bag_)
AmbientAirTemperature AverageEnergyConsumption
11.5 780.0

Fiddle

  • Related