Amazon Redshift es un servicio de almacenamiento de datos sin servidor proporcionado por AWS para ejecutar procesamiento analítico en línea (OLAP). Es muy eficiente y permite trabajar en consultas complejas y problemas de big data utilizando sus nodos de cómputo paralelos. Como RedShift está diseñado en la base de datos basada en SQL, permite a los usuarios utilizar muchas funciones SQL y también tiene sus propias funciones incorporadas. En este artículo, estarás iluminado sobre el desplazamiento al rojo Listag función para concatenar las entradas de diferentes filas para formar una cadena.
Como su nombre define, esta función se utiliza para agregar la lista. O en palabras más simples, se usa para concatenar entradas de diferentes filas en una tabla para formar una cadena. Seguramente esto es difícil de digerir teóricamente, por lo que lo guiaremos más al respecto utilizando ciertos ejemplos. Pero primero saltemos a su sintaxis y exploremos más sobre ella.
Sintaxis para usar la función listagg
El Listag La función en el desplazamiento rojo se puede usar siguiendo la sintaxis dada.
Seleccione Listagg (distinto , ) dentro del grupo (orden por ) de
La sintaxis anterior muestra los atributos requeridos para usar la función listagg.
Nombre de la columna: La columna en la tabla de desplazamiento rojo en la que va a usar esta función.
Delimitador: Este es simplemente el separador de la lista que desea usar. En la mayoría de los casos, coma (,) o semicolon (;) se usa como delimitador. Esto es opcional de mencionar y, por defecto, su valor es nulo.
Lista de orden: Esto se usa para definir cómo desea ordenar los valores.
Nombre de la tabla: Esta es solo la tabla de la base de datos en la que está trabajando todo esto.
Usando la función Listagg
En esta sección, le mostraremos algunos casos de uso prácticos y ejemplos para explicar brevemente cómo se puede usar la función de listagg en desplazamiento rojo para obtener el resultado deseado.
Uso Case 1
Primero, vamos a tomar el ejemplo más simple para mostrarle cómo funciona la función Listagg en RedShift. Supongamos que tiene una tabla de base de datos nombrada it_team tener una sola columna para los nombres de personas que trabajan en ese departamento.
Ahora, simplemente desea presentar todos los nombres en un solo formulario de cadena separado por comas. Para este propósito, utilizará la función Listagg de la siguiente manera.
Seleccione Listagg (nombre, ',') de la organización.it_team
En la salida, obtendrá todos los valores de la columna nombre en una sola fila en forma de una cadena.
Por lo tanto, puede ver lo fácil que es usar la función Listagg y concatenar las filas de una tabla en Redshift.
Uso Case 2
Tome un caso en el que desee averiguar todos los líderes del equipo que trabajan en diferentes proyectos de su organización. Lo que tienes es una mesa llamada dev_team que muestra todos los proyectos y líderes de equipo en diferentes columnas.
Ahora, hay pocos casos en los que una sola persona trabaja como líder del equipo para más de un proyecto, pero solo desea tomar cada nombre solo una vez. Para este propósito, necesitamos usar el DISTINTO Opción disponible con la función Listagg para ignorar los valores repetidos.
Seleccione Listagg (distinto Team_lead, '|') como Team_Leaders de la organización.dev_team
Puede ver que en la salida tenemos todos los líderes de nuestro equipo y tampoco hay duplicación de nombres como hemos usado el DISTINTO opción. Además, puede ver que el nombre de la columna de salida se cambia a lideres de equipo. En lugar del nombre predeterminado de la columna para mejorar la comprensión de los datos. El delimitador utilizado aquí hay un símbolo de tubería para separar los nombres de los cables.
Case de uso 3
Supongamos que su senior le ha asignado una tarea para averiguar los proyectos bajo cada líder del equipo y presentarlos en una sola cadena. Vamos a considerar de nuevo el dev_team mesa.
Para una relación individual entre proyectos y líderes de equipo, esta tarea sería simple. En este caso, se puede ver que incluso hay más de un proyecto bajo algunos líderes de equipo. Para esto, debe crear una nueva consulta de desplazamiento al rojo como se muestra a continuación.
Seleccione Team_lead, listagg (proyecto_name, ',') como proyectos de la organización.dev_team Grupo por Team_lead
En esta consulta, la función agregada se aplica a la nombre del proyecto columna. También tiene un parámetro más utilizado para agrupar la salida de la función a la jefe de equipo columna.
Puede ver que se logra nuestro objetivo requerido y cuán eficientemente ha organizado todo de manera excelente. A partir de esto, puede ver fácilmente qué líder del equipo está manejando qué proyectos de su organización.
Uso Case 4
En todos los ejemplos anteriores, solo estamos concatenando las filas de una sola columna de la tabla. Pero ahora, en este ejemplo, verá que incluso podemos formar una sola cadena a partir de valores de múltiples filas y diferentes columnas.
Supongamos que mientras trabaja en el departamento de ventas de una gran empresa, se le asigna una tarea para analizar los detalles de sus clientes y todos los proyectos dados por cada cliente con el tiempo de finalización de los proyectos. Todos estos datos están presentes en una sola tabla de base de datos llamada detalles del proyecto Tener tres columnas.
Creemos una consulta para lograr la salida deseada utilizando la función RedShift Listagg. Utilizará la siguiente consulta para esto para obtener la salida deseada:
seleccionar nombre del cliente, listagg (proyectos || 'se completará en' || finalion_time ',') Dentro del grupo (pedido por client_name) de la organización.detalles del proyecto grupo por client_name
La función listagg se aplica en dos columnas proyectos y Tiempo de finalización Usando el símbolo de tubería doble. En un solo lugar, hemos usado la expresión se completará en como delimitador y coma para la otra posición. La salida se ordena en orden alfabético ascendente con respecto al nombre del cliente columna. La salida de la consulta de cambio rojo anterior será la siguiente:
Ahora, puedes ver que tenemos nuestros resultados. Muestra cada proyecto con su duración de tiempo y el cliente al que pertenece.
Conclusión
La función RedShift Listagg es muy útil si desea representar los datos de varias filas de una columna en una sola fila. La función
[cc lang = "python" width = "100%" height = "100%" escaped = "true" thema = "Blackboard" Nowrap = "0"] puede tomar varios atributos y puede generar salida en diferentes formas según sea necesario. Puede crear consultas simples y complejas utilizando esta función.