

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# からのデータのクエリ AWS IoT SiteWise
<a name="query-industrial-data"></a>

 AWS IoT SiteWise API オペレーションを使用して、特定の時間間隔でアセットプロパティの現在の値、履歴値、集計をクエリできます。 は、さまざまな統合ニーズを満たすために複数のクエリインターフェイス AWS IoT SiteWise を提供します。
+ **直接 API オペレーション** - 特定のデータ取得ニーズに対応するシンプルでターゲットを絞った API コール
+ **SQL のようなクエリ言語** - 複雑なデータ分析のための強力で柔軟なクエリ
+ **ODBC ドライバー** - ビジネスインテリジェンスツールおよびアプリケーションとの統合

これらのクエリ機能を使用して、次の操作を行います。
+ 運用データに関するリアルタイムのインサイトを取得する
+ 過去の傾向とパターンを分析する
+ 産業アセット全体のパフォーマンスメトリクスを計算する
+ IoT データをエンタープライズシステムやダッシュボードと統合する
+ 産業データを活用するカスタムアプリケーションを構築する

たとえば、特定のプロパティ値を持つすべてのアセットを検出したり、データのカスタム表現を構築したり、 AWS IoT SiteWise アセットに保存されている産業データと統合するソフトウェアソリューションを開発したりできます。また、 AWS IoT SiteWise Monitorではリアルタイムのアセットデータを調べることもできます。SiteWise Monitor の設定方法については、「[でデータをモニタリングする AWS IoT SiteWise Monitor](monitor-data.md)」を参照してください。

このセクションで説明するオペレーションは、タイムスタンプ、品質、値 (TQV) 構造を含むプロパティ値オブジェクトを返します。
+ `timestamp` には、ナノ秒のオフセットがある現在の UNIX エポック時刻 (秒単位) が含まれます。
+ `quality` には、データポイントの品質を示す、以下のいずれかの文字列が含まれます。
  + `GOOD` - データはいずれの問題の影響も受けません。
  + `BAD` - データはセンサーの障害などの問題による影響を受けます。
  + `UNCERTAIN` - データはセンサーの不正確さなどの問題による影響を受けます。
+ `value` には、プロパティのタイプに応じて、以下のいずれかのフィールドが含まれます。
  + `booleanValue`
  + `doubleValue`
  + `integerValue`
  + `stringValue`
  + `nullValue`

**Topics**
+ [

# で現在のアセットプロパティ値をクエリする AWS IoT SiteWise
](current-values.md)
+ [

# の履歴アセットプロパティ値をクエリする AWS IoT SiteWise
](historical-values.md)
+ [

# でアセットプロパティの集計をクエリする AWS IoT SiteWise
](aggregates.md)
+ [

# AWS IoT SiteWise クエリ言語
](sql.md)
+ [

# クエリの最適化
](query-optimize.md)
+ [

# ODBC
](query-ODBC.md)

# で現在のアセットプロパティ値をクエリする AWS IoT SiteWise
<a name="current-values"></a>

このチュートリアルでは、アセットプロパティの現在の値を取得する 2 つの方法を示します。 AWS IoT SiteWise コンソールを使用するか、 AWS Command Line Interface () で API を使用できますAWS CLI。

**Topics**
+ [

## アセットプロパティの現在の値をクエリ (コンソール)
](#query-current-value-console)
+ [

## アセットプロパティの現在の値をクエリ (AWS CLI)
](#query-current-value-cli)

## アセットプロパティの現在の値をクエリ (コンソール)
<a name="query-current-value-console"></a>

 AWS IoT SiteWise コンソールを使用して、アセットプロパティの現在の値を表示できます。

**アセットプロパティの現在の値を取得するには (コンソール)**

1. <a name="sitewise-open-console"></a>[AWS IoT SiteWise コンソール](https://console.aws.amazon.com/iotsitewise/)に移動します。

1. <a name="sitewise-choose-assets"></a>ナビゲーションペインで [**Assets (アセット) **] を選択します。

1. クエリするプロパティを持つアセットを選択します。

1. 矢印アイコンを選択して、アセット階層を展開してアセットを検索できます。

1. プロパティの種類のタブを選択します。たとえば、測定プロパティの現在の値を表示するには、[**測定**] を選択します。

1. 表示するプロパティを検索します。現在の値が [**最新の値**] 列に表示されます。

## アセットプロパティの現在の値をクエリ (AWS CLI)
<a name="query-current-value-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用して、アセットプロパティの現在の値をクエリできます。

[GetAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html) オペレーションを使用して、アセットプロパティの現在の値をクエリします。

アセットプロパティを特定するには、次のいずれかを指定します。
+ データが送信されるアセットプロパティの `assetId` と `propertyId`。
+ データストリームのエイリアスである `propertyAlias` (例えば、`/company/windfarm/3/turbine/7/temperature`)。このオプションを使用するには、最初にアセットプロパティのエイリアスを設定する必要があります。プロパティのエイリアスを設定するには、「[のデータストリームを管理する AWS IoT SiteWise](manage-data-streams.md)」を参照してください。

**アセットプロパティの現在の値を取得するには (AWS CLI)**
+ 次のコマンドを実行して、アセットプロパティの現在の値を取得します。*asset-id* をアセットの ID に置き換え、*property-id* をプロパティの ID に置き換えます。

  ```
  aws iotsitewise get-asset-property-value \
    --asset-id asset-id \
    --property-id property-id
  ```

  オペレーションは、プロパティの現在の TQV を含むレスポンスを次の形式で返します。

  ```
  {
    "propertyValue": {
      "value": {
        "booleanValue": Boolean,
        "doubleValue": Number,
        "integerValue": Number,
        "stringValue": "String",
        "nullValue": {
            "valueType": "String"
        }
      },
      "timestamp": {
        "timeInSeconds": Number,
        "offsetInNanos": Number
      },
      "quality": "String"
    }
  }
  ```

# の履歴アセットプロパティ値をクエリする AWS IoT SiteWise
<a name="historical-values"></a>

 AWS IoT SiteWise API [GetAssetPropertyValueHistory](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html) オペレーションを使用して、アセットプロパティの履歴値をクエリできます。

アセットプロパティを特定するには、次のいずれかを指定します。
+ データが送信されるアセットプロパティの `assetId` と `propertyId`。
+ データストリームのエイリアスである `propertyAlias` (例えば、`/company/windfarm/3/turbine/7/temperature`)。このオプションを使用するには、最初にアセットプロパティのエイリアスを設定する必要があります。プロパティのエイリアスを設定するには、「[のデータストリームを管理する AWS IoT SiteWise](manage-data-streams.md)」を参照してください。

以下のパラメータのいずれかを渡して、結果を絞り込みます。
+ `startDate` - 履歴データをクエリる範囲の開始点を (Unix エポックタイムで秒単位)。
+ `endDate` - 履歴データをクエリする範囲の終端を (Unix エポックタイムで秒単位)。
+ `maxResults` - 1 回のリクエストで返す結果の最大数。デフォルトは `20` 結果です。
+ `nextToken` - このオペレーションの前の呼び出しから返されたページ割りトークン。
+ `timeOrdering` - 返された値に適用する順序。`ASCENDING` または `DESCENDING`。
+ `qualities` – 結果をフィルタリングする品質: `GOOD`、`BAD` または `UNCERTAIN`。

**アセットプロパティの値の履歴をクエリするには (AWS CLI)**

1. 次のコマンドを実行して、アセットプロパティの値の履歴を取得します。このコマンドは、特定の 10 分間隔でプロパティの履歴をクエリします。*asset-id* をアセットの ID に置き換え、*property-id* をプロパティの ID に置き換えます。日付パラメータをクエリする間隔に置き換えます。

   ```
   aws iotsitewise get-asset-property-value-history \
     --asset-id asset-id \
     --property-id property-id \
     --start-date 1575216000 \
     --end-date 1575216600
   ```

   オペレーションは、プロパティの履歴 TQV を含むレスポンスを次の形式で返します。

   ```
   {
     "assetPropertyValueHistory": [
       {
         "value": {
           "booleanValue": Boolean,
           "doubleValue": Number,
           "integerValue": Number,
           "stringValue": "String",
           "nullValue": {
               "valueType": "String"
           }
         },
         "timestamp": {
           "timeInSeconds": Number,
           "offsetInNanos": Number
         },
         "quality": "String"
       }
     ],
     "nextToken": "String"
   }
   ```

1. より多くの値エントリが存在する場合、`nextToken` フィールドからページ割りトークンを後続の [GetAssetPropertyValueHistory](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html) オペレーションの呼び出しに渡すことができます。

# でアセットプロパティの集計をクエリする AWS IoT SiteWise
<a name="aggregates"></a>

AWS IoT SiteWise は、集計されたアセットプロパティ値を自動的に計算します。これは、複数の時間間隔で計算される一連の基本メトリクスです。 は、アセットプロパティに対して 1 分、1 時間、および 1 日ごとに次の集計を AWS IoT SiteWise 計算します。
+ **[average]** (平均) - 時間間隔におけるプロパティ値の平均 (中間)。
+ **[count]** (カウント) - 時間間隔におけるプロパティのデータポイント数
+ **[maximum]** (最大) - 時間間隔におけるプロパティの最大値。
+ **[minimum]** (最小) - 時間間隔におけるプロパティの最小値。
+ **[standard deviation]** (標準偏差) - 時間間隔におけるプロパティ値の標準偏差。
+ **[sum]** (合計) - 時間間隔におけるプロパティ値の合計。

文字列やブール値などの数値以外のプロパティの場合、 はカウント集計のみを AWS IoT SiteWise 計算します。

アセットデータのカスタムメトリクスを計算することもできます。メトリクスプロパティを使用して、オペレーション固有の集計を定義します。メトリクスプロパティは、 AWS IoT SiteWise API 用に事前計算されていない追加の集計関数と時間間隔を提供します。詳細については、「[プロパティおよびその他のアセットからのデータを集計する (メトリクス)](metrics.md)」を参照してください。

**Topics**
+ [

## アセットプロパティの集計 (API)
](#aggregates-api)
+ [

## アセットプロパティの集計 (AWS CLI)
](#aggregates-cli)

## アセットプロパティの集計 (API)
<a name="aggregates-api"></a>

 AWS IoT SiteWise API を使用して、アセットプロパティの集計を取得します。

[GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html) オペレーションを使用して、アセットプロパティの集計をクエリします。

アセットプロパティを特定するには、次のいずれかを指定します。
+ データが送信されるアセットプロパティの `assetId` と `propertyId`。
+ データストリームのエイリアスである `propertyAlias` (例えば、`/company/windfarm/3/turbine/7/temperature`)。このオプションを使用するには、最初にアセットプロパティのエイリアスを設定する必要があります。プロパティのエイリアスを設定するには、「[のデータストリームを管理する AWS IoT SiteWise](manage-data-streams.md)」を参照してください。

次の必須パラメータを渡す必要があります。
+ `aggregateTypes` - 取得する集計のリスト。`AVERAGE`、`COUNT`、`MAXIMUM`、`MINIMUM`、`STANDARD_DEVIATION`、`SUM` のいずれかを指定できます。
+ `resolution` – メトリクスを取得する時間間隔: `1m` (1 分)`15m`、 (15 分)`1h`、 (1 時間）、`1d`または (1 日）。
+ `startDate` - 履歴データをクエリる範囲の開始点を (Unix エポックタイムで秒単位)。
+ `endDate` - 履歴データをクエリする範囲の終端を (Unix エポックタイムで秒単位)。

次のパラメータのいずれかを渡して、結果を絞り込むこともできます。
+ `maxResults` - 1 回のリクエストで返す結果の最大数。デフォルトは `20` 結果です。
+ `nextToken` - このオペレーションの前の呼び出しから返されたページ割りトークン。
+ `timeOrdering` - 返された値に適用する順序。`ASCENDING` または `DESCENDING`。
+ `qualities` – 結果をフィルタリングする品質: `GOOD`、`BAD` または `UNCERTAIN`。

**注記**  
[GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html) オペレーションは、このセクションで説明する他のオペレーションとは異なる形式の TQV を返します。`value` 構造には、リクエスト内の各 `aggregateTypes` のフィールドが含まれます。`timestamp` には、集計が発生した時間 (秒単位の Unix エポック時間) が含まれます。

## アセットプロパティの集計 (AWS CLI)
<a name="aggregates-cli"></a>

**アセットプロパティの集計をクエリするには (AWS CLI)**

1. アセットプロパティの集計を取得するには、次のコマンドを実行します。このコマンドは、特定の 1 時間間隔で 1 時間の分解能で平均と合計をクエリします。*asset-id* をアセットの ID に置き換え、*property-id* をプロパティの ID に置き換えます。パラメータをクエリする集計と間隔に置き換えます。

   ```
   aws iotsitewise get-asset-property-aggregates \
     --asset-id asset-id \
     --property-id property-id \
     --start-date 1575216000 \
     --end-date 1575219600 \
     --aggregate-types AVERAGE SUM \
     --resolution 1h
   ```

   オペレーションは、プロパティの履歴 TQV を含むレスポンスを次の形式で返します。レスポンスには、リクエストされた集計のみが含まれます。

   ```
   {
     "aggregatedValues": [
       {
         "timestamp": Number,
         "quality": "String",
         "value": {
           "average": Number,
           "count": Number,
           "maximum": Number,
           "minimum": Number,
           "standardDeviation": Number,
           "sum": Number
         }
       }
     ],
     "nextToken": "String"
   }
   ```

1. より多くの値エントリが存在する場合、`nextToken` フィールドから後続の [GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html) オペレーションの呼び出しにページ割りトークンを渡すことができます。

**注記**  
 クエリ範囲に`null`値 TQVs[AssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetPropertyValue.html) API」を参照してください。カウントを除くすべての統計は、文字列 TQVs の統計と同様に`null`レスポンスになります。クエリ範囲にダブルタイプ TQVs`Double.NaN`が含まれている場合、カウントを除くすべての計算は になります`Double.NaN`。

# AWS IoT SiteWise クエリ言語
<a name="sql"></a>

 AWS IoT SiteWise データ取得 [ExecuteQuery](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteQuery.html) API オペレーションを使用すると、宣言的な構造定義に関する情報と、それに関連付けられた時系列データを以下から取得できます。
+  モデル
+ アセット
+ 測定値
+ metrics
+ 変換
+ 集計

これは、1 つの API リクエストで、クエリステートメントのような SQL を使用して実行できます。

**注記**  
この機能は、 AWS GovCloud (米国西部）、カナダ (中部）、中国 (北京）、米国東部 (オハイオ) を除く AWS IoT SiteWise 、 が利用可能なすべての リージョンで使用できます。

**Topics**
+ [

# のクエリ言語リファレンス AWS IoT SiteWise
](query-reference.md)

# のクエリ言語リファレンス AWS IoT SiteWise
<a name="query-reference"></a>

 AWS IoT SiteWise は、データを操作するための豊富なクエリ言語をサポートしています。使用可能なデータ型、演算子、関数、およびコンストラクトについて、以下のトピックで説明します。

クエリ言語で AWS IoT SiteWise クエリを記述[クエリの例](sql-examples.md)するには、「」を参照してください。

**Topics**
+ [

# クエリリファレンスビュー
](query-reference-views.md)
+ [

# サポートされているデータ型
](supported-data-types.md)
+ [

# サポートされている句
](supported-clauses.md)
+ [

# 論理演算子
](sql-supported-logical.md)
+ [

# 比較演算子
](sql-supported-comparision.md)
+ [

# SQL 関数
](sql-functions.md)
+ [

# クエリの例
](sql-examples.md)

# クエリリファレンスビュー
<a name="query-reference-views"></a>

このセクションでは、プロセスメタデータやテレメトリデータなど AWS IoT SiteWise、 のビューを理解するのに役立つ情報を提供します。

次の表に、ビューの名前と説明を示します。


**データモデル**  

|  **ビュー名**  |  **ビューの説明**  | 
| --- | --- | 
|  アセット  |  アセットとモデルの派生に関する情報を含んでいます。  | 
|  asset\$1property  |  アセットプロパティの構造に関する情報を含んでいます。  | 
|  raw\$1time\$1series  |  時系列の履歴データを含んでいます。  | 
|  latest\$1value\$1time\$1series  |  時系列の最新値を含んでいます。  | 
|  precomputed\$1aggregates  |  自動的に計算された集計されたアセットプロパティ値を含んでいます。これらは、複数の時間間隔で計算される一連の基本メトリクスです。  | 

次のビューは、各ビューの列名とデータ型を一覧表示します。


**View:asset**  

|  **列名**  |  **datatype**  | 
| --- | --- | 
|  asset\$1id  |  string  | 
|  asset\$1name  |  string  | 
|  asset\$1description  |  string  | 
|  asset\$1model\$1id  |  string  | 
|  parent\$1asset\$1id  |  string  | 
| asset\$1external\$1id | string | 
| asset\$1model\$1external\$1id | string | 
| hierarchy\$1id | string | 


**View:asset\$1property**  

|  **列名**  |  **datatype**  | 
| --- | --- | 
|  asset\$1id  |  string  | 
|  property\$1id  |  string  | 
|  property\$1name  |  string  | 
|  property\$1alias  |  string  | 
|  property\$1external\$1id  |  string  | 
|  asset\$1composite\$1model\$1id  |  string  | 
|  property\$1type  |  string  | 
|  property\$1data\$1type  |  string  | 
|  int\$1attribute\$1value  |  integer  | 
|  double\$1attribute\$1value  |  double  | 
|  ブール値  |  boolean  | 
|  string\$1attribute\$1value  |  string  | 


**View:raw\$1time\$1series**  

|  **列名**  |  **datatype**  | 
| --- | --- | 
|  asset\$1id  |  string  | 
|  property\$1id  |  string  | 
|  property\$1alias  |  string  | 
|  event\$1timestamp  |  timestamp  | 
|  quality  |  string  | 
|  boolean\$1value  |  boolean  | 
|  int\$1value  |  integer  | 
|  double\$1value  |  double  | 
|  string\$1value  |  string  | 


**View:latest\$1value\$1time\$1series**  

|  **列名**  |  **datatype**  | 
| --- | --- | 
|  asset\$1id  |  string  | 
|  property\$1id  |  string  | 
|  property\$1alias  |  string  | 
|  event\$1timestamp  |  timestamp  | 
|  quality  |  string  | 
|  boolean\$1value  |  boolean  | 
|  int\$1value  |  integer  | 
|  double\$1value  |  double  | 
|  string\$1value  |  string  | 


**View:precomputed\$1aggregates**  

|  **列名**  |  **datatype**  | 
| --- | --- | 
|  asset\$1id  |  string  | 
|  property\$1id  |  string  | 
|  property\$1alias  |  string  | 
|  event\$1timestamp  |  timestamp  | 
|  quality  |  string  | 
|  resolution  |  string  | 
|  sum\$1value  |  double  | 
|  count\$1value  |  integer  | 
|  average\$1value  |  double  | 
|  maximum\$1value  |  double  | 
|  minimum\$1value  |  double  | 
|  stdev\$1value  |  double  | 

# サポートされているデータ型
<a name="supported-data-types"></a>

AWS IoT SiteWise クエリ言語は、次のデータ型をサポートしています。


**スカラー値**  

|  **データ型**  |  **説明**  | 
| --- | --- | 
|  `STRING`  |  最大長 1024 バイトの文字列。  | 
|  `INTEGER`  |  `-2,147,483,648 to 2,147,483,647` からの範囲の符号付き 32 ビット整数。  | 
|  `DOUBLE`  |  の範囲が の浮動小数点数`–10^100 to 10^100`、または`IEEE 754`倍精度`Nan`の浮動小数点数。  | 
|  `BOOLEAN`  |  `true` または `false`  | 
|  `TIMESTAMP`  |  ISO-8601 準拠のタイムスタンプ: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/supported-data-types.html)  | 

**注記**  
`Null`: 定義されたデータがない`true`ことを示すブール値。

**Example**  
`TIMESTAMP` 値の例:  

```
TIMESTAMP '2025-12-21 23:59:59.999Z'
TIMESTAMP '2025-12-21 23:59:59+23:59'
'2025-12-21 23:59:59'
'2025-12-21T23:59:59.123+11:11'
```

**注記**  
 倍精度データは正確ではありません。一部の値は正確に変換されず、精度が制限されているため、すべての実数を表すわけではありません。クエリ内の浮動小数点データは、内部的に表される値と同じではない場合があります。入力された数の精度が高すぎると、値は四捨五入されます。

# サポートされている句
<a name="supported-clauses"></a>

`SELECT` ステートメントは、1 つ以上のビューからデータを取得するために使用されます。 は `JOIN`および `INNER JOIN`オペレーション AWS IoT SiteWise をサポートします。

ビューは、明示的な`JOIN`構文、または `FROM`句のカンマ区切り表記で結合されます。

**Example**  
一般的な`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 ]
```

**Example**  
さまざまな句を含む 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`は、内部スキーマに基づく `JOIN`キーワードを使用せずに、2 AWS IoT SiteWiseつ以上の異なるテーブルを組み合わせます。これは、メタデータ`asset_id`テーブルと raw データテーブル間の フィールドと `property_id`フィールド`JOIN`で を実行するのと同じです。このパターンにより、SiteWise は、スキャンされた全体的なデータが少ない方法で raw データテーブルから取得するときに、クエリ内の特定のメタデータフィルターを活用できます。  

**Example クエリの :**  

```
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'
```
上記の例では、指定されたメタデータ名に属するアセットプロパティのデータのみをスキャンします。  

**Example 上記のクエリと同等に最適化されていません。**  

```
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`  |  <pre>LIMIT { count }</pre>  |  この句は、結果セットを指定された行数に制限します。および `ORDER BY``OFFSET``LIMIT`句の有無にかかわらず、 を使用できます。 `LIMIT` は、[0,2147483647] の負以外の整数でのみ機能します。  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  `ORDER BY` 句は、クエリの結果セットをソートします。   `ORDER BY` 句の集計で選択した列を参照する場合は、名前やエイリアスではなく、列の序数インデックスを使用します。 <pre>SELECT AVG(t.double_value)<br />FROM latest_value_time_series t<br />GROUP BY t.asset_id<br />ORDER BY 1</pre>   | 
|  `GROUP BY`  |  <pre>GROUP BY expression [, ...]</pre>  |  `GROUP BY` 句は、クエリのグループ化列を識別します。これは集計式と組み合わせて使用されます。  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  `HAVING` 句は、GROUP BY 句によって作成されたグループ行をフィルタリングします。  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  別の`SELECT`ステートメントに埋め込まれた`SELECT`ステートメント。  | 
|  `JOIN`  |  <pre>SELECT column1, column2<br />FROM table1 JOIN table2<br />ON table1.column1 = table2.column1;<br /></pre>  | 
|  `INNER JOIN`  |  <pre>SELECT columns<br />FROM table1<br />INNER JOIN table2 ON table1.column = table2.column;<br /></pre>  |  は、結合条件に一致する両方のテーブルのすべての行`INNER JOIN`を返します。  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  `UNION` 演算子は 2 つの引数の集合和を計算し、結果セットから重複するレコードを自動的に削除します。  | 

# 論理演算子
<a name="sql-supported-logical"></a>

AWS IoT SiteWise は、次の論理演算子をサポートしています。


|  **演算子**  |  **署名**  |  **説明**  | 
| --- | --- | --- | 
|  `AND`  |  a `AND` b  |  両方の値が true の場合、`TRUE`  | 
|  `OR`  |  a `OR` b  |  `TRUE` 1 つの値が true の場合  | 
|  `NOT`  |  `NOT` 式  |  `TRUE` 式が false の場合、および式が true `FALSE`の場合  | 
|  `IN`  |  x `IN`式  |  `TRUE` 式の if 値  | 
|  `BETWEEN`  |  `BETWEEN` a `AND` b  |  `TRUE` 上限と下限の間の値の場合、 には両方の制限が含まれます。  | 
|  `LIKE`  |  `LIKE` パターン  |  `TRUE` 値がパターンの場合 `LIKE` はワイルドカードをサポートしています。例については、以下を参照してください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-supported-logical.html)  | 

すべての論理演算子の例:


|  **関数**  |  **例**  | 
| --- | --- | 
|  AND  |  <pre>SELECT a.asset_name <br />   FROM asset AS a, latest_value_time_series AS t <br />   WHERE t.int_value > 30 AND t.event_timestamp > TIMESTAMP '2025-05-15 00:00:01'<br /></pre>  | 
|  または  |  <pre>SELECT a.asset_name <br />   FROM asset AS a<br />   WHERE a.asset_name like 'abc' OR a.asset_name like 'pqr'<br /></pre>  | 
|  NOT  |  <pre>SELECT ma.asset_id AS a_id<br />   FROM asset AS ma<br />   WHERE (ma.asset_id NOT LIKE 'some%patterna%' escape 'a') AND ma.asset_id='abc'<br /></pre>  | 
|  IN  |  <pre>SELECT a.asset_name <br />   FROM asset AS a<br />   WHERE a.asset_name IN ('abc', 'pqr')<br /></pre>  | 
|  BETWEEN  |  <pre>SELECT asset_id, int_value, event_timestamp AS i_v <br />   FROM raw_time_series<br />   WHERE event_timestamp BETWEEN TIMESTAMP '2025-04-15 00:00:01' and TIMESTAMP '2025-05-15 00:00:01'  <br /></pre>  | 
|  LIKE  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-supported-logical.html)  | 

# 比較演算子
<a name="sql-supported-comparision"></a>

AWS IoT SiteWise では、次の比較演算子がサポートされています。すべての比較オペレーションは、組み込みデータ型で使用でき、ブール値に評価されます。


**論理演算子**  

|  **演算子**  |  **説明**  | 
| --- | --- | 
|  `<`  |  Less than  | 
|  `>`  |  Greater than  | 
|  `<=`  |  以下  | 
|  `>=`  |  以上  | 
|  `=`  |  Equals  | 
|  `!=`  |  等しくない  | 


**数値以外の比較オペレーションのトゥルーステーブル**  

|  **タイプ**  |  **タイプ >= x**  |  **タイプ <= x**  |  **タイプ > x**  |  **タイプ < x**  |  **タイプ = x**  |  **\$1= x と入力します。**  | 
| --- | --- | --- | --- | --- | --- | --- | 
|  `NULL`  |  `FALSE`  |  `FALSE`  |  `FALSE`  |  `FALSE`  |  `FALSE`  |  `TRUE`  | 

一部の述語は演算子のように動作しますが、特別な構文があります。以下を参照してください。


**Comparision 述語**  

|  **演算子**  |  **説明**  | 
| --- | --- | 
|  `IS NULL`  |  値が であるかどうかをテストします`NULL`。  | 
|  `IS NOT NULL`  |  値が でないかどうかをテストします`NULL`。  | 

## NaN 演算子
<a name="sql-supported-comparision-nan"></a>

 `NaN`、または「数値ではない」は、浮動小数点演算の特殊な値です。以下は、`NaN`比較とその仕組みのリストです。
+ `NaN` 値は一重引用符で囲む必要があります。たとえば、`NaN`「」です。
+ `NaN` 値は互いに等しいと見なされます。
+ `NaN` が他の数値より大きい。
+ `AVG()`、、 などの集計関数`STDDEV()`で`SUM()`、いずれかの値が の場合`NaN`、結果は になります`NaN`。
+ `MAX()` や などの集計関数では`MIN()`、`NaN`値は計算に含まれます。


**NaN 値の比較**  

|  **比較**  |  **結果**  | 
| --- | --- | 
|  `'NaN' ≥ x`  |  正  | 
|  `'NaN' ≤ x`  |  x が NaN と等しい場合は true、それ以外の場合は False  | 
|  `'NaN' > x`  |  x が NaN に等しい場合は False、それ以外の場合は True  | 
|  `'NaN' < x`  |  誤  | 
|  `'NaN' = x`  |  x が NaN と等しい場合は true、それ以外の場合は False  | 
|  `'NaN' != x`  |  x が NaN に等しい場合は False、それ以外の場合は True  | 

# SQL 関数
<a name="sql-functions"></a>

 サポートされている関数グループは次のとおりです。

**Topics**
+ [

# スカラー関数
](sql-functions-scalar.md)
+ [

# 集計関数
](sql-functions-aggregated.md)

# スカラー関数
<a name="sql-functions-scalar"></a>

 スカラー関数は 1 つ以上の入力値を取得し、1 つの出力値を返します。データ操作と取得のために SQL (構造化クエリ言語) で広く使用されており、データ処理タスクの効率が向上します。

**Topics**
+ [

# Null データ関数
](sql-functions-null.md)
+ [

# 文字列関数
](sql-functions-string.md)
+ [

# 数学関数
](sql-functions-math.md)
+ [

# 日時関数
](sql-functions-date.md)
+ [

# 型変換関数
](sql-functions-type-conv.md)

# Null データ関数
<a name="sql-functions-null"></a>

 NULL データ関数は、値がないことを表す NULL 値を処理または操作します。関数を使用すると、NULLs他の値に置き換えたり、値が NULL であるかどうかを確認したり、特定の方法で NULLsを処理するオペレーションを実行したりできます。


|  **関数**  |  **署名**  |  **説明**  | 
| --- | --- | --- | 
|  `COALESCE`  |   COALESCE (expression1、expression2、...、expressionN)   |  すべての式が null と評価された場合、COALESCE は null を返します。式は同じタイプである必要があります。  | 

**Example COALESCE 関数の**  

```
SELECT COALESCE (l.double_value, 100) AS non_double_value FROM latest_value_time_series AS l LIMIT 1
```

# 文字列関数
<a name="sql-functions-string"></a>

 文字列関数は、テキストデータの操作と処理に使用される組み込みツールです。これにより、連結、抽出、フォーマット、文字列内の検索などのタスクが有効になります。これらの関数は、データベース内のテキストベースのデータのクリーニング、変換、分析に不可欠です。


**文字列関数**  

|  **関数**  |  **署名**  |  **説明**  | 
| --- | --- | --- | 
|  `LENGTH`  |   長さ (文字列)   |  文字列の長さを返します。  | 
|  `CONCAT`  |   CONCAT (文字列、文字列)   |  文字列内の引数を連結します。  | 
|  `SUBSTR`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-string.html)  |  次のいずれかを返します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-string.html) 開始パラメータに 1 ベースのインデックス作成を使用します。  | 
|  `UPPER`  |   UPPER (文字列)   |  入力文字列の文字を大文字に変換します。  | 
|  `LOWER`  |   LOWER (文字列)   |  入力文字列の文字を小文字に変換します。  | 
|  `TRIM`  |   TRIM (文字列)   |  文字列の先頭、末尾、または両側からスペース文字を削除します。  | 
|  `LTRIM`  |   LTRIM (文字列)   |  文字列の先頭からスペース文字を削除します。  | 
|  `RTRIM`  |   RTRIM (文字列)   |  文字列の末尾からスペース文字を削除します。  | 
|  `STR_REPLACE`  |   STR\$1REPLACE (文字列、 から へ)   |  指定された部分文字列のすべての出現を、指定された別の部分文字列に置き換えます。  | 

すべての 関数の例:


|  **関数**  |  **例**  | 
| --- | --- | 
|  LENGTH  |  `SELECT LENGTH(a.asset_id) AS asset_id_length FROM asset AS a`  | 
|  CONCAT  |   `SELECT CONCAT(p.property_id, p.property_name) FROM asset_property AS p`   | 
|  SUBSTR  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-string.html)  | 
|  UPPER  |   `SELECT UPPER(d.string_value) AS up_string FROM raw_time_series AS d`   | 
|  LOWER  |   `SELECT LOWER(d.string_value) AS low_string FROM raw_time_series AS d`   | 
|  TRIM  |   `SELECT TRIM(d.string_value) AS tm_string FROM raw_time_series AS d`   | 
|  LTRIM  |   `SELECT LTRIM(d.string_value) AS ltrim_string FROM raw_time_series AS d`   | 
|  RTRIM  |   `SELECT RTRIM(d.string_value) AS rtrim_string FROM raw_time_series AS d`   | 
|  STR\$1REPLACE  |   `SELECT STR_REPLACE(d.string_value, 'abc', 'def') AS replaced_string FROM raw_time_series AS d`   | 

## 連結演算子
<a name="sql-operators-concatenation"></a>

 連結演算子 `||`またはパイプ演算子 は、2 つの文字列を結合します。`CONCAT` 関数の代わりに使用でき、複数の文字列を組み合わせると読みやすくなります。

**Example 連結演算子の**  

```
SELECT a.asset_name || ' - ' || p.property_name 
  AS full_name
  FROM asset a, asset_property p
```

# 数学関数
<a name="sql-functions-math"></a>

 数学関数は、SQL クエリ内で数値データの計算を実行するために使用される事前定義された数学演算です。これらは、データベースからデータを抽出して個別に処理することなく、データを操作および変換する方法を提供します。


**数学関数**  

|  **関数**  |  **署名**  |  **説明**  | 
| --- | --- | --- | 
|  `POWER`  |  POWER (int\$1double、int\$1double)  |  2 番目の引数の累乗に上げられた最初の引数の値を返します。  | 
|  `ROUND`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-math.html)  |  最も近い整数に丸めます。  | 
|  `FLOOR`  |   FLOOR (int\$1double)   |  指定された値以下の最大の整数を返します。  | 

すべての 関数の例:


|  **関数**  |  **例**  | 
| --- | --- | 
|  POWER  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-math.html)  | 
|  ROUND  |   `ROUND (32.12435, 3)`   | 
|  FLOOR  |   `FLOOR (21.2)`   | 

# 日時関数
<a name="sql-functions-date"></a>

 日付時刻関数は、日付と時刻で機能します。これらの関数を使用すると、日付の特定コンポーネントを抽出し、計算を実行し、日付値を操作できます。

これらの関数で許可される識別子は次のとおりです。
+ YEAR
+ MONTH
+ DAY
+ HOUR
+ MINUTE
+ SECOND


|  **関数**  |  **署名**  |  **説明**  | 
| --- | --- | --- | 
|  `NOW`  |   NOW ()   |  ミリ秒の精度で現在のタイムスタンプを返します。これは、クエリ内で実行された時点の正確な時間を提供します。  | 
|  `DATE_ADD`  |  DATE\$1ADD (識別子、間隔\$1期間、列)  |  日付/時刻と日数/時間、または日付/時刻と日付/時間間隔の合計を返します。  | 
|  `DATE_SUB`  |  DATE\$1SUB (識別子、間隔\$1期間、列)  |  日付/時刻と日数/時間の差、または日付/時刻と日付/時間間隔の差を返します。  | 
|  `TIMESTAMP_ADD`  |  TIMESTAMP\$1ADD (識別子、間隔\$1期間、列)  |  指定された時間単位の時間間隔を日時式に追加します。  | 
|  `TIMESTAMP_SUB`  |  TIMESTAMP\$1SUB (識別子、間隔\$1期間、列)  |  指定された時間単位の時間間隔を日時式から減算します。  | 
|  `CAST`  |  CAST (式 AS TIMESTAMP FORMAT パターン)  |  指定された形式パターンを使用して、文字列式をタイムスタンプに変換します。一般的なパターンには、標準の日時形式`'yyyy-MM-dd HH:mm:ss'`が含まれます。例: `SELECT CAST('2023-12-25 14:30:00' AS TIMESTAMP) AS converted_timestamp`  | 

**Example リストされた関数を使用した SQL クエリの :**  

```
SELECT r.asset_id, r.int_value,
  date_add(DAY, 7, r.event_timestamp) AS date_in_future,
  date_sub(YEAR, 2, r.event_timestamp) AS date_in_past,
  timestamp_add(DAY, 2, r.event_timestamp) AS timestamp_in_future,
  timestamp_sub(DAY, 2, r.event_timestamp) AS timestamp_in_past,
  now() AS time_now
FROM raw_time_series AS r
```

# 型変換関数
<a name="sql-functions-type-conv"></a>

 型変換関数は、値のデータ型をある値から別の値に変更するために使用されます。データの互換性を確保し、特定の形式のデータを必要とするオペレーションを実行するために不可欠です。


|  **関数**  |  **署名**  |  **説明**  | 
| --- | --- | --- | 
|  `TO_DATE`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 
|  `TO_TIMESTAMP`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 
|  `TO_TIME`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 
|  `CAST`  |  CAST (<式> AS <データ型>)  |  エンティティ、または評価される式を 1 つの型から別の型に変換します。 サポートされているデータ型は次のとおりです。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 

**Example リストされた関数を使用した SQL クエリの :**  

```
SELECT TO_TIMESTAMP (100) AS timestamp_value,
  TO_DATE(r.event_timestamp) AS date_value,
  TO_TIME(r.event_timestamp) AS time_value
FROM raw_time_series AS r
```

# 集計関数
<a name="sql-functions-aggregated"></a>

 集計関数は、複数のデータ行にわたって計算を実行して 1 つの要約結果を生成するデータベースオペレーションです。これらの関数は、データセットを分析して、合計、平均、カウント、その他の統計メジャーなどの計算された値を返します。


|  **関数**  |  **署名**  |  **説明**  | 
| --- | --- | --- | 
|  `AVG`  |  AVG (式)  |  数値式の平均を返します。  | 
|  `COUNT`  |  COUNT (式)  |  指定された条件に一致する行数を返します。  | 
|  `MAX`  |  MAX (式)  |  選択した式の最大値を返します。  | 
|  `MIN`  |  MIN (式)  |  選択した式の最小値を返します。  | 
|  `SUM`  |  SUM (式)  |  数値式の合計を返します。  | 
|  `STDDEV`  |  STDDEV (式)  |  サンプル標準偏差を返します。  | 
|  `GROUP BY`  |  GROUP BY 式  |  グループ化列によって作成された行を返します。  | 
|  `HAVING`  |  HAVING ブール式  |  `GROUP BY` 句でフィルタリングされたグループ行を返します。  | 

すべての 関数の例:


|  **関数**  |  **例**  | 
| --- | --- | 
|  AVG  |  <pre>SELECT d.asset_id, d.property_id, AVG(d.int_value) FROM raw_time_series AS d</pre>  | 
|  COUNT  |  <pre>SELECT COUNT(d.int_value) FROM raw_time_series AS d</pre>  | 
|  MAX  |  <pre>SELECT MAX(d.int_value) FROM raw_time_series AS d</pre>  | 
|  MIN  |  <pre>SELECT MIN(d.int_value) FROM raw_time_series AS d</pre>  | 
|  SUM  |  <pre>SELECT SUM(d.int_value) FROM raw_time_series AS d</pre>  | 
|  STDDEV  |  <pre>SELECT STDDEV(d.int_value) FROM raw_time_series AS d</pre>  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/sql-functions-aggregated.html)  |  <pre>SELECT MAX(d.int_value) AS max_int_value, d.asset_id <br />FROM raw_time_series AS d <br />GROUP BY d.asset_id <br />HAVING MAX(d.int_value) > 5                      <br /></pre>  | 

# クエリの例
<a name="sql-examples"></a>

## メタデータフィルタリング
<a name="sql-examples-meta-filter"></a>

次の例は、 AWS IoT SiteWise クエリ言語の `SELECT`ステートメントを使用してメタデータをフィルタリングする場合です。

```
SELECT a.asset_name, p.property_name
FROM asset a, asset_property p
WHERE a.asset_name LIKE 'Windmill%'
```

## 値のフィルタリング
<a name="sql-examples-value-filter"></a>

 AWS IoT SiteWise クエリ言語の `SELECT`ステートメントを使用した値フィルタリングの例を次に示します。

```
SELECT a.asset_name, r.int_value
FROM asset a, raw_time_series r
WHERE r.int_value > 30
AND r.event_timestamp > TIMESTAMP '2022-01-05 12:15:00'
AND r.event_timestamp < TIMESTAMP '2022-01-05 12:20:00'
```

# クエリの最適化
<a name="query-optimize"></a>

## メタデータフィルター
<a name="metadata-filters"></a>

メタデータまたは raw データをクエリするときは、 `WHERE`句を使用してメタデータフィールドでフィルタリングし、スキャンされるデータの量を減らします。メタデータスキャンを制限するには、次の演算子を使用します。
+ 等しい (=)
+ 等しくない (\$1=)
+ LIKE
+ IN
+ AND
+ OR

属性プロパティの場合、次のフィールドを使用して結果をフィルタリングします。
+ `double_attribute_value`
+ `int_attribute_value`
+ `boolean_attribute_value`
+ `string_attribute_value`

これらのフィールドは、属性タイプのアセットプロパティの **latest\$1value\$1time\$1series** テーブルよりもパフォーマンスが向上します。

**注記**  
演算子の右側にあるリテラルを使用して、データスキャンを適切に制限します。たとえば、次のクエリは、厳密な文字列リテラルを使用するよりもパフォーマンスが悪くなります。  

```
SELECT property_id FROM asset_property WHERE property_name = CONCAT('my', 'property')
```

**Example メタデータフィルターの場合:**  

```
SELECT p.property_name FROM asset_property p
WHERE p.property_type = 'attribute' AND p.string_attribute_value LIKE 'my-property-%'
```

## Raw データフィルター
<a name="raw-data-filters"></a>

すべての raw データテーブル (**raw\$1time\$1series**、 **latest\$1value\$1time\$1series**、**precomputed\$1aggregates**) には、行に関連付けられたタイムスタンプがあります。メタデータフィルターに加えて、 `event_timestamp`フィールドで`WHERE`句フィルターを使用して、スキャンされるデータの量を減らします。次のオペレーションを使用して、raw データスキャンを制限します。
+ 等しい (=)
+ Greater than (>)
+ 未満 (<)
+ 以上 (>=)
+ 以下 (<=)
+ BETWEEN
+ AND

**フィルターの例**:
+  **precomputed\$1aggregates** テーブルをクエリするときは、常に `WHERE`句で品質フィルターを指定します。これにより、特に `BAD`または データを探している場合に、クエリがスキャンする`UNCERTAIN`データの量が減少します。

   **precomputed\$1aggregates** テーブルをクエリするときは、解像度フィルター (1m、15m、1h、または 1d) を使用することを強くお勧めします。解像度フィルターを指定しない場合、 AWS IoT SiteWise はデフォルトですべての解像度で完全なテーブルスキャンを行います。これは非効率です。
+  raw データをクエリする場合、タイムスタンプ関数を `WHERE`句で使用して、スキャンされたデータ量をフィルタリングすることもできます。たとえば、次のクエリは、**raw\$1time\$1series **テーブルから過去 30 分間のデータのみをスキャンします。

  ```
  SELECT r.event_timestamp, r.double_value
  FROM raw_time_series r
  WHERE r.event_timestamp > TIMESTAMP_SUB(MINUTE, 30, NOW())
  ```

**注記**  
等しくなく`(!=)`、`OR`演算子は通常、raw データスキャンに意味のあるフィルターを適用しません。raw データ値 (string\$1value、double\$1value など) のフィルタも raw データスキャンを制限しません。

## JOIN 最適化
<a name="join-optimization"></a>

AWS IoT SiteWise SQL は、2 つのテーブルをマージする `JOIN`キーワードをサポートします。フィールドで ( `ON`キーワードを使用して) アクティブにフィルタリング`JOIN`する のみがサポートされます。フルデカルト結合は禁止されています。

AWS IoT SiteWise は、 `JOIN`キーワードを使用せずに暗黙`JOIN`的な もサポートします。これらは、異なるメタデータテーブル間、およびメタデータテーブルと raw テーブル間で許可されます。例えば、次のクエリは、

```
SELECT a.asset_name, p.property_name FROM asset a, asset_property p
```

この同等のクエリよりもパフォーマンスが優れています。

```
SELECT a.asset_name, p.property_name FROM asset a
JOIN asset_property p ON a.asset_id = p.asset_id
```

次の暗黙的な結合が許可されます (O は許可され、X は禁止されます）。


|  | アセット | asset\$1property | latest\$1value\$1time\$1series | raw\$1time\$1series | precomputed\$1aggregates | subquery | 
| --- | --- | --- | --- | --- | --- | --- | 
| アセット | X | O | O | O | O | X | 
| asset\$1property | O | X | O | O | O | X | 
| latest\$1value\$1time\$1series | O | O | X | X | X | X | 
| raw\$1time\$1series | O | O | X | X | X | X | 
| precomputed\$1aggregates | O | O | X | X | X | X | 
| subquery | X | X | X | X | X | X | 

可能な場合は暗黙的な `JOIN`を使用します。`JOIN` キーワードを使用する必要がある場合は、個々の `JOIN`ed テーブルにフィルターを適用して、スキャンされるデータを最小限に抑えます。たとえば、このクエリの代わりに、次のようにします。

```
SELECT level1.asset_id, level2.asset_id, level3.asset_id
FROM asset AS level1
JOIN asset AS level2 ON level2.parent_asset_id = level1.asset_id
JOIN asset AS level3 ON level3.parent_asset_id = level2.asset_id
WHERE level1.asset_name LIKE 'level1%'
AND level2.asset_name LIKE 'level2%'
AND level3.asset_name LIKE 'level3%'
```

より効率的なクエリを使用します。

```
SELECT level1.asset_id, level2.asset_id, level3.asset_id
FROM asset AS level1
JOIN (SELECT asset_id, parent_asset_id FROM asset WHERE asset_name LIKE 'level2%') AS level2 ON level2.parent_asset_id = level1.asset_id
JOIN (SELECT asset_id, parent_asset_id FROM asset WHERE asset_name LIKE 'level3%') AS level3 ON level3.parent_asset_id = level2.asset_id
WHERE level1.asset_name LIKE 'level1%'
```

メタデータフィルターをサブクエリにプッシュすることで、スキャンプロセス中に 内の個々のテーブルがフィルタリングされるように`JOIN`します。同じ効果を得るために、サブクエリで `LIMIT`キーワードを使用することもできます。

## 大きなクエリ
<a name="large-queries"></a>

デフォルトよりも多くの行を生成するクエリの場合は、[ExecuteQuery](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteQuery.html) API のページサイズを最大値の 20,000 に設定します。これにより、クエリ全体のパフォーマンスが向上します。

一部のクエリでスキャンされるデータの量を減らすには、 `LIMIT`句を使用します。集計関数と特定のテーブル全体の句 (`GROUP BY`、`ORDER BY`、`JOIN`) では、 `LIMIT`句を適用する前にフルスキャンを完了する必要があります。

**注記**  
 AWS IoT SiteWise は、 `LIMIT`句が適用されていても、特に複数のプロパティをスキャンする raw データクエリの場合、最小量のデータをスキャンすることがあります。

# ODBC
<a name="query-ODBC"></a>

のオープンソース [ODBC ドライバー](https://github.com/awslabs/aws-iotsitewise-odbc-driver) AWS IoT SiteWise は、開発者 AWS IoT SiteWise 向けに への SQL リレーショナルインターフェイスを提供し、Power BI Desktop や Microsoft Excel などのビジネスインテリジェンス (BI) ツールからの接続を可能にします。ODBC ドライバーは現在 [Windows](https://github.com/awslabs/aws-iotsitewise-odbc-driver/releases) AWS IoT SiteWise で使用でき、Okta および Microsoft Azure Active Directory (AD) との SSO をサポートしています。

詳細については、[AWS IoT SiteWise GitHub の「ODBC ドライバードキュメント](https://github.com/awslabs/aws-iotsitewise-odbc-driver/blob/main/docs/markdown/index.md)」を参照してください。

**Topics**
+ [

# ODBC ドライバーの接続文字列の構文とオプション
](query-ODBC-connecting.md)
+ [

# ODBC AWS IoT SiteWise ドライバーの接続文字列の例
](query-ODBC-connecting-examples.md)
+ [

# ODBC ドライバーとの接続のトラブルシューティング
](query-ODBC-connecting-troubleshooting.md)

# ODBC ドライバーの接続文字列の構文とオプション
<a name="query-ODBC-connecting"></a>

ODBC ドライバーの接続文字列オプションを指定するための構文は次のとおりです。

```
Driver={AWS IoT SiteWise ODBC Driver};(option)=(value);
```

使用できるオプションは次のとおりです。

**ドライバー接続のオプション**
+ **`Driver`**   *(必須)*   –   ODBC で使用されているドライバー。

  デフォルトは AWS IoT SiteWiseです。
+ **`DSN`**   –   接続の設定に使用するデータソース名 (DSN)。

  デフォルトは `NONE` です。
+ **`Auth`**   –   認証モード。次のいずれかである必要があります。
  + `AWS_PROFILE` – デフォルトの認証情報チェーンを使用します。
  + `IAM` – IAM AWS 認証情報を使用します。
  + `AAD` – Azure Active Directory (AD) ID プロバイダーを使用します。
  + `OKTA` – Okta ID プロバイダーを使用します。

  デフォルトは `AWS_PROFILE` です。

**エンドポイント設定のオプション**
+ **`EndpointOverride`**   –   AWS IoT SiteWise サービスのエンドポイントオーバーライド。これは、リージョンをオーバーライドする高度なオプションです。例えば、次のようになります。

  ```
  iotsitewise.us-east-1.amazonaws.com
  ```
+ **`Region`**   –   AWS IoT SiteWise サービスエンドポイントの署名リージョン。

  デフォルトは `us-east-1` です。

**認証情報プロバイダーのオプション**
+ **`ProfileName`**   –   AWS 設定ファイルのプロファイル名。

  デフォルトは `NONE` です。

**AWS IAM 認証オプション**
+ **`UID`** または **`AccessKeyId`**   – AWS ユーザーアクセスキー ID。接続文字列で `UID` と `AccessKeyId` の両方が指定されている場合、`UID` 値が使用されます (空でない限り)。

  デフォルトは `NONE` です。
+ **`PWD`** または **`SecretKey`**   –   AWS ユーザーのシークレットアクセスキー。接続文字列で `PWD` と `SecretKey` の両方が指定されている場合、`PWD` 値が使用されます (空でない限り)。

  デフォルトは `NONE` です。
+ **`SessionToken`**   –   多要素認証 (MFA) が有効なデータベースにアクセスするために必要な一時セッショントークン。入力の末尾に ` = ` を含めないでください。

  デフォルトは `NONE` です。

**Okta の SAML ベース認証オプション**
+ **`IdPHost`**   –   指定された IdP のホスト名。

  デフォルトは `NONE` です。
+ **`UID`** または **`IdPUserName`**   –   指定された IdP アカウントのユーザー名。接続文字列で `UID` と `IdPUserName` の両方が指定されている場合、`UID` 値が使用されます (空でない限り)。

  デフォルトは `NONE` です。
+ **`PWD`** または **`IdPPassword`**   –   指定された IdP アカウントのパスワード。接続文字列で `PWD` と `IdPPassword` の両方が指定されている場合、`PWD` 値が使用されます (空でない限り)。

  デフォルトは `NONE` です。
+ **`OktaApplicationID`**   –   AWS IoT SiteWise アプリケーションに関連付けられた一意の Okta 提供 ID。アプリケーション ID (AppId) を検索する場所は、アプリケーションメタデータで指定された `entityID` フィールドにあります。以下に例を示します。

  ```
  entityID="http://www.okta.com//(IdPAppID)
  ```

  デフォルトは `NONE` です。
+ **`RoleARN`**   –   発信者が想定しているロールの Amazon リソースネーム (ARN)。

  デフォルトは `NONE` です。
+ **`IdPARN`**   –   IdP を説明する IAM の SAML プロバイダーの Amazon リソースネーム (ARN)。

  デフォルトは `NONE` です。

**Azure Active Directory の SAML ベース認証オプション**
+ **`UID`** または **`IdPUserName`**   –   指定された IdP アカウントのユーザー名。

  デフォルトは `NONE` です。
+ **`PWD`** または **`IdPPassword`**   –   指定された IdP アカウントのパスワード。

  デフォルトは `NONE` です。
+ **`AADApplicationID`**   –  Azure AD に登録されたアプリケーションの一意の ID。

  デフォルトは `NONE` です。
+ **`AADClientSecret`**   –   トークンの取得を承認するために使用される、Azure AD の登録済みアプリケーションに関連付けられたクライアントシークレット。

  デフォルトは `NONE` です。
+ **`AADTenant`**   –   Azure AD テナント ID。

  デフォルトは `NONE` です。
+ **`RoleARN`**   –   発信者が想定しているロールの Amazon リソースネーム (ARN)。

  デフォルトは `NONE` です。
+ **`IdPARN`**   –   IdP を説明する IAM の SAML プロバイダーの Amazon リソースネーム (ARN)。

  デフォルトは `NONE` です。

**AWS SDK (アドバンスド) オプション**
+ **`RequestTimeout`**   – AWS SDK   がタイムアウトする前にクエリリクエストを待機するミリ秒単位の時間。正でない値を指定すると、リクエストのタイムアウトが無効になります。

  デフォルトは `3000` です。
+ **`ConnectionTimeout`**   – AWS SDK   がタイムアウトする前にオープン接続経由でデータを転送するのを待機するミリ秒単位の時間。値が 0 の場合、接続タイムアウトは無効になります。負の値は指定できません。

  デフォルトは `1000` です。
+ **`MaxRetryCountClient`**   –   SDK における 5xx エラーコードの再試行可能エラーの最大再試行回数。負の値は指定できません。

  デフォルトは `0` です。
+ **`MaxConnections`**   –   AWS IoT SiteWise サービスへの同時オープン可能な HTTP 接続の最大数。正の値を指定する必要があります。

  デフォルトは `25` です。

**ODBC ドライバーのログ記録オプション**
+ **`LogLevel`**   –   ドライバーのログ記録のログレベル。次のいずれかにする必要があります。
  + **0**   (OFF)。
  + **1**   (ERROR)。
  + **2**   (WARNING)。
  + **3**   (INFO)。
  + **4**   (DEBUG)。

  デフォルトは `1` (ERROR) です。

  **警告:** ログ記録モード DEBUG を使用すると、ドライバーによって個人情報が記録される可能性があります。
+ **`LogOutput`**   –   ログファイルを保存するフォルダ。

  デフォルトは以下のとおりです。
  + **Windows:** `%USERPROFILE%` (利用できない場合は `%HOMEDRIVE%%HOMEPATH%`)。
  + **macOS と Linux:** `$HOME` (利用できない場合は関数 `getpwuid(getuid())` のフィールド `pw_dir` が値を返します)。

**SDK のログ記録オプション**

 AWS SDK ログレベルは ODBC AWS IoT SiteWise ドライバーログレベルとは別です。一方を設定しても、他方には影響しません。

SDK ログレベルは、環境変数 `SW_AWS_LOG_LEVEL` を使用して設定されます。次の値を指定できます。
+ `OFF`
+ `ERROR`
+ `WARN`
+ `INFO`
+ `DEBUG`
+ `TRACE`
+ `FATAL`

`SW_AWS_LOG_LEVEL` が設定されていない場合、SDK ログレベルはデフォルトの `WARN` に設定されます。

## プロキシを介して接続する
<a name="query-ODBC-connecting-proxy"></a>

ODBC ドライバーは、プロキシ AWS IoT SiteWise を介した への接続をサポートします。この機能を使用するには、プロキシ設定に基づいて次の環境変数を設定します。
+ **`SW_PROXY_HOST`**   –   プロキシホスト。
+ **`SW_PROXY_PORT`**   –   プロキシポート番号。
+ **`SW_PROXY_SCHEME`**   –   プロキシスキーム (`http` または `https`)。
+ **`SW_PROXY_USER`**   –   プロキシ認証のユーザー名。
+ **`SW_PROXY_PASSWORD`**   –   プロキシ認証のユーザーパスワード。
+ **`SW_PROXY_SSL_CERT_PATH`**   –   HTTPS プロキシへの接続に使用する SSL 証明書ファイル。
+ **`SW_PROXY_SSL_CERT_TYPE`**   –   プロキシクライアント SSL 証明書のタイプ。
+ **`SW_PROXY_SSL_KEY_PATH`**   –   HTTPS プロキシへの接続に使用するプライベートキーファイル。
+ **`SW_PROXY_SSL_KEY_TYPE`**   –   HTTPS プロキシへの接続に使用するプライベートキーファイルのタイプ。
+ **`SW_PROXY_SSL_KEY_PASSWORD`**   –   HTTPS プロキシへの接続に使用されるプライベートキーファイルへのパスフレーズ。

# ODBC AWS IoT SiteWise ドライバーの接続文字列の例
<a name="query-ODBC-connecting-examples"></a>

## IAM 認証情報を使用して ODBC ドライバーに接続する例
<a name="query-ODBC-connecting-examples-iam"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=IAM;AccessKeyId=(your access key ID);SecretKey=(your secret key);SessionToken=(your session token);Region=us-east-1;
```

## プロファイルを使用して ODBC ドライバーに接続する例
<a name="query-ODBC-connecting-examples-profile"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};ProfileName=(the profile name);region=us-east-1;
```

ドライバーは、`~/.aws/credentials` で指定された認証情報を使用するか、環境変数 `AWS_SHARED_CREDENTIALS_FILE` でファイルが指定されている場合はそのファイルの認証情報を使用して接続を試みます。

## Okta を使用して ODBC ドライバーに接続する例
<a name="query-ODBC-connecting-examples-okta"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=OKTA;region=us-east-1;idPHost=(your host at Okta);idPUsername=(your user name);idPPassword=(your password);OktaApplicationID=(your Okta AppId);roleARN=(your role ARN);idPARN=(your Idp ARN);
```

## Azure Active Directory (AAD) を使用して ODBC ドライバーに接続する例
<a name="query-ODBC-connecting-examples-aad"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=AAD;region=us-east-1;idPUsername=(your user name);idPPassword=(your password);aadApplicationID=(your AAD AppId);aadClientSecret=(your AAD client secret);aadTenant=(your AAD tenant);roleARN=(your role ARN);idPARN=(your idP ARN);
```

## 指定されたエンドポイントとログレベル 2 (WARNING) で ODBC ドライバーに接続する例
<a name="query-ODBC-connecting-examples-okta"></a>

```
Driver={AWS IoT SiteWise ODBC Driver};Auth=IAM;AccessKeyId=(your access key ID);SecretKey=(your secret key);EndpointOverride=iotsitewise.us-east-1.amazonaws.com;Region=us-east-1;LogLevel=2;
```

# ODBC ドライバーとの接続のトラブルシューティング
<a name="query-ODBC-connecting-troubleshooting"></a>

**注記**  
ユーザー名とパスワードが DSN で既に指定されている場合は、ODBC ドライバーマネージャーが要求したときに再度指定しないでください。

エラーコード `01S02` とメッセージ「`Re-writing (connection string option) (have you specified it several times?)`」は、接続文字列オプションが接続文字列で複数回渡された場合に表示されます。1 つのオプションを複数回指定すると、エラーが発生します。DSN と接続文字列を使用した接続時に、DSN で接続オプションが既に指定されている場合は、接続文字列で再度指定しないでください。