如何筛选Azure日志或傻瓜的WCF数据服务筛选器

gil*_*ly3 41 wcf azure azure-storage azure-table-storage

我在WADLogsTable中查看我的Azure日志,并希望过滤结果,但我对如何执行此操作毫无头绪.有一个文本框说:

"输入WCF数据服务筛选器以限制返回的实体"

"WCF数据服务过滤器"的语法是什么?以下为我提供InvalidValueType错误,指出"指定的值无效.":

Timestamp gt '2011-04-20T00:00'
Run Code Online (Sandbox Code Playgroud)

我甚至关闭了吗?某处有方便的语法参考吗?

kni*_*hor 72

此查询应采用以下格式:

Timestamp gt datetime'2011-04-20T00:00:00'
Run Code Online (Sandbox Code Playgroud)

记住把它datetime放在那里是重要的一点.

每次都会让我感到惊讶,所以我使用OData概述作为参考.

  • +1,同时`Timestamp`必须完全按照这种方式大写,否则结果总是空的. (2认同)

Gau*_*tri 12

添加到knightffhor的响应,您当然可以编写一个由Timstamp过滤的查询,但这不是推荐的方法,因为查询"Timestamp"属性将导致全表扫描.而是在PartitionKey属性上查询此表.我在这里从其他线程复制我的响应(我可以远程捕获Azure Web/Worker角色的性能计数器吗?):

"这里的一个关键是要了解如何有效地查询这个表(和其他诊断表),其中之一,我们希望从诊断表是为在一定的时间段获取数据的事情.我们的自然本能会是来查询时间戳属性此表中.但是,这是一个糟糕的设计选择,因为你在Azure的表中的数据是在PartitionKey和RowKey索引知道.查询任何其他属性将导致全表扫描,这将在你的表中创建一个问题含有大量的关于这些日志表data.The好处是,在某种程度上PartitionKey值表示被收集的数据点时,基本上PartitionKey通过使用DateTime.Ticks的高阶位(UTC)创建的日期/时间.所以,如果你是为在一定日期/时间范围获取数据,首先你需要计算的蜱为您范围(UTC),然后在它前面的前面加上一个"0",并在查询中使用这些值.如果你使用RES查询 在T API中,您可以使用如下语法:PartitionKey ge'0 <从UTC中的日期/时间刻度>'和PartitionKey le'0 <到UTC中的日期/时间>'."

我写了一个博客张贴有关如何编写针对表存储WCF查询,这可能对你有用:http://blog.cerebrata.com/specifying-filter-criteria-when-querying-azure-table-storage-using- REST的API /

此外,如果您正在寻找用于查看和管理诊断数据的第三方工具,我建议您查看我们的产品Azure诊断管理器:/ Products/AzureDiagnosticsManager.此工具专为表面和管理Windows Azure诊断数据而构建.