

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Consulta datos de AWS IoT SiteWise
Consulta datos de AWS IoT SiteWise

Puede utilizar las operaciones de la AWS IoT SiteWise API para consultar los valores actuales, históricos y agregados de sus propiedades de activos en intervalos de tiempo específicos. AWS IoT SiteWise proporciona múltiples interfaces de consulta para satisfacer diferentes necesidades de integración:
+ **Operaciones de API directas**: llamadas de API sencillas y específicas para necesidades específicas de recuperación de datos
+ **Lenguaje de consultas similar a SQL**: consultas potentes y flexibles para análisis de datos complejos
+ **Controlador ODBC**: integración con herramientas y aplicaciones de inteligencia empresarial

Utilice estas funciones de consulta para:
+ Obtenga información en tiempo real sobre los datos operativos
+ Analice las tendencias y los patrones históricos
+ Calcule las métricas de rendimiento de sus activos industriales
+ Integre los datos de IoT con sistemas y paneles empresariales
+ Cree aplicaciones personalizadas que aprovechen los datos industriales

Por ejemplo, puede descubrir todos los activos con valores de propiedad específicos, crear representaciones personalizadas de sus datos o desarrollar soluciones de software que se integren con los datos industriales almacenados en sus AWS IoT SiteWise activos. También puede explorar los datos de sus activos en tiempo real en AWS IoT SiteWise Monitor. Para obtener información sobre cómo configurar SiteWise Monitor, consulte[Supervise los datos con AWS IoT SiteWise Monitor](monitor-data.md).

Las operaciones descritas en esta sección devuelven objetos de valor de propiedad que contienen estructuras de marca de tiempo, calidad y valor (TQV):
+ El `timestamp` contiene el tiempo actual en formato de tiempo Unix en segundos con desplazamiento en nanosegundos.
+ `quality` contiene una de las siguientes cadenas, que indican la calidad del punto de datos:
  + `GOOD`: los datos no se ven afectados por ningún problema.
  + `BAD`: los datos se ven afectados por un problema, como un fallo del sensor.
  + `UNCERTAIN`: los datos se ven afectados por un problema, como la falta de precisión de un sensor.
+ El `value` contiene uno de los siguientes campos, en función del tipo de propiedad:
  + `booleanValue`
  + `doubleValue`
  + `integerValue`
  + `stringValue`
  + `nullValue`

**Topics**
+ [

# Consulte los valores actuales de las propiedades de los activos en AWS IoT SiteWise
](current-values.md)
+ [

# Consulte los valores históricos de las propiedades de los activos en AWS IoT SiteWise
](historical-values.md)
+ [

# La propiedad del activo de consulta se agrega en AWS IoT SiteWise
](aggregates.md)
+ [

# AWS IoT SiteWise idioma de consulta
](sql.md)
+ [

# Optimización de las consultas
](query-optimize.md)
+ [

# ODBC
](query-ODBC.md)

# Consulte los valores actuales de las propiedades de los activos en AWS IoT SiteWise
Consulta de valores de activos actuales

En este tutorial se muestran dos formas de obtener el valor actual de la propiedad de un activo. Puede usar la AWS IoT SiteWise consola o la API en AWS Command Line Interface (AWS CLI).

**Topics**
+ [

## Consulta del valor actual de la propiedad de un activo (consola)
](#query-current-value-console)
+ [

## Consulta del valor actual de la propiedad de un activo (AWS CLI)
](#query-current-value-cli)

## Consulta del valor actual de la propiedad de un activo (consola)


Puede usar la AWS IoT SiteWise consola para ver el valor actual de una propiedad de activo.

**Para obtener el valor actual de la propiedad de un activo (consola)**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. <a name="sitewise-choose-assets"></a>En el panel de navegación, elija **activos**.

1. Elija el activo con la propiedad que desea consultar.

1. Puede elegir el icono de flecha para expandir una jerarquía de activos y buscar su activo.

1. Elija la pestaña para el tipo de propiedad. Por ejemplo, elija **Medidas** para consultar el valor actual de una propiedad de medida.

1. Encuentre la propiedad que desea consultar. El valor actual aparece en la columna **Valor más reciente**.

## Consulta del valor actual de la propiedad de un activo (AWS CLI)


Puede usar el AWS Command Line Interface (AWS CLI) para consultar el valor actual de una propiedad de activo.

Utilice la [GetAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html)operación para consultar el valor actual de una propiedad de un activo.

Para identificar la propiedad de un activo, especifique una de las siguientes opciones:
+ `assetId` y `propertyId` de la propiedad del activo a la que está enviando datos.
+ El `propertyAlias`, que es un alias de flujo de datos (por ejemplo, `/company/windfarm/3/turbine/7/temperature`). Para utilizar esta opción, primero debe establecer el alias de la propiedad del activo. Para establecer alias de propiedades, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).

**Obtención del valor actual de la propiedad de un activo (AWS CLI)**
+ Ejecute el siguiente comando para obtener el valor actual de la propiedad del activo. *asset-id*Sustitúyalo por el identificador del activo y *property-id* por el identificador de la propiedad.

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

  La operación devuelve una respuesta que contiene el TQV actual de la propiedad en el siguiente formato.

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

# Consulte los valores históricos de las propiedades de los activos en AWS IoT SiteWise
Consulta de valores históricos de propiedades de activos

Puede utilizar la [GetAssetPropertyValueHistory](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html)operación de la AWS IoT SiteWise API para consultar los valores históricos de una propiedad de un activo.

Para identificar la propiedad de un activo, especifique una de las siguientes opciones:
+ `assetId` y `propertyId` de la propiedad del activo a la que está enviando datos.
+ El `propertyAlias`, que es un alias de flujo de datos (por ejemplo, `/company/windfarm/3/turbine/7/temperature`). Para utilizar esta opción, primero debe establecer el alias de la propiedad del activo. Para establecer alias de propiedades, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).

Pase los siguientes parámetros para refinar los resultados:
+ `startDate`: el inicio inclusivo del rango del cual se consultan los datos históricos, expresado en segundos en tiempo epoch de Unix.
+ `endDate`: el final inclusivo del rango del cual se consultan los datos históricos, expresado en segundos en tiempo epoch de Unix.
+ `maxResults`: el número máximo de resultados por devolver en una petición. Predeterminado a `20` resultados.
+ `nextToken`: un token de paginación devuelto por una llamada anterior de esta operación.
+ `timeOrdering`: el orden por aplicar a los valores devueltos: `ASCENDING` o `DESCENDING`.
+ `qualities`: calidad para filtrar los resultados: `GOOD`, `BAD`, o `UNCERTAIN`.

**Para consultar el historial de valores de la propiedad de un activo (AWS CLI)**

1. Ejecute el siguiente comando para obtener el historial de valores de la propiedad del activo. Este comando consulta el historial de la propiedad durante un intervalo específico de 10 minutos. *asset-id*Sustitúyalo por el ID del activo y *property-id* por el ID de la propiedad. Reemplace los parámetros de fecha por el intervalo que desea consultar.

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

   La operación devuelve una respuesta que contiene el historial TQVs de la propiedad en el siguiente formato:

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

1. Si existen más entradas de valores, puede pasar el token de paginación del `nextToken` campo a una llamada posterior a la [GetAssetPropertyValueHistory](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html)operación.

# La propiedad del activo de consulta se agrega en AWS IoT SiteWise
Consulta de agregados de propiedades de activos

AWS IoT SiteWise calcula automáticamente los valores agregados de las propiedades de los activos, que son un conjunto de métricas básicas calculadas en varios intervalos de tiempo. AWS IoT SiteWise calcula los siguientes agregados cada minuto, hora y día para las propiedades de sus activos:
+ **promedio**: el promedio (media) de los valores de una propiedad en un intervalo de tiempo.
+ **recuento**: el número de puntos de datos de una propiedad a lo largo de un intervalo de tiempo.
+ **máximo**: el máximo de los valores de una propiedad en un intervalo de tiempo.
+ **mínimo**: el mínimo de los valores de una propiedad en un intervalo de tiempo.
+ **desviación estándar**: la desviación estándar de los valores de una propiedad en un intervalo de tiempo.
+ **suma**: la suma de los valores de una propiedad en un intervalo de tiempo.

Para las propiedades no numéricas, como cadenas y valores booleanos, AWS IoT SiteWise calcula solo el recuento agregado.

También puede calcular métricas personalizadas para los datos de activos. Con las propiedades de métricas puede definir agregaciones específicas para la operación. Las propiedades métricas ofrecen funciones de agregación e intervalos de tiempo adicionales que no están precalculados para la API. AWS IoT SiteWise Para obtener más información, consulte [Agregación de datos desde propiedades y otros activos (métricas)](metrics.md).

**Topics**
+ [

## Agregaciones para la propiedad de un activo (API)
](#aggregates-api)
+ [

## Agregaciones para la propiedad de un activo (AWS CLI)
](#aggregates-cli)

## Agregaciones para la propiedad de un activo (API)
Agregaciones para la propiedad de un activo (API)

Usa la AWS IoT SiteWise API para obtener los agregados de una propiedad de activo.

Utilice la [GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html)operación para consultar los agregados de una propiedad de activo.

Para identificar la propiedad de un activo, especifique una de las siguientes opciones:
+ `assetId` y `propertyId` de la propiedad del activo a la que está enviando datos.
+ El `propertyAlias`, que es un alias de flujo de datos (por ejemplo, `/company/windfarm/3/turbine/7/temperature`). Para utilizar esta opción, primero debe establecer el alias de la propiedad del activo. Para establecer alias de propiedades, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).

Debe superar los siguientes parámetros obligatorios:
+ `aggregateTypes`: la lista de agregados que se va a recuperar. Puede especificar uno de estos: `AVERAGE`, `COUNT`, `MAXIMUM`, `MINIMUM`, `STANDARD_DEVIATION` y `SUM`.
+ `resolution`— El intervalo de tiempo durante el que se va a recuperar la métrica: `1m` (1 minuto), `15m` (15 minutos), `1h` (1 hora) o `1d` (1 día).
+ `startDate`: el inicio inclusivo del rango del cual se consultan los datos históricos, expresado en segundos en tiempo epoch de Unix.
+ `endDate`: el final inclusivo del rango del cual se consultan los datos históricos, expresado en segundos en tiempo epoch de Unix.

También puede pasar cualquiera de los siguientes parámetros para refinar los resultados:
+ `maxResults`: el número máximo de resultados por devolver en una petición. Predeterminado a `20` resultados.
+ `nextToken`: un token de paginación devuelto por una llamada anterior de esta operación.
+ `timeOrdering`: el orden por aplicar a los valores devueltos: `ASCENDING` o `DESCENDING`.
+ `qualities`: calidad para filtrar los resultados: `GOOD`, `BAD`, o `UNCERTAIN`.

**nota**  
La [GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html)operación devuelve un TQV con un formato diferente al de otras operaciones descritas en esta sección. La estructura del `value` contiene un campo para cada uno de los `aggregateTypes` de la solicitud. En `timestamp` se incluye el tiempo en que se produjo la agregación, en segundos en formato Unix.

## Agregaciones para la propiedad de un activo (AWS CLI)
Agregaciones para la propiedad de un activo (AWS CLI)

**Consulta de agregados para la propiedad de un activo (AWS CLI)**

1. Ejecute el siguiente comando para obtener agregados para la propiedad del activo. Este comando consulta la media y la suma con una resolución de 1 hora para un intervalo de 1 hora específico. *asset-id*Sustitúyalo por el identificador del activo y *property-id* por el identificador de la propiedad. Reemplace los parámetros por los agregados y el intervalo a consultar.

   ```
   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
   ```

   La operación devuelve una respuesta que contiene el historial TQVs de la propiedad en el siguiente formato. La respuesta incluye solo los agregados solicitados.

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

1. Si existen más entradas de valores, puede pasar el token de paginación del `nextToken` campo a una llamada posterior a la [GetAssetPropertyAggregates](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html)operación.

**nota**  
 Si el rango de consultas contiene un `null` valor TQVs, consulta la [AssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssetPropertyValue.html)API. Todas las estadísticas, excepto el recuento, dan como resultado una `null` respuesta, similar a las estadísticas de String TQVs. Si el rango de consulta contiene `Double.NaN` texto doble TQVs, todos los cálculos, excepto el recuento, darán como resultado un`Double.NaN`. 

# AWS IoT SiteWise idioma de consulta
AWS IoT SiteWise idioma de consulta

Con la operación de la [ExecuteQuery](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteQuery.html)API de recuperación de AWS IoT SiteWise datos, puede recuperar información sobre las definiciones estructurales declarativas y los datos de series temporales asociadas a ellas a partir de lo siguiente:
+ Modelos de  
+ recursos
+ mediciones
+ métricas
+ transformaciones
+ agregaciones

Esto se puede hacer con instrucciones de consulta tipo SQL, en una sola solicitud de API.

**nota**  
Esta función está disponible en todas las regiones en las que AWS IoT SiteWise está disponible, excepto AWS GovCloud (EE. UU. oeste), Canadá (centro), China (Beijing) y EE. UU. Este (Ohio). 

**Topics**
+ [

# Consulte la referencia de idioma para AWS IoT SiteWise
](query-reference.md)

# Consulte la referencia de idioma para AWS IoT SiteWise
Referencia del lenguaje de consulta

 AWS IoT SiteWise admite un lenguaje de consulta enriquecido para trabajar con los datos. En los siguientes temas se describen los tipos de datos, operadores, funciones y constructos disponibles.

Consulte [Consultas de ejemplo](sql-examples.md) para escribir consultas con el lenguaje de AWS IoT SiteWise consultas.

**Topics**
+ [

# Consulta vistas de referencia
](query-reference-views.md)
+ [

# Tipos de datos compatibles
](supported-data-types.md)
+ [

# Cláusulas admitidas
](supported-clauses.md)
+ [

# Logical operators (Operadores lógicos)
](sql-supported-logical.md)
+ [

# Operadores de comparación
](sql-supported-comparision.md)
+ [

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

# Consultas de ejemplo
](sql-examples.md)

# Consulta vistas de referencia
Consulta las vistas de referencia

En esta sección se proporciona información que le ayudará a entender las vistas AWS IoT SiteWise, como los metadatos del proceso y los datos de telemetría.

En las tablas siguientes se proporcionan los nombres y las descripciones de las vistas:


**Modelo de datos**  

|  **Nombre de la vista**  |  **Descripción de vista**  | 
| --- | --- | 
|  asset  |  Contiene información sobre la derivación del activo y el modelo.  | 
|  asset\$1property  |  Contiene información sobre la estructura de la propiedad del activo.  | 
|  raw\$1time\$1series  |  Contiene los datos históricos de la serie temporal.  | 
|  latest\$1value\$1time\$1series  |  Contiene el valor más reciente de la serie temporal.  | 
|  precomputed\$1aggregates  |  Contiene los valores agregados de la propiedad del activo calculados automáticamente. Son un conjunto de métricas básicas calculadas a lo largo de varios intervalos de tiempo.  | 

Las siguientes vistas muestran los nombres de las columnas y los tipos de datos de cada vista.


**View:asset**  

|  **nombre de columna**  |  **datatype (tipo\$1de\$1datos)**  | 
| --- | --- | 
|  asset\$1id  |  cadena  | 
|  asset\$1name  |  cadena  | 
|  asset\$1description  |  cadena  | 
|  asset\$1model\$1id  |  cadena  | 
|  parent\$1asset\$1id  |  cadena  | 
| asset\$1external\$1id | cadena | 
| asset\$1model\$1external\$1id | cadena | 
| hierarchy\$1id | cadena | 


**View:asset\$1property**  

|  **nombre de columna**  |  **datatype (tipo\$1de\$1datos)**  | 
| --- | --- | 
|  asset\$1id  |  cadena  | 
|  property\$1id  |  cadena  | 
|  property\$1name  |  cadena  | 
|  property\$1alias  |  cadena  | 
|  property\$1external\$1id  |  cadena  | 
|  asset\$1composite\$1model\$1id  |  cadena  | 
|  tipo\$1propiedad  |  cadena  | 
|  property\$1data\$1type  |  cadena  | 
|  int\$1attribute\$1value  |  entero  | 
|  valor\$1atributo\$1doble  |  double  | 
|  valor\$1atributo\$1booleano  |  booleano  | 
|  valor\$1atributo\$1cadena  |  cadena  | 


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

|  **nombre de columna**  |  **datatype (tipo\$1de\$1datos)**  | 
| --- | --- | 
|  asset\$1id  |  cadena  | 
|  property\$1id  |  cadena  | 
|  property\$1alias  |  cadena  | 
|  event\$1timestamp  |  timestamp  | 
|  quality  |  cadena  | 
|  boolean\$1value  |  booleano  | 
|  int\$1value  |  entero  | 
|  double\$1value  |  double  | 
|  string\$1value  |  cadena  | 


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

|  **nombre de columna**  |  **datatype (tipo\$1de\$1datos)**  | 
| --- | --- | 
|  asset\$1id  |  cadena  | 
|  property\$1id  |  cadena  | 
|  property\$1alias  |  cadena  | 
|  event\$1timestamp  |  timestamp  | 
|  quality  |  cadena  | 
|  boolean\$1value  |  booleano  | 
|  int\$1value  |  entero  | 
|  double\$1value  |  double  | 
|  string\$1value  |  cadena  | 


**View:precomputed\$1aggregates**  

|  **nombre de columna**  |  **datatype (tipo\$1de\$1datos)**  | 
| --- | --- | 
|  asset\$1id  |  cadena  | 
|  property\$1id  |  cadena  | 
|  property\$1alias  |  cadena  | 
|  event\$1timestamp  |  timestamp  | 
|  quality  |  cadena  | 
|  resolution  |  cadena  | 
|  sum\$1value  |  double  | 
|  count\$1value  |  entero  | 
|  average\$1value  |  double  | 
|  maximum\$1value  |  double  | 
|  minimum\$1value  |  double  | 
|  stdev\$1value  |  double  | 

# Tipos de datos compatibles
Tipos de datos compatibles

AWS IoT SiteWise el lenguaje de consulta admite los siguientes tipos de datos.


**Valor escalar**  

|  **Tipo de datos**:  |  **Descripción**  | 
| --- | --- | 
|  `STRING`  |  Una cadena con una longitud máxima de 1024 bytes.  | 
|  `INTEGER`  |  Un entero de 32 bits firmado con un intervalo de `-2,147,483,648 to 2,147,483,647`.  | 
|  `DOUBLE`  |  Un número de coma flotante con un rango `–10^100 to 10^100` de o `Nan` con `IEEE 754` doble precisión.  | 
|  `BOOLEAN`  |  `true` o bien `false`.  | 
|  `TIMESTAMP`  |  Marcas de tiempo que cumplen con la norma ISO-8601: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/supported-data-types.html)  | 

**nota**  
`Null`: Un valor booleano que `true` indica la falta de datos definidos.

**Example**  
`TIMESTAMP`ejemplos de valores:  

```
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'
```

**nota**  
 Los datos de precisión doble no son exactos. Algunos valores no se convierten exactamente y no representan todos los números reales debido a la precisión limitada. Es posible que los datos de coma flotante de la consulta no tengan el mismo valor representado internamente. El valor se redondea si la precisión de un número de entrada es demasiado alta. 

# Cláusulas admitidas
Cláusulas admitidas

La `SELECT` sentencia se utiliza para recuperar datos de una o más vistas. AWS IoT SiteWise admite las `INNER JOIN` operaciones `JOIN` y.

Las vistas se unen con una `JOIN` sintaxis explícita o con anotaciones separadas por comas en la cláusula. `FROM`

**Example**  
Una declaración general: `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**  
Una declaración SELECT con las diferentes cláusulas:  

```
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;
```

**nota**  
 Una implícita `JOIN` combina dos o más tablas diferentes sin usar la `JOIN` palabra clave según AWS IoT SiteWise su esquema interno. Esto equivale a realizar una `JOIN` en los `property_id` campos `asset_id` y entre las tablas de metadatos y de datos sin procesar. Este patrón SiteWise permite aprovechar cualquier filtro de metadatos de la consulta cuando se extraen datos de tablas de datos sin procesar de forma que se escaneen menos datos generales.   

**Example de una consulta:**  

```
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'
```
El ejemplo anterior solo escanea los datos de la propiedad del activo que pertenece a los nombres de metadatos especificados.  

**Example de un equivalente menos optimizado de la consulta anterior:**  

```
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'
```

A continuación se detalla una explicación de cada cláusula y su descripción:


|  **cláusula**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `LIMIT`  |  <pre>LIMIT { count }</pre>  |  Esta cláusula limita el conjunto de resultados al número de filas especificado. Puede utilizarla `LIMIT` con o sin `OFFSET` cláusulas `ORDER BY` y. `LIMIT`solo funciona con números enteros no negativos de [0,2147483647].  | 
|  `ORDER BY`  |  <pre>ORDER BY expression<br />[ ASC | DESC ]<br />[ NULLS FIRST | NULLS LAST ] <br /></pre>  |  La `ORDER BY` cláusula ordena el conjunto de resultados de una consulta.   Al hacer referencia a las columnas seleccionadas en una agregación de la `ORDER BY` cláusula, utilice el índice ordinal de la columna en lugar del nombre o el alias.  <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>  |  La `GROUP BY` cláusula identifica las columnas de agrupación de la consulta. Se usa junto con una expresión agregada.  | 
|  `HAVING`  |  <pre>HAVING boolean-expression</pre>  |  La `HAVING` cláusula filtra las filas del grupo creadas por la cláusula GROUP BY.  | 
|  `SUB SELECT`  |  <pre>SELECT column1, column2<br />FROM table1<br />WHERE column3 IN (SELECT column4 FROM table2);<br /></pre>  |  Una `SELECT` declaración incrustada dentro de otra `SELECT` declaración.  | 
|  `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>  |  An `INNER JOIN` devuelve todas las filas de ambas tablas que coincidan con la condición de unión.  | 
|  `UNION`  |  <pre>query<br />   { UNION [ ALL ] }<br />another_query<br /></pre>  |  El `UNION` operador calcula la unión de conjuntos de sus dos argumentos y elimina automáticamente los registros duplicados del conjunto de resultados.  | 

# Logical operators (Operadores lógicos)
Logical operators (Operadores lógicos)

AWS IoT SiteWise admite los siguientes operadores lógicos.


|  **Operador**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `AND`  |  a `AND` b  |  `TRUE` si ambos valores son verdaderos  | 
|  `OR`  |  a `OR` b  |  `TRUE`si un valor es verdadero  | 
|  `NOT`  |  expresión `NOT`  |  `TRUE`si una expresión es falsa y `FALSE` si una expresión es verdadera  | 
|  `IN`  |  `IN`expresión x  |  `TRUE`si el valor está en la expresión  | 
|  `BETWEEN`  |  `BETWEEN`a `AND` b  |  `TRUE`si el valor está entre el límite superior e inferior, e incluye ambos límites  | 
|  `LIKE`  |  Patrón `LIKE`  |  `TRUE`si el valor sigue un patrón `LIKE`admite caracteres comodín. A continuación se muestran algunos ejemplos: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-supported-logical.html)  | 

Ejemplos de todos los operadores lógicos:


|  **Función**  |  **Ejemplo**  | 
| --- | --- | 
|  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>  | 
|  OR  |  <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/es_es/iot-sitewise/latest/userguide/sql-supported-logical.html)  | 

# Operadores de comparación
Operadores de comparación

AWS IoT SiteWise admite los siguientes operadores de comparación. Todas las operaciones de comparación están disponibles para los tipos de datos integrados y se evalúan con un valor booleano.


**Logical operators (Operadores lógicos)**  

|  **Operador**  |  **Descripción**  | 
| --- | --- | 
|  `<`  |  Menor que  | 
|  `>`  |  Mayor que  | 
|  `<=`  |  Menor o igual que  | 
|  `>=`  |  Mayor o igual que  | 
|  `=`  |  Igual a  | 
|  `!=`  |  Desigualdad  | 


**Tabla de verdad de operaciones de comparación para valores no numéricos**  

|  **Tipo**  |  **Escriba >= x**  |  **Escriba <= x**  |  **Escriba > x**  |  **Escriba < x**  |  **Tipo = x**  |  **¡Escribe\$1 = x**  | 
| --- | --- | --- | --- | --- | --- | --- | 
|  `NULL`  |  `FALSE`  |  `FALSE`  |  `FALSE`  |  `FALSE`  |  `FALSE`  |  `TRUE`  | 

Algunos predicados se comportan como operadores pero tienen una sintaxis especial. Consulte a continuación:


**Predicados de comparación**  

|  **Operador**  |  **Descripción**  | 
| --- | --- | 
|  `IS NULL`  |  Comprueba si un valor es. `NULL`  | 
|  `IS NOT NULL`  |  Comprueba si un valor no lo es`NULL`.  | 

## Operadores NaN
Operadores NaN

 `NaN`, o «No es un número», es un valor especial en aritmética de punto flotante. Esta es una lista de comparaciones y cómo funcionan. `NaN` 
+ `NaN`los valores deben estar entre comillas simples. Por ejemplo, '`NaN`'.
+ `NaN`los valores se consideran iguales entre sí.
+ `NaN`es mayor que otros valores numéricos.
+ En funciones agregadas como `AVG()``STDDEV()`, y`SUM()`, si hay algún valor`NaN`, el resultado es`NaN`. 
+ En las funciones agregadas como `MAX()` y`MIN()`, `NaN` los valores se incluyen en los cálculos.


**Comparaciones de valores de NaN**  

|  **Comparación**  |  **Resultado**  | 
| --- | --- | 
|  `'NaN' ≥ x`  |  True  | 
|  `'NaN' ≤ x`  |  Verdadero si x es igual a NaN, falso en caso contrario  | 
|  `'NaN' > x`  |  Falso si x es igual a NaN, verdadero en caso contrario  | 
|  `'NaN' < x`  |  False  | 
|  `'NaN' = x`  |  Verdadero si x es igual a NaN, falso en caso contrario  | 
|  `'NaN' != x`  |  Falso si x es igual a NaN, verdadero en caso contrario  | 

# Funciones SQL
Funciones SQL

 Los grupos de funciones compatibles son: 

**Topics**
+ [

# Funciones escalares
](sql-functions-scalar.md)
+ [

# Funciones de agregación
](sql-functions-aggregated.md)

# Funciones escalares
Funciones escalares

 Las funciones escalares toman uno o más valores de entrada y devuelven un único valor de salida. Se utilizan ampliamente en SQL (lenguaje de consulta estructurado) para la manipulación y recuperación de datos, lo que mejora la eficiencia de las tareas de procesamiento de datos. 

**Topics**
+ [

# Funciones de datos nulos
](sql-functions-null.md)
+ [

# Funciones de cadena
](sql-functions-string.md)
+ [

# Funciones matemáticas
](sql-functions-math.md)
+ [

# Funciones de fecha y hora
](sql-functions-date.md)
+ [

# Funciones de conversión de tipos
](sql-functions-type-conv.md)

# Funciones de datos nulos
Funciones de datos nulos

 Las funciones de datos nulos gestionan o manipulan valores NULOS, que representan la ausencia de un valor. Las funciones permiten sustituirlos por NULLs otros valores, comprobar si un valor es NULO o realizar operaciones que se NULLs gestionen de una forma específica. 


|  **Función**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `COALESCE`  |   COALESCE (expresión1, expresión2,..., expresiónN)   |  Si todas las expresiones se evalúan como nulas, COALESCE devuelve nulo. Las expresiones deben ser del mismo tipo.  | 

**Example de una función COALESCE**  

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

# Funciones de cadena
Funciones de cadena

 Las funciones de cadena son herramientas integradas que se utilizan para manipular y procesar datos de texto. Permiten tareas como la concatenación, la extracción, el formateo y la búsqueda dentro de cadenas. Estas funciones son esenciales para limpiar, transformar y analizar los datos basados en texto de una base de datos. 


**Funciones de cadena**  

|  **Función**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `LENGTH`  |   LONGITUD (CADENA)   |  Devuelve la longitud de la cadena.  | 
|  `CONCAT`  |   CONCAT (cadena, cadena)   |  Concatena los argumentos de una cadena.  | 
|  `SUBSTR`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-string.html)  |  Devuelve uno de los siguientes valores: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-string.html) Utiliza la indexación basada en 1 para el parámetro de inicio.  | 
|  `UPPER`  |   UPPER (cadena)   |  Convierte los caracteres de la cadena de entrada a mayúsculas.  | 
|  `LOWER`  |   INFERIOR (cadena)   |  Convierte los caracteres de la cadena de entrada a minúsculas.  | 
|  `TRIM`  |   TRIM (cadena)   |  Elimina los caracteres de espacio del principio, del final o de ambos lados de la cadena.  | 
|  `LTRIM`  |   LTRIM (cadena)   |  Elimina los caracteres de espacio del principio de la cadena.  | 
|  `RTRIM`  |   RTRIM (cadena)   |  Elimina los caracteres de espacio del final de la cadena.  | 
|  `STR_REPLACE`  |   STR\$1REPLACE (cadena, desde, hasta)   |  Sustituye todas las apariciones de la subcadena especificada por otra subcadena especificada.  | 

Ejemplos de todas las funciones:


|  **Función**  |  **Ejemplo**  | 
| --- | --- | 
|  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/es_es/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`   | 

## Operador de concatenación
Operador de concatenación

 El operador de concatenación`||`, u operador de tubería, une dos cadenas. Proporciona una alternativa a la `CONCAT` función y es más legible cuando se combinan varias cadenas.

**Example del operador de concatenación**  

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

# Funciones matemáticas
Funciones matemáticas

 Las funciones matemáticas son operaciones matemáticas predefinidas que se utilizan en las consultas SQL para realizar cálculos con datos numéricos. Proporcionan formas de manipular y transformar los datos sin necesidad de extraerlos de la base de datos y procesarlos por separado. 


**Funciones matemáticas**  

|  **Función**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `POWER`  |  POTENCIA (int\$1double, int\$1double)  |  Devuelve el valor del primer argumento elevado a la potencia del segundo argumento.  | 
|  `ROUND`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-math.html)  |  Redondea al entero más cercano.  | 
|  `FLOOR`  |   PISO (int\$1double)   |  Devuelve el entero más grande que no sea mayor que el valor dado.  | 

Ejemplos de todas las funciones:


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

# Funciones de fecha y hora
Funciones de fecha y hora

 Las funciones de fecha y hora funcionan con fechas y horas. Estas funciones permiten extraer componentes específicos de una fecha, realizar cálculos y manipular los valores de la fecha.

Los identificadores permitidos en estas funciones son:
+ YEAR
+ MONTH
+ DAY
+ HOUR
+ MINUTE
+ SECOND


|  **Función**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `NOW`  |   AHORA ()   |  Devuelve la marca de tiempo actual con una precisión de milisegundos. Proporciona la hora exacta en el que se ejecuta en una consulta.  | 
|  `DATE_ADD`  |  DATE\$1ADD (identificador, intervalo de duración, columna)  |  Devuelve la suma de un intervalo date/time y un número. days/hours, or of a date/time and date/time  | 
|  `DATE_SUB`  |  DATE\$1SUB (identificador, duración del intervalo, columna)  |  Devuelve la diferencia entre un intervalo date/time y un número. days/hours, or between a date/time and date/time  | 
|  `TIMESTAMP_ADD`  |  TIMESTAMP\$1ADD (identificador, duración del intervalo, columna)  |  Añade un intervalo de tiempo, en las unidades de tiempo dadas, a una expresión de fecha y hora.  | 
|  `TIMESTAMP_SUB`  |  TIMESTAMP\$1SUB (identificador, intervalo de duración, columna)  |  Resta un intervalo de tiempo, en las unidades de tiempo dadas, de una expresión de fecha y hora.  | 
|  `CAST`  |  CAST (expresión como patrón de formato de marca de tiempo)  |  Convierte una expresión de cadena en una marca de tiempo utilizando el patrón de formato especificado. Los patrones más comunes incluyen el formato `'yyyy-MM-dd HH:mm:ss'` de fecha y hora estándar. Por ejemplo, `SELECT CAST('2023-12-25 14:30:00' AS TIMESTAMP) AS converted_timestamp`  | 

**Example de una consulta SQL mediante las funciones enumeradas:**  

```
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
```

# Funciones de conversión de tipos
Funciones de conversión de tipos

 Las funciones de conversión de tipos se utilizan para cambiar el tipo de datos de un valor a otro. Son esenciales para garantizar la compatibilidad de los datos y realizar operaciones que requieren datos en un formato específico. 


|  **Función**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `TO_DATE`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 
|  `TO_TIMESTAMP`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 
|  `TO_TIME`  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 
|  `CAST`  |  CAST (<expression>AS<data type>)  |  Convierte una entidad o expresión que se evalúa en un único valor de un tipo a otro. Los tipos de datos admitidos son: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/iot-sitewise/latest/userguide/sql-functions-type-conv.html)  | 

**Example de una consulta SQL mediante las funciones enumeradas:**  

```
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
```

# Funciones de agregación
Funciones de agregación

 Las funciones agregadas son operaciones de bases de datos que realizan cálculos en varias filas de datos para producir un único resultado resumido. Estas funciones analizan los conjuntos de datos para devolver valores calculados, como sumas, promedios, recuentos u otras medidas estadísticas. 


|  **Función**  |  **Signature**  |  **Descripción**  | 
| --- | --- | --- | 
|  `AVG`  |  AVG (expresión)  |  Devuelve el promedio de una expresión numérica.  | 
|  `COUNT`  |  CONTAR (expresión)  |  Devuelve el número de filas que coinciden con los criterios dados.  | 
|  `MAX`  |  MAX (expresión)  |  Devuelve el valor más alto de las expresiones seleccionadas.  | 
|  `MIN`  |  MIN (expresión)  |  Devuelve el valor más pequeño de las expresiones seleccionadas.  | 
|  `SUM`  |  SUM (expresión)  |  Devuelve la suma de una expresión numérica.  | 
|  `STDDEV`  |  STDDEV (expresión)  |  Devuelve la desviación estándar de la muestra.  | 
|  `GROUP BY`  |  GROUP BY expresión  |  Devuelve una fila creada por la agrupación de columnas.  | 
|  `HAVING`  |  CON una expresión booleana  |  Devuelve las filas del grupo filtradas por cláusula. `GROUP BY`  | 

Ejemplos de todas las funciones:


|  **Función**  |  **Ejemplo**  | 
| --- | --- | 
|  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/es_es/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>  | 

# Consultas de ejemplo
Consultas de ejemplo

## Filtrado de metadatos
Filtrado de metadatos

El siguiente ejemplo es para filtrar metadatos con una `SELECT` sentencia con el lenguaje de AWS IoT SiteWise consulta:

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

## Filtrado de valores
Filtrado de valores

A continuación se muestra un ejemplo de filtrado de valores mediante una `SELECT` sentencia con el lenguaje de AWS IoT SiteWise consulta:

```
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'
```

# Optimización de las consultas
Optimización de las consultas

## Filtros de metadatos
Filtros de metadatos

Cuando consulte metadatos o datos sin procesar, utilice la `WHERE` cláusula para filtrar por campos de metadatos a fin de reducir la cantidad de datos escaneados. Utilice los siguientes operadores para limitar el escaneo de metadatos:
+ Igual (=)
+ Distinto de (\$1=)
+ LIKE
+ IN
+ AND
+ OR

Para las propiedades de los atributos, utilice los siguientes campos para filtrar los resultados. :
+ `double_attribute_value`
+ `int_attribute_value`
+ `boolean_attribute_value`
+ `string_attribute_value`

Estos campos ofrecen un mejor rendimiento que la tabla **latest\$1value\$1time\$1series** para las propiedades de los activos del tipo de atributo.

**nota**  
Utilice literales en el lado derecho de los operadores para limitar adecuadamente el escaneo de datos. Por ejemplo, la siguiente consulta tiene un rendimiento peor que el uso de un literal de cadena estricto:  

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

**Example para filtros de metadatos:**  

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

## Filtros de datos sin procesar
Filtros de datos sin procesar

**Todas las tablas de datos sin procesar (**raw\$1time\$1series, latest\$1value\$1time\$1series, precomputed\$1aggregates****) tienen marcas de tiempo asociadas** a sus filas.** Además de los filtros de metadatos, utilice filtros de cláusulas en el campo para reducir la cantidad de datos escaneados. `WHERE` `event_timestamp` Utilice las siguientes operaciones para limitar el escaneo de datos sin procesar:
+ Igual (=)
+ Mayor que (>)
+ Menor que (<)
+ Mayor que o igual a (>=)
+ Menor que o igual a (<=)
+ BETWEEN
+ AND

**Ejemplos de filtros**:
+  Al consultar la tabla **precomputed\$1aggregates**, especifique siempre un filtro de calidad en la cláusula. `WHERE` Esto reduce la cantidad de datos que escanea la consulta, especialmente si está buscando datos. `BAD` `UNCERTAIN` 

   **También recomendamos encarecidamente utilizar un filtro de resolución (1 m, 15 m, 1 h o 1 d) al consultar la tabla precomputed\$1aggregates.** Si no especificas un filtro de resolución, se AWS IoT SiteWise escaneará de forma predeterminada la tabla completa en todas las resoluciones, lo que resulta ineficiente. 
+  Al consultar datos sin procesar, las funciones de marca de tiempo también se pueden usar en la `WHERE` cláusula para filtrar la cantidad de datos escaneados. **Por ejemplo, la siguiente consulta solo escanea los datos de los últimos 30 minutos de la tabla raw\$1time\$1series:** 

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

**nota**  
No es igual `(!=)` y, por lo general, `OR` los operadores no aplican filtros significativos al escaneo de datos sin procesar. Los filtros de los valores de los datos sin procesar (string\$1value, double\$1value, etc.) tampoco limitan el escaneo de datos sin procesar.

## Únete a la optimización
ÚNASE a la optimización

AWS IoT SiteWise SQL admite la `JOIN` palabra clave para combinar dos tablas. Solo `JOIN` se admiten los filtros activos en un campo (mediante la `ON` palabra clave). Están prohibidas las uniones cartesianas completas.

AWS IoT SiteWise también admite la `JOIN` s implícita sin utilizar la palabra clave. `JOIN` Se permiten entre diferentes tablas de metadatos y entre una tabla de metadatos y una tabla sin procesar. Por ejemplo, esta consulta:

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

Funciona mejor que esta consulta equivalente:

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

Se permiten las siguientes uniones implícitas (O está permitida, X está prohibida):


|  | asset | asset\$1property | latest\$1value\$1time\$1series | raw\$1time\$1series | precomputed\$1aggregates | subquery | 
| --- | --- | --- | --- | --- | --- | --- | 
| asset | 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 | 

Utilice `JOIN` s implícitos siempre que sea posible. Si debe usar la `JOIN` palabra clave, aplique filtros en las tablas editoriales individuales `JOIN` para minimizar los datos escaneados. Por ejemplo, en lugar de esta consulta:

```
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%'
```

Usa esta consulta más eficiente:

```
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%'
```

Al insertar filtros de metadatos en las subconsultas, se asegura de que las tablas individuales de la `JOIN` s se filtren durante el proceso de digitalización. También puedes usar la `LIMIT` palabra clave en las subconsultas para obtener el mismo efecto.

## Consultas grandes
Consultas grandes

Para las consultas que producen más filas que las predeterminadas, establece el tamaño de página de la [ExecuteQuery](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ExecuteQuery.html)API en un valor máximo de 20 000. Esto mejora el rendimiento general de las consultas.

Utilice la `LIMIT` cláusula para reducir la cantidad de datos escaneados en algunas consultas. Tenga en cuenta que las funciones de agregado y ciertas cláusulas que abarcan toda la tabla (`GROUP BY``ORDER BY`,,`JOIN`) requieren un análisis completo antes de aplicar la `LIMIT` cláusula.

**nota**  
 AWS IoT SiteWise pueden escanear una cantidad mínima de datos incluso con la `LIMIT` cláusula aplicada, especialmente en el caso de consultas de datos sin procesar que escanean varias propiedades. 

# ODBC
ODBC

El [controlador ODBC](https://github.com/awslabs/aws-iotsitewise-odbc-driver) de código abierto AWS IoT SiteWise proporciona una interfaz relacional SQL AWS IoT SiteWise para los desarrolladores y permite la conectividad desde herramientas de inteligencia empresarial (BI) como Power BI Desktop y Microsoft Excel. El controlador AWS IoT SiteWise ODBC está disponible actualmente en [Windows](https://github.com/awslabs/aws-iotsitewise-odbc-driver/releases) y admite el inicio de sesión único con Okta y Microsoft Azure Active Directory (AD).

Para obtener más información, consulte la documentación del controlador [AWS IoT SiteWise ODBC](https://github.com/awslabs/aws-iotsitewise-odbc-driver/blob/main/docs/markdown/index.md) en. GitHub

**Topics**
+ [

# Sintaxis de la cadena de conexión y opciones del controlador de ODBC
](query-ODBC-connecting.md)
+ [

# Ejemplos de cadenas de conexión para el controlador AWS IoT SiteWise ODBC
](query-ODBC-connecting-examples.md)
+ [

# Solución de problemas de conexión con el controlador de ODBC
](query-ODBC-connecting-troubleshooting.md)

# Sintaxis de la cadena de conexión y opciones del controlador de ODBC
Sintaxis de la cadena de conexión

La sintaxis para especificar las opciones de cadena de conexión para el controlador de ODBC es la siguiente:

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

Las opciones disponibles son las siguientes:

**Opciones de conexión del controlador**
+ **`Driver`**   *(obligatorio)*: el controlador que se utiliza con ODBC.

  El valor predeterminado es AWS IoT SiteWise.
+ **`DSN`**   –   El nombre del origen de datos (DSN) que se utilizará para configurar la conexión.

  El valor predeterminado es `NONE`.
+ **`Auth`**   –   Modo de autenticación. Este debe ser uno de los siguientes:
  + `AWS_PROFILE`: utilice la cadena de credenciales predeterminada.
  + `IAM`— Utilice las credenciales AWS de IAM.
  + `AAD`: utilice el proveedor de identidades de Azure Active Directory (AD).
  + `OKTA`: utilice el proveedor de identidades Okta.

  El valor predeterminado es `AWS_PROFILE`.

**Opciones de configuración de puntos de conexión**
+ **`EndpointOverride`**— La anulación del punto final del AWS IoT SiteWise servicio. Se trata de una opción avanzada que anula la región. Por ejemplo:

  ```
  iotsitewise.us-east-1.amazonaws.com
  ```
+ **`Region`**— La región de firma del punto final del AWS IoT SiteWise servicio.

  El valor predeterminado es `us-east-1`.

**Opción de proveedores de credenciales**
+ **`ProfileName`**— El nombre del perfil en el archivo de AWS configuración.

  El valor predeterminado es `NONE`.

**AWS Opciones de autenticación de IAM**
+ **`UID`**o **`AccessKeyId`**: el identificador de la clave AWS de acceso del usuario. Si `UID` y `AccessKeyId` se proporcionan en la cadena de conexión, se utilizará el valor `UID` a menos que esté vacío.

  El valor predeterminado es `NONE`.
+ **`PWD`** o **`SecretKey`**   –   La clave de acceso secreta del usuario de AWS. Si `PWD` y `SecretKey` se proporcionan en la cadena de conexión, se utilizará el valor `PWD` a menos que esté vacío.

  El valor predeterminado es `NONE`.
+ **`SessionToken`**   –   El token de sesión temporal necesario para acceder a una base de datos con la autenticación multifactor (MFA) habilitada. No incluya un ` = ` final en la entrada.

  El valor predeterminado es `NONE`.

**Opciones de autenticación basadas en SAML para Okta**
+ **`IdPHost`**   –   El nombre de host del IdP especificado.

  El valor predeterminado es `NONE`.
+ **`UID`** o **`IdPUserName`**   –   El nombre de usuario de la cuenta de IdP especificada. Si `UID` y `IdPUserName` se proporcionan en la cadena de conexión, se utilizará el valor `UID` a menos que esté vacío.

  El valor predeterminado es `NONE`.
+ **`PWD`** o **`IdPPassword`**   –   La contraseña de la cuenta de IdP especificada. Si `PWD` y `IdPPassword` se proporcionan en la cadena de conexión, se utilizará el valor `PWD` a menos que esté vacío.

  El valor predeterminado es `NONE`.
+ **`OktaApplicationID`**— El identificador único proporcionado por Okta y asociado a la AWS IoT SiteWise aplicación. El identificador de la aplicación (AppId) se encuentra en el `entityID` campo proporcionado en los metadatos de la aplicación. Un ejemplo es:

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

  El valor predeterminado es `NONE`.
+ **`RoleARN`**   –   El nombre de recurso de Amazon (ARN) del rol que la persona que llama va a tomar.

  El valor predeterminado es `NONE`.
+ **`IdPARN`**   –   El nombre de recurso de Amazon (ARN) del proveedor de SAML en IAM que describe el IdP.

  El valor predeterminado es `NONE`.

**Opciones de autenticación basadas en SAML para Azure Active Directory**
+ **`UID`** o **`IdPUserName`**   –   El nombre de usuario de la cuenta de IdP especificada.

  El valor predeterminado es `NONE`.
+ **`PWD`** o **`IdPPassword`**   –   La contraseña de la cuenta de IdP especificada.

  El valor predeterminado es `NONE`.
+ **`AADApplicationID`**   –   El identificador único de la aplicación registrada en Azure AD.

  El valor predeterminado es `NONE`.
+ **`AADClientSecret`**   –   El secreto del cliente asociado a la aplicación registrada en Azure AD que se utiliza para autorizar la obtención de los tokens.

  El valor predeterminado es `NONE`.
+ **`AADTenant`**   –   El ID de inquilino de Azure AD.

  El valor predeterminado es `NONE`.
+ **`RoleARN`**   –   El nombre de recurso de Amazon (ARN) del rol que la persona que llama va a tomar.

  El valor predeterminado es `NONE`.
+ **`IdPARN`**   –   El nombre de recurso de Amazon (ARN) del proveedor de SAML en IAM que describe el IdP.

  El valor predeterminado es `NONE`.

**AWS Opciones del SDK (avanzadas)**
+ **`RequestTimeout`**— El tiempo en milisegundos que el AWS SDK espera una solicitud de consulta antes de que se agote el tiempo de espera. Cualquier valor no positivo desactiva el tiempo de espera de la solicitud.

  El valor predeterminado es `3000`.
+ **`ConnectionTimeout`**— El tiempo en milisegundos que el AWS SDK espera a que los datos se transfieran a través de una conexión abierta antes de que se agote el tiempo de espera. Un valor de 0 deshabilita el tiempo de espera de conexión. Este valor no debe ser negativo.

  El valor predeterminado es `1000`.
+ **`MaxRetryCountClient`**   –   El número máximo de intentos de reintento en el caso de errores reintentables con códigos de error de 5xx en el SDK. El valor no debe ser negativo.

  El valor predeterminado es `0`.
+ **`MaxConnections`**— El número máximo de conexiones HTTP abiertas simultáneamente con el AWS IoT SiteWise servicio. El valor debe ser un número positivo.

  El valor predeterminado es `25`.

**Opciones de registro del controlador de ODBC**
+ **`LogLevel`**   –   El nivel de registro para el registro de los controladores. Debe ser uno de los siguientes:
  + **0**   (APAGADO).
  + **1**   (ERROR).
  + **2**   (ADVERTENCIA).
  + **3**   (INFORMACIÓN).
  + **4**   (DEPURACIÓN).

  El valor predeterminado es `1` (ERROR).

  **Advertencia:** El controlador puede registrar información personal al utilizar el modo de registro de DEPURACIÓN.
+ **`LogOutput`**   –   Carpeta en la que almacenar el archivo de registro.

  El valor predeterminado es:
  + **Windows:** `%USERPROFILE%` o si no está disponible, `%HOMEDRIVE%%HOMEPATH%`.
  + **macOS y Linux:** `$HOME` o si no está disponible, el campo `pw_dir` del valor devuelto `getpwuid(getuid())` por la función.

**Opciones de registro de SDK**

El nivel de registro del AWS SDK es independiente del nivel de registro del controlador AWS IoT SiteWise ODBC. Configurar uno no afecta al otro.

El nivel de registro del SDK se establece mediante la variable de entorno `SW_AWS_LOG_LEVEL`. Los valores válidos son:
+ `OFF`
+ `ERROR`
+ `WARN`
+ `INFO`
+ `DEBUG`
+ `TRACE`
+ `FATAL`

Si `SW_AWS_LOG_LEVEL` no está establecido, el nivel de registro del SDK se establece en el valor predeterminado, que es `WARN`.

## Conexión a través de un proxy
Conexión de proxy

El controlador ODBC admite la conexión a AWS IoT SiteWise través de un proxy. Para utilizar esta característica, configure las siguientes variables de entorno en función de la configuración del proxy:
+ **`SW_PROXY_HOST`**   –   el host del proxy.
+ **`SW_PROXY_PORT`**   –   Número de puerto del proxy.
+ **`SW_PROXY_SCHEME`**   –   El esquema de proxy, ya sea `http` o `https`.
+ **`SW_PROXY_USER`**   –   Nombre de usuario que se utilizará para la autenticación del proxy.
+ **`SW_PROXY_PASSWORD`**   –   Contraseña de usuario que se utilizará para la autenticación del proxy.
+ **`SW_PROXY_SSL_CERT_PATH`**   –   El archivo de certificado SSL que se utilizará para conectarse a un proxy HTTPS.
+ **`SW_PROXY_SSL_CERT_TYPE`**   –   El tipo de certificado SSL del cliente proxy.
+ **`SW_PROXY_SSL_KEY_PATH`**   –   El archivo de clave privada que se utilizará para conectarse a un proxy HTTPS.
+ **`SW_PROXY_SSL_KEY_TYPE`**   –   El tipo de archivo de clave privada que se utilizará para conectarse a un proxy HTTPS.
+ **`SW_PROXY_SSL_KEY_PASSWORD`**   –   La frase de contraseña para el archivo de clave privada que se utilizará para conectarse a un proxy HTTPS.

# Ejemplos de cadenas de conexión para el controlador AWS IoT SiteWise ODBC
Ejemplos de cadenas de conexión

## Ejemplo de conexión al controlador de ODBC con credenciales de IAM
Conexión con credenciales de IAM

```
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;
```

## Ejemplo de conexión al controlador de ODBC con un perfil
Conectarse con un perfil

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

El controlador intentará conectarse con las credenciales proporcionadas en `~/.aws/credentials`, o si se especifica un archivo en la variable de entorno `AWS_SHARED_CREDENTIALS_FILE`, con las credenciales de ese archivo.

## Ejemplo de conexión al controlador de ODBC con Okta
Conexión con Okta

```
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);
```

## Ejemplo de conexión al controlador ODBC con Azure Active Directory (AAD)
Conexión con AAD

```
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);
```

## Ejemplo de conexión al controlador ODBC con un punto de conexión específico y un nivel de registro de 2 (ADVERTENCIA)
Conectar con un punto de conexión

```
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;
```

# Solución de problemas de conexión con el controlador de ODBC
Resolución de problemas

**nota**  
Si el nombre de usuario y la contraseña ya están especificados en el DSN, no los vuelva a especificar cuando el administrador de controladores ODBC los solicite.

Se produce un código de error de `01S02` con un mensaje, `Re-writing (connection string option) (have you specified it several times?)` ocurre cuando se pasa una opción de cadena de conexión más de una vez en la cadena de conexión. Si se especifica una opción más de una vez, se produce un error. Al realizar una conexión con un DSN y una cadena de conexión, si una opción de conexión ya está especificada en el DSN, no la vuelva a especificar en la cadena de conexión.