У меня есть таблица обозревателя данных Azure, которая содержит значения полей свойств для объектов в моей исходной базе данных. В таблице есть строки для разных типов объектов, поэтому не все столбцы применимы к каждому типу объекта.

Я хотел бы запускать запросы, чтобы отображать данные для объектов, но проецировать только столбцы, заполненные значениями, а не столбцы, которые не применимы. Поэтому я не буду знать имена столбцов во время запроса, поскольку они запускаются действием, которое содержит только имя объекта, а не тип или схему.

2
James Turner 1 Мар 2021 в 01:16

1 ответ

Лучший ответ

Вот способ добиться этого (кредит Алекс):

datatable(col1:string, col2: string , col3:int) 
[ 
 'aa', '', 5,
 'cc', 'dd', int(null)
]
| where col1=="aa"
| as T
| extend values = pack_all()
| mv-apply values on 
(
    mv-expand kind = array  values
    | where isnotempty(values[1])
    | summarize EmptyValuesRemoved = make_bag(pack(tostring(values[0]), values[1]))
)
| project EmptyValuesRemoved
| evaluate bag_unpack(EmptyValuesRemoved)

Полученные результаты:

enter image description here

В случае, если данные были загружены как json, вы можете сохранить исходный объект в отдельном столбце, сопоставив корневой объект (используйте для этого обозначение «$»), тогда вам просто нужно вернуть этот столбец.

0
Avnera 1 Мар 2021 в 16:04