amazon s3 - pricing - Redshift Spectrum: partición automática de tablas por fecha/carpeta
redshift render (1)
Solución 1:
Se pueden crear hasta 20000 particiones por mesa. Puede escribir un script de un solo uso para agregar las particiones (a un máximo de 20k) para todas las futuras carpetas de particiones s3.
Por ej.
Si la carpeta s3: // bucket / tickit / spectrum / sales_partition / saledate = 2017-12 / no existe, puede incluso agregar particiones para eso.
alter table spectrum.sales_part
add partition(saledate=''2017-12-01'')
location ''s3://bucket/tickit/spectrum/sales_partition/saledate=2017-12/'';
Solución 2:
Actualmente generamos una exportación CSV diaria que cargamos en un depósito S3 en la siguiente estructura:
<report-name>
|--reportDate-<date-stamp>
|-- part0.csv.gz
|-- part1.csv.gz
Queremos poder ejecutar informes particionados por exportación diaria.
Según esta página, puede dividir los datos en Redshift Spectrum con una clave que se basa en la carpeta fuente S3 donde su tabla Spectrum obtiene sus datos. Sin embargo, del ejemplo, parece que necesita una instrucción ALTER
para cada partición:
alter table spectrum.sales_part
add partition(saledate=''2008-01-01'')
location ''s3://bucket/tickit/spectrum/sales_partition/saledate=2008-01/'';
alter table spectrum.sales_part
add partition(saledate=''2008-02-01'')
location ''s3://awssampledbuswest2/tickit/spectrum/sales_partition/saledate=2008-02/'';
¿Hay alguna forma de configurar la tabla para que los datos sean particionados automáticamente por la carpeta de donde provienen, o necesitamos un trabajo diario para ALTER
la tabla para agregar la partición de ese día?