支援的子句 - 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'

每個子句及其描述的說明如下所示:

子句

Signature

Description

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 運算子會計算其兩個引數的集合聯集,自動從結果集中移除重複的記錄。