gpt4 book ai didi

Azure 表查询

转载 作者:行者123 更新时间:2023-12-02 06:34:37 25 4
gpt4 key购买 nike

总体而言,我对 Azure 表和 NOSQL 还不熟悉。

我目前在 Azure 表中拥有一个大约有 60,000 行的表。其中包含职位空缺,列有 ID(RowKey)、雇主(PartitionKey)、职位、地区、类别等列。

当网站上的某人执行搜索时,请求会发送到外部匹配系统。然后匹配系统将返回适用的职位。匹配引擎返回每个职位的 ID 和雇主。

搜索可能包含 10 个不同的雇主,涵盖 300 个职位。如果我使用的是 SQL Server 数据库,我只需在 ID 上创建一个“IN”子句,该 ID 将成为主键,以便从我的表中选择这些作业。

对于 Azure 表,推荐的方法是使用 PartitionKey(我已在其上创建了雇主),因此我的计划是向表中的每个雇主发出查询,然后合并结果,最后在传递到之前进行排序用户界面。

我的问题是我无法运行诸如“WHERE Employer =”MyEmployer”AND ID IN (1,2,3,4,5,6)之类的查询。

实现这一目标的最佳方法是什么?我不希望雇主的所有工作都返回,因为我可能不会全部使用它们。我希望根据我收到的 ID 从某个雇主处获得某些工作。

我认为这应该很简单,但到目前为止事实证明很棘手!

最佳答案

My problem here is that I can't run a query such as "WHERE Employer = "MyEmployer" AND ID IN (1,2,3,4,5,6).

您当然可以执行 IN 查询,尽管语法会有点不同。假设您使用 REST API 并使用 ODATA 语法编写查询,您将使用以下内容:

(PartitionKey eq 'MyEmployer' and (RowKey eq '1' or RowKey eq '2' or RowKey eq '3' or RowKey eq '4' or RowKey eq '5' or RowKey eq '6')

您需要考虑的一些事项:

  • 这将导致完整的分区扫描。如果分区中的实体数量较少,这可能不是问题,但随着实体数量的增加,这可能会成为问题。
  • 由于查询在请求中作为查询字符串传递到表服务,因此查询中可以包含的 or 子句数量有限。如果我没记错的话,查询字符串的最大长度是 1024 个字符。
  • 您可能需要考虑并行触发许多单个查询,其中每个查询将针对单个实体,例如PartitionKey eq 'MyEmployer' 和 RowKey eq '1'

最后,您可能想阅读存储团队的这篇博文:http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows-azure-tables.aspx 。这将为您提供非常好的见解。

关于Azure 表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26323283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com