Я пытаюсь принять некоторые данные Microsoft Flow API в Azure Log Analytics. Цель состоит в том, чтобы Power Automate отправлял JSON со сведениями о потоках в Log Analytics.
Вот пример JSON:
{
"body": [
{
"NAME": "XXXXX",
"ID": "/providers/Microsoft.ProcessSimple/environments/XXXXXXX/flows/XXXXXXX/runs/XXXXX",
"TYPE": "Microsoft.ProcessSimple/environments/flows/runs",
"START": "2024-04-23T21:59:59.8317555Z",
"END": "2024-04-23T22:23:08.8817048Z",
"STATUS": "Succeeded"
},
{
"NAME": "XXXXX",
"ID": "/providers/Microsoft.ProcessSimple/environments/XXXXXXX/flows/XXXXXXX/runs/XXXXX",
"TYPE": "Microsoft.ProcessSimple/environments/flows/runs",
"START": "2024-04-22T21:59:59.6368987Z",
"END": "2024-04-22T22:25:59.2561963Z",
"STATUS": "Succeeded"
},
{
"NAME": "XXXXX",
"ID": "/providers/Microsoft.ProcessSimple/environments/XXXXXXX/flows/XXXXXXX/runs/XXXXX",
"TYPE": "Microsoft.ProcessSimple/environments/flows/runs",
"START": "2024-04-21T22:00:00.4246672Z",
"END": "2024-04-21T22:24:54.7721214Z",
"STATUS": "Succeeded"
},
{
"NAME": "XXXXX",
"ID": "/providers/Microsoft.ProcessSimple/environments/XXXXXXX/flows/XXXXXXX/runs/XXXXXX",
"TYPE": "Microsoft.ProcessSimple/environments/flows/runs",
"START": "2024-04-17T09:49:45.8327243Z",
"END": "2024-04-17T09:50:46.3459275Z",
"STATUS": "Succeeded"
}
]
}
Впервые используя KQL, я много спрашивал GPT, но ничего не помогало. Моей последней попыткой было использовать mv-apply вместо mv-expand:
source
| extend parsedJson = parse_json(body)
| mv-apply parsedItem = parsedJson on
(
project
TimeGenerated = todatetime(parsedItem['START']), // Convert 'START' to DateTime
Name = tostring(parsedItem['NAME']),
ID = tostring(parsedItem['ID']),
Type = tostring(parsedItem['TYPE']),
StartTime = tostring(parsedItem['START']),
EndTime = tostring(parsedItem['END']),
Status = tostring(parsedItem['STATUS'])
)
Все еще не повезло, выдает мне ошибку несоответствия:
Error occurred while compiling query in query: SyntaxError:0x00000003 at 3:11 : mismatched input 'parsedItem' expecting {<EOF>, ';', '|', '.', '*', '[', '=~', '!~', 'notcontains', 'containscs', 'notcontainscs', '!contains', 'contains_cs', '!contains_cs', 'nothas', 'hascs', 'nothascs', '!has', 'has_cs', '!has_cs', 'startswith', '!startswith', 'startswith_cs', '!startswith_cs', 'endswith', '!endswith', 'endswith_cs', '!endswith_cs', 'matches regex', '/', '%', '+', '-', '<', '>', '<=', '>=', '==', '<>', '!=', 'and', 'between', 'contains', 'has', 'in', '!between', '!in', 'or'}
кажется, что внутри элемента «Body» каждый сегмент представляет собой число, и я думаю, именно поэтому это меня так ранит!
Привет! Если бы я мог иметь столбец в своей таблице аналитики журнала для каждого из свойств в примере JSON выше, это было бы здорово NAME|ID|TYPE|START|END|STATUS
У вас есть данные JSON, хранящиеся в столбце таблицы в Log Analytics?
Нет, данные в Power Automate представлены в формате JSON, указанном выше. Когда я пытаюсь создать пользовательскую таблицу аналитики журнала с этим JSON, у меня возникает проблема.
Я предполагаю, что вы пытаетесь написать это преобразование времени приема. Язык запросов в этом случае ограничен и не поддерживает полный KQL, поскольку его необходимо выполнять в очень больших масштабах без задержки данных. В частности, mv-apply не поддерживается. См. поддерживаемый KQL здесь: https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/data-collection-transformations-structure
Меир
Привет, да, я не знал об этом конкретном ограничении! Думаю, именно поэтому я не смог заставить его работать! MFSFT должно быть немного яснее об отсутствии поддержки mv-apply в своем сообщении об ошибке! Спасибо
Вы можете использовать design
ниже в Logic Apps для отправки данных и создания таблицы с пользовательским JSON:
Принял ваш вклад в Compose:
Затем:
Parse_json:
{
"type": "object",
"properties": {
"body": {
"type": "array",
"items": {
"type": "object",
"properties": {
"NAME": {
"type": "string"
},
"ID": {
"type": "string"
},
"TYPE": {
"type": "string"
},
"START": {
"type": "string"
},
"END": {
"type": "string"
},
"STATUS": {
"type": "string"
}
},
"required": [
"NAME",
"ID",
"TYPE",
"START",
"END",
"STATUS"
]
}
}
}
}
Подключение сборщика данных Azure Log Analytics:
Взятые значения снизу:
Output:
Таблица создана:
Логическое приложение:
Привет, кажется, ваш способ работает хорошо! Большое спасибо. Добавление к этому решению: не пытайтесь раньше создать таблицу в аналитике журналов. При использовании функции «Отправить данные» в Power Automate укажите имя таблицы, которая не существует, и она создаст ее в Log Analytics.
можете ли вы предоставить ожидаемый результат