跨工作区查询

API 允许跨多个工作区进行查询。 可通过两种方法执行这些查询:隐式和显式。 隐式方法对请求的工作区中的数据执行自动联合,而显式方法可以提高精确度,并允许控制从每个工作区访问数据的方式。

任一跨资源查询中的最大资源数限制为 10 个。

资源标识符

对于隐式或显式跨工作区查询,需指定你要访问的资源。 有四种类型的标识符:

  • 名称 - OMS 工作区的用户可读字符串 workspaceName<>
  • 限定名称 - subscriptionName/resourceGroup/workspaceName 格式的字符串<><><>
  • 工作区 ID - GUID 字符串
  • Azure 资源 ID - /subscriptions/subscriptionId/resourceGroups/resourceGroup/providers/microsoft.operationalinsights /workspaces/workspaceName 格式的字符串<><><>

注意

强烈建议使用工作区的唯一工作区 ID 或 Azure 资源 ID 来标识工作区,因为它们可以消除歧义且性能更高。

隐式跨工作区查询

对于隐式语法,请指定要包含在查询范围内的工作区。 API 对列表中提供的每个应用程序执行单个查询。 跨工作区 POST 的语法为:

示例:

    POST https://api.loganalytics.azure.cn/v1/workspaces/00000000-0000-0000-0000-000000000000/query
    
    Authorization: Bearer <user token>
    Content-Type: application/json
    
    {
       "query": "union * | where TimeGenerated > ago(1d) | summarize count() by Type, TenantId",
       "workspaces": ["AIFabrikamDemo1", "AIFabrikamDemo2"]
    }

与 GET 相同的请求(为便于阅读查询参数,示例中已换行):

    GET https://api.loganalytics.azure.cn/v1/workspaces/00000000-0000-0000-0000-000000000000/query?query=union+*+%7C+where+TimeGenerated+%3E+ago(1d)+%7C+summarize+count()+by+Type%2C+TenantId&workspaces=AIFabrikamDemo1%2CAIFabrikamDemo2
    
    
    Authorization: Bearer <user token>
    Content-Type: application/json

此查询将对 AIFabrikamDemo1、AIFabrikamDemo2 和由 GUID 00000000-0000-0000-0000-000000000000 表示的工作区运行,并返回结果的并集。 在 GET 版本中,工作区查询参数是要查询的资源的逗号分隔列表。

显式跨工作区查询

在某些情况下,你可能希望对所需工作区中更有针对性的数据子集运行查询,并合并来自多个工作区的数据。 对于这种情况,请在查询中显式指明工作区和表,类似于在表之间进行跨群集或跨数据库查询或联接。

引用另一个应用程序的语法是:workspace('identifier').table。

示例:

    POST https://api.loganalytics.azure.cn/v1/workspaces/00000000-0000-0000-0000-000000000000/query
    Content-Type: application/json
    Authorization: Bearer <user token>
    
    {
    "query": "union (AzureActivity | where timestamp > ago(1d)), (workspaces('00000000-0000-0000-0000-000000000000').AzureActivity | where timestamp> ago(1d))"
    }

还可以对此查询进行 URL 编码并使其成为 GET 请求。 在这种情况下,其他工作区没有查询参数,因为工作区将从查询内部引用。

限制

出于速率限制的目的,一个跨资源查询将算作一个 API 查询,不管查询中有多少个资源。