支持的子句 - AWS IoT SiteWise

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

支持的子句

SELECT语句用于从一个或多个视图中检索数据。 AWS IoT SiteWise 支持JOININNER JOIN操作。

视图使用显式JOIN语法或子句中以逗号分隔的符号连接。FROM

一般性SELECT陈述:

SELECT expression [, ...] [ FROM table_name AS alias [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition ] [ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ] [, ...] ] [ LIMIT expression ]

包含不同子句的 SELECT 语句:

SELECT a.asset_name, a.asset_id, p.property_type, p.property_data_type, p.string_attribute_value, p.property_name FROM asset a, asset_property p WHERE a.asset_description LIKE '%description%' AND p.property_type IN ('attribute', 'metric') OR p.property_id IN ( SELECT property_id FROM raw_time_series WHERE event_timestamp BETWEEN TIMESTAMP '2025-01-01 00:00:00' AND TIMESTAMP '2025-01-02 00:00:00' GROUP BY asset_id, property_id HAVING COUNT(*) > 100 ) GROUP BY p.property_type HAVING COUNT(*) > 5 ORDER BY a.asset_name ASC LIMIT 20;
注意

隐式JOIN组合了两个或多个不同的表,而不使用基于 AWS IoT SiteWise的内部架构的JOIN关键字。这等效于JOIN在元数据表asset_id和原始数据表之间对和property_id字段执行。当从原始数据表中提取数据时,这种模式允许 SiteWise 在查询中利用任何给定的元数据筛选器,从而减少扫描的总体数据。

例 查询的:
SELECT a.asset_name, p.property_name, r.event_timestamp FROM asset a, asset_property p, raw_time_series r WHERE a.asset_name='my_asset' AND p.property_name='my_property'

上面的示例仅扫描属于指定元数据名称的资产属性的数据。

例 与上述查询相比,优化程度较低的等效查询:
SELECT a.asset_name, p.property_name, r.event_timestamp FROM asset a JOIN asset_property p ON a.asset_id=p.asset_id JOIN raw_time_series r ON p.asset_id=r.asset_id AND p.property_id=r.property_id WHERE a.asset_name='my_asset' AND p.property_name='my_property'

下面列出了每个条款的解释及其描述:

条款

签名

描述

LIMIT

LIMIT { count }

此子句将结果集限制为指定的行数。您可以使用LIMIT带或不带ORDER BYOFFSET子句。

LIMIT仅适用于 [0,2147483647] 中的非负整数。

ORDER BY

ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]

ORDER BY子句对查询的结果集进行排序。

GROUP BY

GROUP BY expression [, ...]

GROUP BY子句标识查询的分组列。它与聚合表达式一起使用。

HAVING

HAVING boolean-expression

HAVING子句筛选由 GROUP BY 子句创建的组行。

SUB SELECT

SELECT column1, column2 FROM table1 WHERE column3 IN (SELECT column4 FROM table2);

嵌入在另一条SELECT语句中的SELECT语句。

JOIN

SELECT column1, column2 FROM table1 JOIN table2 ON table1.column1 = table2.column1;

INNER JOIN

SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;

INNER JOIN返回两个表中符合联接条件的所有行。

UNION

query { UNION [ ALL ] } another_query

UNION运算符计算其两个参数的集合并集,自动从结果集中删除重复的记录。