如何在Azure工作簿中具有条件参数值?

xqnpmsa8  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(131)

如何在Azure工作簿中具有条件参数值?
我想有一个参数叫做环境。它有一些文本值。例如,它有两个值testproduction
此外,我还想使用另外两个参数:订阅和app_insights。
现在,我想根据环境参数值自动选择subscription和app_insights值。
因此,当环境参数为test时,我是如何尝试为subscription参数选择测试订阅的:

summarize by subscriptionId
| project subscriptionId=strcat("/subscriptions/", subscriptionId),
selected = case("{environment}" == "test" and subscriptionId == "test subscription id", true, false)

字符串


的数据
但似乎环境参数并没有取代"{environment}"占位符。如果我删除"{environment}" == "test"检查,那么测试订阅将如预期的那样被选中。
如何使用一个参数来决定另一个参数的值?有没有更好的方法来实现我想要的?最好我还希望subscription和app_insights参数不显示给工作簿的用户,并防止他们被手动编辑。

ahy6op9u

ahy6op9u1#

这是100%支持的。
参数必须在引用之前声明,然后参数可以从左到右引用,就像代码一样。顺序在步骤和参数中都很重要。
如果您在Azure Monitor中的工作簿中打开“Resource Picker”示例:

的数据

  • 有一个隐藏参数,用于显示订阅选择器和资源选择器所依赖的资源类型
  • 订阅之后的一切都取决于所选择的订阅等。
  • 资源选择器取决于选择哪些资源组等
  • 其下方的网格取决于资源类型、子节点和所选资源等。

如果您查看此处resources参数的确切查询,其查询文本为:

Resources
| where type in~({ResourceTypes})
| extend resourceGroupId = strcat('/subscriptions/', subscriptionId, '/resourceGroups/', resourceGroup)
| where resourceGroupId in~({ResourceGroups}) or '*' in~({ResourceGroups})
| order by name asc
| extend Rank = row_number()
| project value = id, label = name, selected = Rank <= 10, group = resourceGroup

字符串
在这里您可以看到ResourceGroups参数和ResourceTypes参数都在查询中被引用,并在查询时被替换。在ARG查询的订阅字段中选择Subscriptions参数。
如果一个参数在查询中没有被替换,那么这个参数在查询之前就不存在(或者这个参数没有被标记为必需的并且没有值,所以它被替换为一个空字符串)。
编辑查询步骤时,该步骤右上角的工具栏中有一个项目,用于打开查询,并在相应的视图(资源图形浏览器刀片、日志查询刀片或ADX查询站点等)中替换所有参数,以便您可以确切地查看参数是如何被替换的。

相关问题