azure 不会将新添加的列的数据写入Log Analytics工作区中的现有自定义表中

7gyucuyw  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(106)

我正在使用Azure日志分析工作区和自定义表,并根据github上的示例代码将一些数据发送到这个表中,即使用日志摄取API和DCR等。
一切正常。我可以很好地发送数据,除了当我更新这个自定义表并向其中添加新列,然后尝试根据它发送数据时。
数据被写入到表中之前定义的列,但不是新添加的列,它永远不会被写入。看起来它被丢弃或忽略了。
例如;
1.使用此示例数据创建表
{“rowid”:“1112223334440000”,“col1”:“data1”,“col2”:“data2”,“col3”:123
1.基于示例代码发送数据
1.更新表模式并添加col 0
1.再次发送数据,但现在使用col 0数据。
我相信在这个日志分析表中输入的任何新数据都应该填充,但在我的例子中没有。我试过很多次,等了好几个小时,但它从来没有为我工作。
以下是我的代码以防万一;

import os
import json
from azure.core.exceptions import HttpResponseError
from azure.identity import DefaultAzureCredential
from azure.monitor.ingestion import LogsIngestionClient

endpoint = os.environ['DATA_COLLECTION_ENDPOINT']
credential = DefaultAzureCredential()

client = LogsIngestionClient(
    endpoint=endpoint, credential=credential, logging_enable=True)

rule_id = os.environ['LOGS_DCR_RULE_ID']
body = [
{
    "rowid": "1112223334440000",
    "col0": "data0",
    "col1": "data1",
    "col2": "data2",
    "col3": "123"
}
]

try:
        client.upload(rule_id=rule_id,
                  stream_name=os.environ['LOGS_DCR_STREAM_NAME'], logs=body)
except HttpResponseError as e:
        print(f"Upload failed: {e}")

下面是表模式;

有人能解释一下为什么这不起作用吗?
谢谢你的时间。

vltsax25

vltsax251#

  • 此行为是预期的,因为添加新列时表中现有日志的架构不会自动更新。因此,新列将不会填充现有日志的数据。
  • 修改或重新发送现有日志可能会影响整体数据以及依赖于先前日志结构的任何分析或查询。

我已经尝试了相同的代码,你执行。

这里我们可以看到列已更新,但数据在内部受到影响。

  • 日志分析表不适用于实时模式演变。如果您需要架构灵活性和对日志结构的动态更改,您可能需要考虑使用Azure Data Explorer(ADX),这是一个原生支持架构演变的大数据分析平台。

相关问题