private TsdbTableEntity Convert(BinaryWriter writer, MemoryStream stream, TEntry entry, string partitionKey) { var entity = new TsdbTableEntity(); entity.RowKey = CosmosTablesKeyCalculator.CalculateRowKey(entry.GetTimestamp()); entity.PartitionKey = partitionKey; CosmosTablesSerializer.SerializeEntry <TKey, TEntry>(writer, entry); entity.P0 = stream.ToArray(); return(entity); }
private string CreateBeforeFilter(TKey key, DateTime to) { var id = _keyConverter.Convert(key); var toRowKey = CosmosTablesKeyCalculator.CalculateRowKey(to); var toPartitionKey = CosmosTablesKeyCalculator.CalculatePartitionKey(id, key, to, _partitioningProvider); // 7125 var fromPartitionKey = CosmosTablesKeyCalculator.CalculateMinPartitionKey(id, key, _partitioningProvider); // 9999 return(TableQuery.CombineFilters( TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThanOrEqual, fromPartitionKey), TableOperators.And, TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, toPartitionKey)), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThan, toRowKey))); }
private string CreateSpecificPartitionFilter(TKey key, DateTime from, DateTime to, string partitionKeyRange) { var id = _keyConverter.Convert(key); var fromRowKey = CosmosTablesKeyCalculator.CalculateRowKey(from); var toRowKey = CosmosTablesKeyCalculator.CalculateRowKey(to); var partitionKey = CosmosTablesKeyCalculator.CalculatePartitionKey(id, partitionKeyRange); return(TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey), TableOperators.And, TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual, fromRowKey), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThan, toRowKey)))); }
private string CreateGeneralFilter(TKey key, DateTime from, DateTime to) { var id = _keyConverter.Convert(key); var fromRowKey = CosmosTablesKeyCalculator.CalculateRowKey(from); var toRowKey = CosmosTablesKeyCalculator.CalculateRowKey(to); var fromPartitionKey = CosmosTablesKeyCalculator.CalculatePartitionKey(id, key, from, _partitioningProvider); var toPartitionKey = CosmosTablesKeyCalculator.CalculatePartitionKey(id, key, to.AddTicks(-1), _partitioningProvider); // -1 tick because it is an approximation value and we use gte operation return(TableQuery.CombineFilters( TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThanOrEqual, fromPartitionKey), TableOperators.And, TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, toPartitionKey)), TableOperators.And, TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual, fromRowKey), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThan, toRowKey)))); }