TOC

  1. Intro
  2. TagModel
  3. Structure
  4. TimeZones
  5. Units
  6. Grids
  7. Filters
    1. 概述
    2. 用法
    3. 语法
  8. Zinc
  9. Json
  10. Trio
  11. Csv
  12. Rest
  13. Ops
  14. Auth
  15. VFDs
  16. Networks
  17. Energy
  18. Zones
  19. AHUs
  20. VAVs
  21. UnitaryEquips
  22. Chillers
  23. Boilers
  24. Tanks
  25. ElecPanels
  26. Lighting
  27. Builds
  28. Bacnet
  29. ChangeLog
  30. License
Grids Zinc

Filters

概述

过滤器是用于构建匹配实体的谓词的简单查询语言。 Rest读操作 Ops#read 使用过滤器来对服务器执行临时查询。

用法

简单的用法只是一个标签名称,它匹配包含标签的所有记录(不管其值):

站点  // 查询任何具有“site”标签的记录

要匹配标签值,您可以使用一些相等或比较运算符:

geoPostalCode == "23220"   // 等于
geoPostalCode != "23220"   // 不等于
curVal < 75                // 小于
curVal <= 75               // 小于等于
curVal > 75                // 大于
curVal >= 75               // 大于等于

要比较的标量是使用 Zinc 格式进行编码的(除了以下几个例外) 你可以使用 and,or 或 not进行组合过滤:

site or equip             // 记录有 site 或者 equip 标签
equip and hvac            // 记录有 equip 或者 hvac 标签
equip and not ahu         // 记录有 equip 标签, 但是没有 ahu 标签

您可以使用 -> 来引用具有Ref值的标签。例如,如果您的 equip 记录有一个引用到站点的 siteRef 标签,则可以查询给定城市中的设备,例如:

equip and siteRef->geoCity == "Chicago"

读取上述表达式的方式是匹配一个实体,如果:

语法

过滤器的正式语法:

<filter>     :=  <condOr>
<condOr>     :=  <condAnd> ("or" <condAnd>)*
<condAnd>    :=  <term> ("and" <term>)*
<term>       :=  <parens> | <has> | <missing> | <cmp>
<parens>     :=  "(" <filter> ")"
<has>        :=  <path>
<missing>    :=  "not" <path>
<cmp>        :=  <path> <cmpOp> <val>
<cmpOp>      :=  "=" | "!=" | "<" | "<=" | ">" | ">="
<path>       :=  <name> ("->" <name>)*

<val>        :=  <bool> | <ref> | <str> | <uri> |
                 <number> | <date> | <time>
<bool>       := "true" or "false"
<number>     := same as Zinc (keywords not supported INF, -INF, NaN)
<ref>        := same as Zinc
<str>        := same as Zinc
<uri>        := same as Zinc
<date>       := same as Zinc
<time>       := same as Zinc

参见 Zinc grammar,对于那些复用 Zinc 的软件产品,可以参见Zinc语法。请注意,不支持Marker,Bin和DateTime标量。Bools编码为"true"或"false"(Zinc 编码为“T”或“F”)。

Grids Zinc