Azure Data Explorer не сохраняет JSON

У меня есть таблица в базе данных Azure Data Explorer, определенная следующим образом:

.create table GetPrice (lpname: string, TimeUTC: datetime, base_volume: real, highest_bid: real, currency_pair: string, price: real, lowest_ask: real, change_percentage: real, quote_volume: real, high_24h: real, low_24h: real, EventProcessedUtcTime: datetime, current_time: datetime, ['guid']: string, epochtime: int, time_ms: real, channel: string, event: string)

Я получаю объект из внешнего API и анализирую его в JSON со следующим результатом:

{
    {
        "Time": 0,
        "Time_ms": 0,
        "Channel": "external",
        "event": "update",
        "Result": {
            "currency_pair": "BABA",
            "last": "0",
            "lowest_ask": null,
            "highest_bid": "71.93",
            "change_percentage": "0",
            "base_volume": "97",
            "quote_volume": null,
            "high_24h": "0",
            "low_24h": "0",
            "GUID": "<GUID>"
        },
        "TimeUTC": "2024-04-10T10:13:13.1732158Z",
        "LPName": "NAME",
        "Error": {
            "Code": 0,
            "Message": null
        }
    }
}

Проблема: в таблице GetPrice хранятся только TimeUTC, LPName, EventProcessedUtcTime и current_time.

Я не совсем понимаю, почему, если бы возникла проблема с вложенным объектом Result, то также должны быть заполнены Channel и event, но это не так.

Я попытался сгладить Result перед отправкой его в EventHub, но это тоже не сработало. Кроме того, я попытался создать новую таблицу и передать туда данные, но это тоже не удалось.

Я использую библиотеку Azure.Messaging.EventHubs для подключения и взаимодействия с ADX.

Любые указания или предложения приветствуются.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Причина, по которой в таблице TimeUTC хранятся только LPName, EventProcessedUtcTime, current_time и GetPrice, связана с тем, что группа ресурсов присутствует в регионе, а событие инициируется относительно этого временного кадра. Одним из способов решения этой проблемы является изменение местоположения ресурса.

// Create mapping command


.create table ['ravi'] ingestion json mapping 'ravi_mapping_1' '[{"column":"topic", "Properties":{"Path":"$[\'topic\']"}},{"column":"subject", "Properties":{"Path":"$[\'subject\']"}},{"column":"eventType", "Properties":{"Path":"$[\'eventType\']"}},{"column":"id", "Properties":{"Path":"$[\'id\']"}},{"column":"data", "Properties":{"Path":"$[\'data\']"}},{"column":"dataVersion", "Properties":{"Path":"$[\'dataVersion\']"}},{"column":"metadataVersion", "Properties":{"Path":"$[\'metadataVersion\']"}},{"column":"eventTime", "Properties":{"Path":"$[\'eventTime\']"}}]'



// Create table command



.create table ['ravi'] (['topic']:string, ['subject']:string, ['eventType']:string, ['id']:guid, ['data']:dynamic, ['dataVersion']:string, ['metadataVersion']:long, ['eventTime']:datetime)
  • Прием данных с помощью Kusto Azure Data Explorer с использованием .net.

  • Отправляйте и получайте события с помощью .NET в Azure Event Hubs Hubs

Примечание :

Azure.Messaging.EventHubs — только для подключения к концентратору событий, а Microsoft.Azure.Kusto.Ingest — для подключения к Azure Data Explorer. Один из способов приема данных из Центра событий в Azure Synapse Data Explorer. другой способ — получить данные из концентратора событий с помощью Azure Synapse Data Explorer (или) используйте Анализ данных в экземпляре Центров событий для анализа данных событий с помощью Azure Data Explorer.

  • Подключитесь к концентратору событий Azure, чтобы отправлять и получать события , используя Azure.Messaging.EventHubs с C# по приведенной выше ссылке.

Обозреватель данных Azure: Я создал таблицу и команду сопоставления для этого примера данных.

[
    {
        "currency_pair": "BABA",
        "last": "0",
        "lowest_ask": null,
        "highest_bid": "89.93",
        "change_percentage": "10",
        "base_volume": "197",
        "quote_volume": null,
        "high_24h": "0",
        "low_24h": "0",
        "GUID": "<GUID>",
        "nestedKey": {
            "nestedKey1": "nestedValue1"
        },
        "arrayKey": [
            "arrayValue1",
            "arrayValue2"
        ]
    }
]

// Create table command



.create table ['teja'] (['currency_pair']:string, ['last']:long, ['lowest_ask']:string, ['highest_bid']:real, ['change_percentage']:long, ['base_volume']:long, ['quote_volume']:string, ['high_24h']:long, ['low_24h']:long, ['GUID']:string, ['nestedKey']:dynamic, ['arrayKey']:dynamic)



// Create mapping command



.create table ['teja'] ingestion json mapping 'teja_mapping' '[{"column":"currency_pair", "Properties":{"Path":"$[\'currency_pair\']"}},{"column":"last", "Properties":{"Path":"$[\'last\']"}},{"column":"lowest_ask", "Properties":{"Path":"$[\'lowest_ask\']"}},{"column":"highest_bid", "Properties":{"Path":"$[\'highest_bid\']"}},{"column":"change_percentage", "Properties":{"Path":"$[\'change_percentage\']"}},{"column":"base_volume", "Properties":{"Path":"$[\'base_volume\']"}},{"column":"quote_volume", "Properties":{"Path":"$[\'quote_volume\']"}},{"column":"high_24h", "Properties":{"Path":"$[\'high_24h\']"}},{"column":"low_24h", "Properties":{"Path":"$[\'low_24h\']"}},{"column":"GUID", "Properties":{"Path":"$[\'GUID\']"}},{"column":"nestedKey", "Properties":{"Path":"$[\'nestedKey\']"}},{"column":"arrayKey", "Properties":{"Path":"$[\'arrayKey\']"}}]'

обязательно добавьте Channel, event и т. д. в команду table/table сопоставление .

Большое спасибо за расширенный ответ @Sampath. Это помогло мне увидеть более широкую картину. К вашему сведению, в данном конкретном случае проблема заключалась в сопоставлении таблицы. Я обновил его и теперь он работает!

George Vas 15.04.2024 08:49

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