如何使用 python SDK 筛选 Azure 表中的特定行
How do I filter specific rows in Azure Tables using python SDK
我在 Azure 存储 table 中有以下架构的数据:
PartitionKey TimeStamp Name
.. ... ...
我想 return 所有名称以 mem
开头的实体。我正试图在 python.
中实现这一目标
我只能找到有关在 SDK 的过滤器参数中进行完整字符串比较的文档 (https://docs.microsoft.com/en-us/rest/api/storageservices/Querying-Tables-and-Entities?redirectedfrom=MSDN)。有没有办法进行部分比较?
等效的SQL查询是
SELECT * from table where NAME LIKE mem%
azure table 存储中没有这样的运算符。
但是有一个技巧(这里有一个 blog 关于这个)可以用于您的目的。像下面这样定义你的 $filter:
"Name ge 'mem' and Name lt 'men'"
这里是测试代码(更多细节请参考这个doc),运行正常:
from azure.cosmosdb.table.tableservice import TableService
from azure.cosmosdb.table.models import Entity
table_service = TableService(account_name='xxx', account_key='xxx')
tasks = table_service.query_entities(
'your_table_name', filter="Name ge 'mem' and Name lt 'men'")
for task in tasks:
print(task.Name)
我这边的测试结果:
我在 Azure 存储 table 中有以下架构的数据:
PartitionKey TimeStamp Name
.. ... ...
我想 return 所有名称以 mem
开头的实体。我正试图在 python.
我只能找到有关在 SDK 的过滤器参数中进行完整字符串比较的文档 (https://docs.microsoft.com/en-us/rest/api/storageservices/Querying-Tables-and-Entities?redirectedfrom=MSDN)。有没有办法进行部分比较?
等效的SQL查询是
SELECT * from table where NAME LIKE mem%
azure table 存储中没有这样的运算符。
但是有一个技巧(这里有一个 blog 关于这个)可以用于您的目的。像下面这样定义你的 $filter:
"Name ge 'mem' and Name lt 'men'"
这里是测试代码(更多细节请参考这个doc),运行正常:
from azure.cosmosdb.table.tableservice import TableService
from azure.cosmosdb.table.models import Entity
table_service = TableService(account_name='xxx', account_key='xxx')
tasks = table_service.query_entities(
'your_table_name', filter="Name ge 'mem' and Name lt 'men'")
for task in tasks:
print(task.Name)
我这边的测试结果: