0

我正在编写一个查询来评估跨多个工作空间的表架构,以确保我们没有侵犯500 列表的限制。一旦我们接近,它将触发 Azure 警报。由于我们无法直接控制默认 AzureDiagnsotics 表的架构,因此这是一种在我们可能超过支持的最大阈值时发出警报的方法。

查询返回结果;但是,在测试时,我注意到当 Log Analytics 更新表的架构时查询偶尔会失败。这发生在我将不同的资源类型连接到工作区从而为其提供潜在的新架构信息之后。

它会抛出无法从“columnName”中总结出来的错误。'columnName' 值会随着时间的推移而改变,这让我相信自从发生更新以来它在读取架构时遇到了问题。一段时间后,查询始终返回结果。

以下是查询示例:

workspace("workspace1").AzureDiagnostics
|  getschema
| summarize count(ColumnName)
|project TotalColumns = count_ColumnName, Workspace = "workspace1" 
| where TotalColumns >400
| union (
workspace("workspace2").AzureDiagnostics
|  getschema
| summarize count(ColumnName)
|project TotalColumns = count_ColumnName, Workspace = "workspace2" 
| where TotalColumns >400
)

我的问题是,有没有办法编写类似于 SQL w/No Lock 的查询?这样即使没有提交,它仍然会返回模式。(我更改了 where 子句以便能够检查返回的记录)。

4

1 回答 1

0

如果我正确理解您的查询问题,您需要做两件事:

  1. 添加到联合 IsFuzzy=true - 避免没有返回结果的情况
  2. 通过扩展而不是项目添加工作区名称。您可以在合并后重命名该列。或者,您可以使用扩展来创建缺少的列。

关于您尝试解决的问题,我们正在 Azure Log Analytics 中积极工作,以共同避免这一切。我们现在正在努力为大多数 Azure 资源提供专用表,这样它就不会过度填充 AzureDiagnostics 表。一些 Azure 资源(如 Azure 数据工厂)可以选择控制是否使用专用表或 AzureDiagnistcs。请参阅此处的 #4:https ://docs.microsoft.com/en-us/azure/data-factory/monitor-using-azure-monitor#monitor-data-factory-metrics-with-azure-monitor

于 2019-12-29T07:37:09.350 回答