Как выбрать диапазон RowKey с помощью хранилища таблиц Azure? - PullRequest
5 голосов
/ 09 мая 2011

Я хотел бы запросить мое табличное хранилище Azure, используя PrimaryKey, плюс я хотел бы проверить, находится ли мой RowKey в пределах диапазона.Например диапазон от 02001 до 02999

Может кто-нибудь сказать мне, как я могу это сделать?Я понимаю, как запросить PK с помощью простого:

where fooEntiy.PartitionKey == partition

, но я не знаю, как я могу запросить fooEntity.RowKey.

Также, если я сделаю это, указав диапазон, тобудет ли он по-прежнему извлекать все записи для этого раздела и затем проверять, соответствуют ли они диапазону?

Спасибо за ваш совет,

Mariko

Ответы [ 2 ]

13 голосов
/ 09 мая 2011

Ваш запрос может выглядеть примерно так:

where fooEntity.PartitionKey == partionKey
    && fooEntity.RowKey.CompareTo(lowerBoundRowKey) >= 0
    && fooEntity.RowKey.CompareTo(upperBoundRowKey) <= 0

При этом должны быть возвращены все элементы между lowerBoundRowKey и upperBoundRowKey, включая эти значения (если вы не хотите, чтобы оно было включено, просто используйте> и <, а не> = и <=). </p>

Вам не нужно будет выполнять какую-либо другую фильтрацию, кроме этой.

Похоже, что вы уже добавляете свои числа, которые храните в RowKey, с ведущими нулями, что хорошо, так как этот диапазон будет лексическим, а не числовым.

например. выполнение этого запроса с lowerBoundKey = 10 и upperBoundKey = 100 не вернет элемент с RowKey, равным 20.

Однако, если вы дополните его нулями, lowerBoundKey = 00010 и upperBoundKey = 00100 вернут элемент с RowKey, равным 00020.

2 голосов
/ 09 мая 2011

Это приведет к объектам, использующим указанный диапазон значений RowKey с указанным PartitionKey:

"PartitionKey eq 'your partitonKey value' и (RowKey gt '02001' и RowKey lt '02999')"

Найти дополнительную информацию здесь и здесь . Надеюсь, это поможет.

...