UNLOADConceptos - Amazon Timestream

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.

UNLOADConceptos

Sintaxis

UNLOAD (SELECT statement) TO 's3://bucket-name/folder' WITH ( option = expression [, ...] )

¿dónde option está

{ partitioned_by = ARRAY[ col_name[,…] ] | format = [ '{ CSV | PARQUET }' ] | compression = [ '{ GZIP | NONE }' ] | encryption = [ '{ SSE_KMS | SSE_S3 }' ] | kms_key = '<string>' | field_delimiter ='<character>' | escaped_by = '<character>' | include_header = ['{true, false}'] | max_file_size = '<value>' | }

Parámetros

SELECTdeclaración

La sentencia de consulta utilizada para seleccionar y recuperar datos de uno o más Timestream para LiveAnalytics tablas.

(SELECT column 1, column 2, column 3 from database.table where measure_name = "ABC" and timestamp between ago (1d) and now() )
Cláusula TO
TO 's3://bucket-name/folder'

o

TO 's3://access-point-alias/folder'

La TO cláusula de la UNLOAD declaración especifica el destino de la salida de los resultados de la consulta. Debe proporcionar la ruta completa, incluido el nombre del bucket de Amazon S3 o Amazon S3 access-point-alias con la ubicación de la carpeta en Amazon S3 donde Timestream for LiveAnalytics escribe los objetos del archivo de salida. El bucket de S3 debe ser propiedad de la misma cuenta y estar en la misma región. Además del conjunto de resultados de la consulta, Timestream for LiveAnalytics escribe los archivos de manifiesto y metadatos en la carpeta de destino especificada.

PARTITIONEDCláusula _BY
partitioned_by = ARRAY [col_name[,…] , (default: none)

La partitioned_by cláusula se utiliza en las consultas para agrupar y analizar los datos de forma granular. Al exportar los resultados de la consulta al bucket de S3, puede elegir dividir los datos en función de una o más columnas de la consulta seleccionada. Al particionar los datos, los datos exportados se dividen en subconjuntos según la columna de partición y cada subconjunto se almacena en una carpeta independiente. Dentro de la carpeta de resultados que contiene los datos exportados, se crea automáticamente una subcarpetafolder/results/partition column = partition value/. Sin embargo, ten en cuenta que las columnas particionadas no se incluyen en el archivo de salida.

partitioned_byno es una cláusula obligatoria en la sintaxis. Si decide exportar los datos sin ninguna partición, puede excluir la cláusula de la sintaxis.

Supongamos que está supervisando los datos del flujo de clics de su sitio web y tiene 5 canales de tráficodirect, a saber,Social Media, Organic SearchOther, y. Referral Al exportar los datos, puede optar por particionarlos mediante la columnaChannel. Dentro de tu carpeta de datoss3://bucketname/results, tendrás cinco carpetas, cada una con su nombre de canal respectivo. Por ejemplo, s3://bucketname/results/channel=Social Media/. dentro de esta carpeta encontrarás los datos de todos los clientes que llegaron a tu sitio web a través del Social Media canal. Del mismo modo, dispondrá de otras carpetas para el resto de los canales.

Datos exportados particionados por columna de canales

Folder structure showing channels: Direct, Organic search, Other, Referral, and Social media.
FORMAT
format = [ '{ CSV | PARQUET }' , default: CSV

Las palabras clave para especificar el formato de los resultados de la consulta que se escriben en su bucket de S3. Puede exportar los datos como valores separados por comas (CSV) utilizando una coma (,) como delimitador predeterminado o en el formato Apache Parquet, un formato eficiente de almacenamiento en columnas abiertas para el análisis.

COMPRESSION
compression = [ '{ GZIP | NONE }' ], default: GZIP

Puede comprimir los datos exportados mediante un algoritmo de compresión GZIP o descomprimirlos especificando la opción. NONE

ENCRYPTION
encryption = [ '{ SSE_KMS | SSE_S3 }' ], default: SSE_S3

Los archivos de salida de Amazon S3 se cifran con la opción de cifrado que haya seleccionado. Además de sus datos, los archivos de manifiesto y metadatos también se cifran en función de la opción de cifrado que haya seleccionado. Actualmente, admitimos el KMS cifrado SSE _S3 y SSE _. SSE_S3 es un cifrado del lado del servidor en el que Amazon S3 cifra los datos mediante el cifrado estándar de cifrado avanzado () de 256 bits. AES SSE_ KMS es un cifrado del lado del servidor para cifrar los datos mediante claves administradas por el cliente.

KMS_KEY
kms_key = '<string>'

KMSLa clave es una clave definida por el cliente para cifrar los resultados de las consultas exportadas. KMSKey Management Service (AWS KMS) gestiona la AWS clave de forma segura y se utiliza para cifrar archivos de datos en Amazon S3.

FIELD_DELIMITER
field_delimiter ='<character>' , default: (,)

Al exportar los datos en CSV formato, este campo especifica un único ASCII carácter que se utiliza para separar los campos del archivo de salida, como un carácter vertical (|), una coma (,) o una tabulación (/t). El delimitador predeterminado de los CSV archivos es un carácter de coma. Si un valor de los datos contiene el delimitador elegido, el delimitador aparecerá entre comillas. Por ejemplo, si el valor de sus datos lo contieneTime,stream, este valor se indicará como "Time,stream" en los datos exportados. El carácter de comilla utilizado por Timestream LiveAnalytics son comillas dobles («).

Evite especificar el carácter de retorno (ASCII13, hexadecimal0D, texto '\ r') o el carácter de salto de línea (ASCII10, hexadecimal 0A, texto'\n') FIELD_DELIMITER si desea incluir encabezados en elCSV, ya que eso impedirá que muchos analizadores puedan analizar los encabezados correctamente en el resultado resultante. CSV

ESCAPED_BY
escaped_by = '<character>', default: (\)

Al exportar los datos en CSV formato, este campo especifica el carácter que debe tratarse como un carácter de escape en el archivo de datos escrito en el bucket de S3. El escape se produce en los siguientes escenarios:

  1. Si el valor en sí contiene el carácter entre comillas («), se escapará utilizando un carácter de escape. Por ejemplo, si el valor esTime"stream, donde (\) es el carácter de escape configurado, se escapa comoTime\"stream.

  2. Si el valor contiene el carácter de escape configurado, se escapará. Por ejemplo, si el valor esTime\stream, se escapará comoTime\\stream.

nota

Si la salida exportada contiene tipos de datos complejos, como matrices, filas o series temporales, se serializará como una cadena. JSON A continuación se muestra un ejemplo.

Tipo de datos Valor real Cómo se escapa el valor en el CSV formato [JSONcadena serializada]

Matriz

[ 23,24,25 ]

"[23,24,25]"

Fila

( x=23.0, y=hello )

"{\"x\":23.0,\"y\":\"hello\"}"

Serie temporal

[ ( time=1970-01-01 00:00:00.000000010, value=100.0 ),( time=1970-01-01 00:00:00.000000012, value=120.0 ) ]

"[{\"time\":\"1970-01-01 00:00:00.000000010Z\",\"value\":100.0},{\"time\":\"1970-01-01 00:00:00.000000012Z\",\"value\":120.0}]"

INCLUDE_HEADER
include_header = 'true' , default: 'false'

Al exportar los datos en CSV formato, este campo permite incluir los nombres de las columnas en la primera fila de los archivos de CSV datos exportados.

Los valores aceptados son «verdadero» y «falso» y el valor predeterminado es «falso». Las opciones de transformación de texto, por ejemplo, escaped_by field_delimiter se aplican también a los encabezados.

nota

Al incluir encabezados, es importante que no seleccione un carácter de retorno vertical (ASCII13, hexadecimal 0D, texto '\ r') o un carácter de salto de línea (ASCII10, hexadecimal 0A, texto'\n') como talesFIELD_DELIMITER, ya que esto impedirá que muchos analizadores puedan analizar correctamente los encabezados en el resultado resultante. CSV

MAX_FILE_SIZE
max_file_size = 'X[MB|GB]' , default: '78GB'

Este campo especifica el tamaño máximo de los archivos que la UNLOAD declaración crea en Amazon S3. La UNLOAD declaración puede crear varios archivos, pero el tamaño máximo de cada archivo escrito en Amazon S3 será aproximadamente el especificado en este campo.

El valor del campo debe estar comprendido entre 16 MB y 78 GB, ambos inclusive. Puede especificarlo en números enteros, por ejemplo12GB, o en decimales, como 0.5GB o24.7MB. El valor predeterminado es 78 GB.

El tamaño real del archivo es aproximado cuando se escribe el archivo, por lo que es posible que el tamaño máximo real no sea exactamente igual al número que especifique.

¿Qué está escrito en mi bucket de S3?

Por cada UNLOAD consulta que se ejecute correctamente, Timestream for LiveAnalytics escribe los resultados de la consulta, el archivo de metadatos y el archivo de manifiesto en el bucket de S3. Si ha particionado los datos, tiene todas las carpetas de particiones en la carpeta de resultados. El archivo de manifiesto contiene una lista de los archivos que escribió el UNLOAD comando. El archivo de metadatos contiene información que describe las características, propiedades y atributos de los datos escritos.

¿Cuál es el nombre del archivo exportado?

El nombre del archivo exportado contiene dos componentes, el primer componente es el QueryID y el segundo es un identificador único.

CSVarchivos

S3://bucket_name/results/<queryid>_<UUID>.csv S3://bucket_name/results/<partitioncolumn>=<partitionvalue>/<queryid>_<UUID>.csv

CSVFichero comprimido

S3://bucket_name/results/<partitioncolumn>=<partitionvalue>/<queryid>_<UUID>.gz

Archivo de parquet

S3://bucket_name/results/<partitioncolumn>=<partitionvalue>/<queryid>_<UUID>.parquet

Archivos de metadatos y manifiestos

S3://bucket_name/<queryid>_<UUID>_manifest.json S3://bucket_name/<queryid>_<UUID>_metadata.json

Como los datos en CSV formato se almacenan a nivel de archivo, al comprimir los datos al exportarlos a S3, el archivo tendrá la extensión «.gz». Sin embargo, los datos de Parquet se comprimen a nivel de columna, por lo que incluso si comprime los datos durante la exportación, el archivo seguirá teniendo la extensión.parquet.

¿Qué información contiene cada archivo?

Archivo de manifiesto

El archivo de manifiesto proporciona información sobre la lista de archivos que se exportan con la UNLOAD ejecución. El archivo de manifiesto está disponible en el bucket de S3 proporcionado con un nombre de archivo:s3://<bucket_name>/<queryid>_<UUID>_manifest.json. El archivo de manifiesto contendrá la URL de los archivos de la carpeta de resultados, el número de registros y el tamaño de los archivos respectivos, y los metadatos de la consulta (que son el total de bytes y filas exportados a S3 para la consulta).

{ "result_files": [ { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 32295, "row_count": 10 } }, { "url":"s3://my_timestream_unloads/ec2_metrics/AEDAGANLHLBH4OLISD3CVOZZRWPX5GV2XCXRBKCVD554N6GWPWWXBP7LSG74V2Q_1448466917_szCL4YgVYzGXj2lS.gz", "file_metadata": { "content_length_in_bytes": 62295, "row_count": 20 } }, ], "query_metadata": { "content_length_in_bytes": 94590, "total_row_count": 30, "result_format": "CSV", "result_version": "Amazon Timestream version 1.0.0" }, "author": { "name": "Amazon Timestream", "manifest_file_version": "1.0" } }

Metadatos

El archivo de metadatos proporciona información adicional sobre el conjunto de datos, como el nombre de la columna, el tipo de columna y el esquema. <queryid>El archivo de metadatos está disponible en el bucket de S3 proporcionado con un nombre de archivo: S3: //bucket_name/ _< >_metadata.json UUID

A continuación se muestra un ejemplo de un archivo de metadatos.

{ "ColumnInfo": [ { "Name": "hostname", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "region", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "measure_name", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "cpu_utilization", "Type": { "TimeSeriesMeasureValueColumnInfo": { "Type": { "ScalarType": "DOUBLE" } } } } ], "Author": { "Name": "Amazon Timestream", "MetadataFileVersion": "1.0" } }

La información de las columnas que se comparte en el archivo de metadatos tiene la misma estructura que la que ColumnInfo se envía en la API respuesta a las SELECT consultas.

Resultados

La carpeta de resultados contiene los datos exportados en Apache Parquet o en CSV formato.

Ejemplo

Al enviar una UNLOAD consulta como la que se muestra a continuación a través de QueryAPI,

UNLOAD(SELECT user_id, ip_address, event, session_id, measure_name, time, query, quantity, product_id, channel FROM sample_clickstream.sample_shopping WHERE time BETWEEN ago(2d) AND now()) TO 's3://my_timestream_unloads/withoutpartition/' WITH ( format='CSV', compression='GZIP')

UNLOADla respuesta a la consulta tendrá 1 fila x 3 columnas. Esas 3 columnas son:

  • filas de tipoBIGINT: indica el número de filas exportadas

  • metadataFile de tipoVARCHAR, que es el S3 URI del archivo de metadatos exportado

  • manifestFile de tipoVARCHAR, que es el S3 URI del archivo de manifiesto exportado

Obtendrá la siguiente respuesta de QueryAPI:

{ "Rows": [ { "Data": [ { "ScalarValue": "20" # No of rows in output across all files }, { "ScalarValue": "s3://my_timestream_unloads/withoutpartition/AEDAAANGH3D7FYHOBQGQQMEAISCJ45B42OWWJMOT4N6RRJICZUA7R25VYVOHJIY_<UUID>_metadata.json" #Metadata file }, { "ScalarValue": "s3://my_timestream_unloads/withoutpartition/AEDAAANGH3D7FYHOBQGQQMEAISCJ45B42OWWJMOT4N6RRJICZUA7R25VYVOHJIY_<UUID>_manifest.json" #Manifest file } ] } ], "ColumnInfo": [ { "Name": "rows", "Type": { "ScalarType": "BIGINT" } }, { "Name": "metadataFile", "Type": { "ScalarType": "VARCHAR" } }, { "Name": "manifestFile", "Type": { "ScalarType": "VARCHAR" } } ], "QueryId": "AEDAAANGH3D7FYHOBQGQQMEAISCJ45B42OWWJMOT4N6RRJICZUA7R25VYVOHJIY", "QueryStatus": { "ProgressPercentage": 100.0, "CumulativeBytesScanned": 1000, "CumulativeBytesMetered": 10000000 } }

Tipos de datos

La UNLOAD instrucción admite todos los tipos de datos de Timestream para el lenguaje LiveAnalytics de consulta descrito en, Tipos de datos compatibles excepto time y. unknown