Amazon Redshift est un service d'entreposage de données sans serveur fourni par AWS pour exécuter le traitement analytique en ligne (OLAP). Il est très efficace et permet de travailler sur des requêtes complexes et des problèmes de mégadonnées en utilisant ses nœuds de calcul parallèles. Comme Redshift est conçu sur la base de données basée sur SQL, il permet aux utilisateurs d'utiliser de nombreuses fonctions SQL et possède également ses propres fonctions intégrées. Dans cet article, vous serez éclairé par le redshift Listagg fonction pour concaténer les entrées de différentes lignes pour former une chaîne.
Comme son nom le définit, cette fonction est utilisée pour agréger la liste. Ou en mots plus simples, il est utilisé pour concaténer les entrées de différentes lignes dans une table pour former une chaîne. Cela est sûrement difficile à digérer théoriquement afin que nous vous guiderons davantage à ce sujet en utilisant certains exemples. Mais d'abord, sautons-nous dans sa syntaxe et explorons plus à ce sujet.
Syntaxe pour utiliser la fonction Listagg
Le Listagg La fonction dans Redshift peut être utilisée en suivant la syntaxe donnée.
Sélectionnez Listagg (distinct , ) dans le groupe (ordre par ) depuis
La syntaxe ci-dessus montre les attributs requis pour l'utilisation de la fonction Listagg.
Nom de colonne: La colonne de la table Redshift sur laquelle vous allez utiliser cette fonction.
Délimiteur: C'est simplement le séparateur de liste que vous souhaitez utiliser. Dans la plupart des cas, la virgule (,) ou le point-virgule (;) est utilisée comme délimiteur. Ceci est facultatif à mentionner et par défaut, sa valeur est nul.
Liste des commandes: Ceci est utilisé pour définir comment vous souhaitez trier les valeurs.
Nom de la table: Ce n'est que le tableau de base de données sur lequel vous travaillez tout cela.
Utilisation de la fonction Listagg
Dans cette section, nous allons vous montrer certains cas d'utilisation pratiques et exemples pour expliquer brièvement comment la fonction Listagg dans Redshift peut être utilisée pour obtenir le résultat souhaité.
Utilisation de la case 1
Tout d'abord, nous allons prendre l'exemple le plus simple pour vous montrer comment fonctionne la fonction Listagg dans Redshift. Supposons que vous ayez un tableau de base de données nommé it_team Avoir une seule colonne pour les noms des personnes travaillant dans ce département.
Maintenant, vous voulez simplement présenter tous les noms sous un seul formulaire de chaîne séparés par des virgules. À cette fin, vous utiliserez la fonction Listagg de la manière suivante.
Sélectionnez Listagg (nom, ',') From Organisation.it_team
Dans la sortie, vous obtiendrez toutes les valeurs de la colonne nom dans une seule ligne sous la forme d'une chaîne.
Ainsi, vous pouvez voir à quel point il est facile d'utiliser la fonction Listagg et de concaténer les rangées d'une table dans Redshift.
Utilisation de la case 2
Prenez un cas où vous souhaitez découvrir tous les chefs d'équipe travaillant sur différents projets dans votre organisation. Ce que vous avez est un tableau nommé dev_team qui montre tous les projets et les chefs d'équipe dans différentes colonnes.
Maintenant, il y a peu de cas où une seule personne travaille en tant que chef d'équipe pour plus d'un projet, mais vous voulez juste prendre chaque nom une seule fois. À cette fin, nous devons utiliser le DISTINCT Option disponible avec la fonction Listagg pour ignorer les valeurs répétées.
Sélectionnez Listagg (Distinct Team_lead, '|') comme Team_leaders de l'organisation.dev_team
Vous pouvez voir que dans la production, nous avons tous nos chefs d'équipe et il n'y a pas non plus de duplication de noms car nous avons utilisé le DISTINCT option. De plus, vous pouvez voir que le nom de la colonne de sortie est modifié en chefs d'équipe. Au lieu du nom de colonne par défaut pour améliorer la compréhension des données. Le délimiteur utilisé ici est un symbole de tuyau pour séparer les noms des fils.
Utilisation du cas 3
Supposons que votre senior vous ait assigné une tâche pour découvrir les projets sous chaque chef d'équipe et les présenter dans une seule chaîne. Considérons à nouveau le dev_team tableau.
Pour une relation individuelle entre les projets et les chefs d'équipe, cette tâche serait simple. Dans ce cas, on peut voir qu'il y a encore plus d'un projet sous certains chefs d'équipe. Pour cela, vous devez créer une nouvelle requête Redshift comme indiqué ci-dessous.
Sélectionnez Team_Lead, listagg (project_name, ',') comme projets de l'organisation.dev_team Groupe par Team_Lead
Dans cette requête, la fonction agrégée est appliquée au nom du projet colonne. Il a également un paramètre de plus utilisé pour regrouper la sortie de la fonction chef d'équipe colonne.
Vous pouvez voir que notre cible requise est atteinte et à quel point il a tout arrangé très bien. À partir de cela, vous pouvez facilement voir quel chef d'équipe gère les projets dans votre organisation.
Utilisation-case 4
Dans tous les exemples précédents, nous ne concatenons que les lignes d'une seule colonne de la table. Mais maintenant dans cet exemple, vous verrez que nous pouvons même former une seule chaîne à partir de valeurs de plusieurs lignes et différentes colonnes.
Supposons que tout en travaillant dans le département des ventes d'une grande entreprise, vous avez une tâche pour analyser les détails de vos clients et tous les projets donnés par chaque client avec l'heure d'achèvement des projets. Toutes ces données sont présentes dans une seule table de base de données nommée détails du projet Avoir trois colonnes.
Créons une requête pour atteindre la sortie souhaitée en utilisant la fonction Redshift Listagg. Vous utiliserez la requête suivante pour cela pour obtenir la sortie souhaitée:
sélectionner Nom du client, listagg (projets || 'se terminera dans' || complétion_time, ',') dans le groupe (commande par client_name) de l'organisation.détails du projet groupe par client_name
La fonction Listagg est appliquée sur deux colonnes projets et le temps d'achèvement Utilisation du symbole à double tuyau. En un seul endroit, nous avons utilisé l'expression se terminera dans En tant que délimiteur et virgule pour l'autre position. La sortie est commandée dans un ordre alphabétique ascendant par rapport à Nom du client colonne. La sortie de la requête en redshift ci-dessus sera la suivante:
Maintenant, vous pouvez voir que nous avons nos résultats. Il montre chaque projet avec sa durée et le client à qui il appartient.
Conclusion
La fonction Redshift Listagg est très utile si vous souhaitez représenter les données de plusieurs lignes d'une colonne en une seule ligne. La fonction
[cc lang = ”python” width = ”100%” height = ”100%” échappé = ”true” thème = ”Blackboard” Nowrap = ”0"] peut prendre plusieurs attributs et peut générer une sortie sous différentes formes selon les besoins. Vous pouvez créer des requêtes simples et complexes en utilisant cette fonction.