问题描述
我已经运行了命令
az account list locations --output table
它向我显示了三列,其中包含值:displayName
、Name
、RegionaldisplayName
。
现在我只想查看两列,例如 Name
和 RegionaldisplayName
。所以我运行截图中附加的命令,它只显示一列。知道使用查询命令显示两列的正确方法是什么吗?
解决方法
基本上,您查询中唯一的错误是“区分大小写的名称”
当您尝试查询 JSON 输出时,我们应该在 --query
参数中提供 Json 数组值名称的确切名称。
您的完整查询将是(请参阅 name
而不是 Name
和 regionalDisplayName
)
az account list-locations --query "[].{name: name,region: regionalDisplayName}" --output table
有关更多信息,请查看此处发布的答案和详细说明。 https://docs.microsoft.com/en-us/answers/questions/302069/az-cli-not-showing-correct-output.html?childToView=302127#answer-302127
,请尝试以下操作:
SELECT Orders.OrderID,Customers.CustomerName,Orders.OrderDate,Products.ProductName,Products.ProductID
FROM Orders
INNER JOIN Products
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
这是我运行上述命令时得到的(部分)输出:
az account list-locations --output table --query '[].{Name:name,DisplayName:displayName}'
我使用的是 az CLI 2.8 版。
,在 JMESPath 中,当使用 filters and multiselect hashes 时,您正在以键/值方式重新创建 JSON 对象。
所以当你做类似的事情时
[*].{foo: bar}
那么,foo
就是你的新密钥,它是你喜欢的任何东西。
并且 bar
是一个值,如果不在引号内,则应该是源 JSON 中的现有值。
因此,在您的情况下,您只是颠倒了应该是键和值的内容,因为您的源 JSON 中有一个键 Name
和一个键 RegionalDisplayName
。
所以你必须这样做:
az account list-locations --query "[].{name: name,region: regionalDisplayName}" --output table
为了让两列包含您所期望的内容,标题分别为 name
和 region
。