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 laUNLOAD
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_by
no 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áfico
direct
, a saber,Social Media
,Organic Search
Other
, 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 delSocial Media
canal. Del mismo modo, dispondrá de otras carpetas para el resto de los canales.Datos exportados particionados por columna de canales
- 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 contiene
Time,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, hexadecimal
0D
, 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:
-
Si el valor en sí contiene el carácter entre comillas («), se escapará utilizando un carácter de escape. Por ejemplo, si el valor es
Time"stream
, donde (\) es el carácter de escape configurado, se escapa comoTime\"stream
. -
Si el valor contiene el carácter de escape configurado, se escapará. Por ejemplo, si el valor es
Time\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 tales
FIELD_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. LaUNLOAD
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 ejemplo
12GB
, o en decimales, como0.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')
UNLOAD
la 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