Проблемы с импортом Json в Azure Log Analytics

Я пытаюсь принять некоторые данные 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» каждый сегмент представляет собой число, и я думаю, именно поэтому это меня так ранит!

можете ли вы предоставить ожидаемый результат

RithwikBojja 24.04.2024 14:37

Привет! Если бы я мог иметь столбец в своей таблице аналитики журнала для каждого из свойств в примере JSON выше, это было бы здорово NAME|ID|TYPE|START|END|STATUS

iDOHandbags 24.04.2024 16:57

У вас есть данные JSON, хранящиеся в столбце таблицы в Log Analytics?

RithwikBojja 24.04.2024 17:00

Нет, данные в Power Automate представлены в формате JSON, указанном выше. Когда я пытаюсь создать пользовательскую таблицу аналитики журнала с этим JSON, у меня возникает проблема.

iDOHandbags 25.04.2024 13:20
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
4
87
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я предполагаю, что вы пытаетесь написать это преобразование времени приема. Язык запросов в этом случае ограничен и не поддерживает полный KQL, поскольку его необходимо выполнять в очень больших масштабах без задержки данных. В частности, mv-apply не поддерживается. См. поддерживаемый KQL здесь: https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/data-collection-transformations-structure

Меир

Привет, да, я не знал об этом конкретном ограничении! Думаю, именно поэтому я не смог заставить его работать! MFSFT должно быть немного яснее об отсутствии поддержки mv-apply в своем сообщении об ошибке! Спасибо

iDOHandbags 26.04.2024 11:24
Ответ принят как подходящий

Вы можете использовать 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.

iDOHandbags 29.04.2024 09:28

Другие вопросы по теме

Асинхронное скачивание нескольких больших двоичных объектов Azure
Ссылка на шаблоны с использованием переменной из другого репозитория в том же проекте Azure DevOps
Невозможно получить всех пользователей из Microsoft Graph с помощью Python SDK
Как автоматически получать уведомления о деградации Azure Devops по электронной почте... например, оповещения о работоспособности службы?
Управление API - заставить параметр set-query-parameter работать без учета регистра
Как решить проблему с доверенной подписью в конвейере Azure DevOps
В сводке по сборке Azure Devops отображается только пункт «Начало работы» в разделе «Тесты и покрытие» для сборки, содержащей допустимое покрытие кода
Развертывание контейнера функций Azure — прослушивание порта, отличного от указанного в моем файле докеров
Application Insights не регистрируется из консольного приложения
Изолированное приложение Azure Function 8.0 — исключение SQL