Amazon Redshift è un servizio di data warehousing senza server fornito da AWS per eseguire l'elaborazione analitica online (OLAP). È molto efficiente e consente di lavorare su query complesse e problemi di big data utilizzando i suoi nodi di calcolo paralleli. Poiché RedShift è progettato sul database basato su SQL, consente agli utenti di utilizzare molte funzioni SQL e ha anche le sue funzioni integrate. In questo articolo, sarai illuminato sul redshift Listagg funzione per concatenare le voci di righe diverse per formare una stringa.
Come definisce il nome, questa funzione viene utilizzata per aggregare l'elenco. O in parole più semplici, viene utilizzato per concaterare voci di diverse righe in una tabella per formare una stringa. Sicuramente questo è difficile da digerire teoricamente, quindi ti guideremo di più usando determinati esempi. Ma prima saltiamo nella sua sintassi ed esploriamo di più al riguardo.
Sintassi per utilizzare la funzione Listagg
IL Listagg La funzione in Redshift può essere utilizzata seguendo la sintassi data.
Seleziona Listagg (distinto , ) all'interno del gruppo (ordine di ) da
La sintassi sopra mostra gli attributi richiesti per l'utilizzo della funzione ListAgg.
Nome colonna: La colonna nella tabella Redshift su cui si uscirà questa funzione.
Delimitatore: Questo è semplicemente il separatore dell'elenco che desideri utilizzare. Nella maggior parte dei casi la virgola (,) o il punto e virgola (;) è usato come delimitatore. Questo è facoltativo menzionare e per impostazione predefinita il suo valore è nullo.
Lista degli ordini: Questo è usato per definire come vuoi ordinare i valori.
Nome della tabella: Questa è solo la tabella del database su cui stai lavorando tutto questo.
Utilizzando la funzione Listagg
In questa sezione, ti mostreremo alcuni casi d'uso pratici ed esempi per spiegare brevemente come la funzione di Listagg in Redshift può essere utilizzata per ottenere il risultato desiderato.
Uso-Case 1
Innanzitutto, faremo l'esempio più semplice per mostrarti come funziona la funzione Listagg in Redshift. Supponiamo di avere una tabella di database denominata it_team Avere un'unica colonna per i nomi delle persone che lavorano in quel dipartimento.
Ora, vuoi semplicemente presentare tutti i nomi in una singola stringa separata da virgole. A tale scopo, utilizzerai la funzione Listagg nel modo seguente.
Nell'output otterrai tutti i valori dalla colonna nome in una singola riga sotto forma di una stringa.
Quindi, puoi vedere quanto è facile utilizzare la funzione Listagg e concatenare le righe di una tabella in Redshift.
Uso-Case 2
Prendi un caso in cui vuoi scoprire tutti i leader del team che lavorano su diversi progetti nella tua organizzazione. Quello che hai è un tavolo chiamato dev_team che mostra tutti i progetti e i leader del team in diverse colonne.
Ora, ci sono pochi casi in cui una singola persona lavora come leader del team per più di un progetto, ma vuoi solo prendere ogni nome una sola volta. A tale scopo, dobbiamo usare il Distinto Opzione disponibile con la funzione ListAgg per ignorare i valori ripetuti.
Seleziona Listagg (distinto team_lead, '|') come team_leaders dall'organizzazione.dev_team
Puoi vedere che nell'output abbiamo ottenuto tutti i nostri team leader e inoltre non ci sono duplicazioni di nomi in quanto abbiamo usato il Distinto opzione. Inoltre, puoi vedere che il nome della colonna di output viene modificato capi squadra. Invece del nome della colonna predefinita per migliorare la comprensione dei dati. Il delimitatore usato qui è un simbolo del tubo per separare i nomi dei cavi.
Uso-Case 3
Supponiamo che il tuo senior ti abbia assegnato un compito per scoprire i progetti sotto ogni team leader e presentarli in un'unica stringa. Consideriamo di nuovo il dev_team tavolo.
Per una relazione one-to-one tra progetti e team leader, questo compito sarebbe semplice. In questo caso, si può vedere che c'è anche più di un progetto sotto alcuni team leader. Per questo, è necessario creare una nuova query RedShift come mostrato di seguito.
Seleziona team_lead, Listagg (Project_name, ',') come progetti dall'organizzazione.dev_team Gruppo di team_lead
In questa domanda, la funzione aggregata viene applicata al Nome del progetto colonna. Ha anche un altro parametro utilizzato per raggruppare l'output della funzione a team_lead colonna.
Puoi vedere che il nostro obiettivo richiesto è raggiunto e quanto in modo efficiente ha organizzato tutto in modo eccellente. Da questo, puoi facilmente vedere quale leader del team sta gestendo quali progetti nella tua organizzazione.
Uso-Case 4
In tutti gli esempi precedenti, stiamo solo concatenando le righe da una singola colonna della tabella. Ma ora in questo esempio, vedrai che possiamo persino formare una singola stringa da valori di più righe e colonne diverse.
Supponiamo che mentre si lavora nel dipartimento delle vendite di una grande azienda, ti viene assegnata un'attività per analizzare i dettagli dei tuoi clienti e tutti i progetti forniti da ciascun cliente il tempo di completamento dei progetti. Tutti questi dati sono presenti in una singola tabella di database denominata Dettagli del progetto Avere tre colonne.
Creiamo una query per ottenere l'output desiderato utilizzando la funzione RedShift Listegg. Utilizzerai la seguente query per questo per ottenere l'output desiderato:
Selezionare nome del cliente, Listagg (progetti || 'completerà in' || completamento_time, ',') All'interno di Group (Order per client_name) dall'organizzazione.Dettagli del progetto Gruppo di client_name
La funzione Listagg viene applicata su due colonne progetti E tempo di completamento Usando il simbolo del doppio tubo. In un posto, abbiamo usato l'espressione completerà in come delimitatore e virgola per l'altra posizione. L'uscita è ordinata in ordine alfabetico ascendente rispetto al nome del cliente colonna. L'output dalla query di spostamento verso il rosso sopra sarà la seguente:
Ora, puoi vedere che abbiamo ottenuto i nostri risultati. Mostra ogni progetto con la sua durata del tempo e il cliente a cui appartiene.
Conclusione
La funzione RedShift ListAgg è molto utile se si desidera rappresentare i dati da più righe di una colonna in una riga singola. La funzione
[cc lang = "python" width = "100%" altezza = "100%" sfuggito = "vero" tema = "blackboard" NowRap = "0"] può prendere diversi attributi e può generare output in diversi moduli come richiesto. Puoi creare query semplici e complesse usando questa funzione.