Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Interaction avec le SQL génératif Amazon Q
Note
Le support SQL génératif d'Amazon Q est uniquement disponible dans les pays suivants Régions AWS :
Région USA Est (Virginie du Nord) (us-east-1)
Région USA Ouest (Oregon) (us-west-2)
Région Asie-Pacifique (Mumbai) (ap-south-1)
Région Asie-Pacifique (Singapour) (ap-southeast-1)
Région Asie-Pacifique (Sydney) (ap-southeast-2)
Région Asie-Pacifique (Tokyo) (ap-northeast-1)
Région Canada (Centre) (ca-central-1)
Région Europe (Francfort) (eu-central-1)
Région Europe (Irlande) (eu-west-1)
Région Europe (Londres) (eu-west-2)
Région Europe (Paris) (eu-west-3)
Région Amérique du Sud (Sao Paulo) (sa-east-1)
Vous pouvez interagir avec la fonctionnalité SQL générative d’Amazon Q dans l’éditeur de requêtes Amazon Redshift v2. Il s’agit d’un assistant de codage qui génère des instructions SQL en fonction de vos invites et de votre schéma de base de données. Cet assistant de codage est disponible lorsque vous créez un bloc-notes dans l’éditeur de requêtes v2. Le code SQL généré est destiné à la base de données à laquelle votre bloc-notes est connecté.
Lorsque vous interagissez avec le SQL génératif Amazon Q, posez des questions spécifiques, répétez lorsque vous avez des demandes complexes et vérifiez l'exactitude des réponses.
Lorsque vous fournissez des demandes d’analyse en langage naturel, soyez aussi spécifique que possible pour aider l’assistant de codage à comprendre exactement ce dont vous avez besoin. Au lieu de demander « find top venues that sold the most tickets » (rechercher les sites qui ont vendu le plus de billets), fournissez plus de détails, comme « find names/ids of top three venues that sold the most tickets in 2008 » (rechercher les noms/identifiants des trois sites qui ont vendu le plus de billets en 2008). Utilisez des noms d'objets cohérents et spécifiques dans votre base de données lorsque vous les connaissez. Par exemple, les noms de schéma, de table et de colonne tels que définis dans votre base de données au lieu de faire référence au même objet de différentes manières, ce qui peut semer la confusion chez l'assistant.
Décomposez les demandes complexes en plusieurs instructions simples, plus faciles à interpréter par l’assistant. Posez des questions de suivi de manière itérative pour obtenir une analyse plus détaillée de la part de l’assistant. Par exemple, commencez par demander « which state has the most venues? » (quel État possède le plus de sites ?). Ensuite, en fonction de la réponse, demandez « which is the most popular venue from this state? » (quel est le site le plus populaire de cet État ?).
Passez en revue le code SQL généré avant de l’exécuter, afin de garantir son exactitude. Si la requête SQL générée comporte des erreurs ou ne correspond pas à votre intention, fournissez des instructions à l’assistant sur la façon de la corriger au lieu de reformuler la demande tout entière. Par exemple, s’il manque une clause prédicative sur l’année dans la requête, demandez « Provide venues from year 2008 » (Fournir des sites à partir de l’année 2008).
Soumettez le texte des erreurs que vous recevez lors de l'exécution du code SQL généré sous forme d'invite au code SQL génératif Amazon Q. Il apprend de ces erreurs pour produire un meilleur code SQL.
Ajoutez votre schéma au chemin de recherche SQL pour indiquer qu'il doit être utilisé. Par exemple, ajoutez le schéma tickit lorsque les données se trouvent dans le schéma tickit plutôt que dans le schéma public.
set search_path to '$user', tickit;
Considérations relatives à l'interaction avec le SQL génératif Amazon Q
Tenez compte des points suivants lorsque vous utilisez le panneau de discussion.
L’administrateur de l’éditeur de requêtes v2 de votre compte doit avoir activé la fonctionnalité de chat sur la page Paramètres SQL génératif.
Pour utiliser le SQL génératif Amazon Q, vous devez disposer d'une autorisation
sqlworkbench:GetQSqlRecommendations
dans votre politique IAM, en plus des autres autorisations spécifiées dans la politique AWS gérée pour l'éditeur de requêtes v2. Pour plus d'informations sur les politiques AWS gérées, consultezAccès à l’éditeur de requête v2.Vos questions doivent être rédigées en anglais.
Vos questions doivent se référer à la base de données connectée dans votre cluster ou groupe de travail. Pour éviter les erreurs d’état vide, la base de données doit contenir au moins une table et des données.
Vos questions doivent se référer aux données stockées dans la base de données connectée. Elle ne doivent pas faire référence à un schéma externe. Pour plus d’informations sur les schémas pris en charge, consultez CREATE SCHEMA dans le Guide du développeur de base de données Amazon Redshift.
Toute question générant du code SQL qui modifie la base de données connectée peut entraîner un avertissement.
La technologie d’IA générative est nouvelle et les réponses peuvent comporter des erreurs, parfois appelées hallucinations. Testez et passez en revue tout le code pour détecter des erreurs et des vulnérabilités avant de l’utiliser dans votre environnement ou votre charge de travail.
Vous pouvez améliorer les recommandations en partageant les requêtes SQL exécutées par d’autres utilisateurs dans votre compte. L’administrateur de votre compte peut exécuter les commandes SQL suivantes pour autoriser l’accès à l’historique des requêtes du compte.
GRANT ROLE SYS:MONITOR to "IAMR:
role-name
"; GRANT ROLE SYS:MONITOR to "IAM:user-name
"; GRANT ROLE SYS:MONITOR to "database-username
";Pour plus d’informations sur
SYS:MONITOR
, consultez Rôles définis par le système Amazon Redshift dans le Guide du développeur de base de données Amazon Redshift.Vos données sont sécurisées et privées. Vos données ne sont pas partagées entre les comptes. Vos requêtes, données et schémas de base de données ne sont pas utilisés pour entraîner un modèle de fondation (FM) d’IA générative. Votre entrée est utilisée en tant qu’invites contextuelles pour que le modèle de fondation réponde uniquement à vos requêtes.
Contexte personnalisé
L'administrateur de l'éditeur de requêtes v2 peut spécifier un contexte personnalisé pour adapter le code SQL généré à votre environnement. Un contexte personnalisé fournit des connaissances et des préférences relatives au domaine pour un contrôle précis de la génération de code SQL. Un contexte personnalisé est défini dans un fichier JSON qui peut être chargé par l'administrateur de l'éditeur de requêtes v2 sur Amazon Q Generative SQL.
Les clés JSON utilisées pour personnaliser le code SQL généré pour un entrepôt de données sont les suivantes.
Toutes les références aux tables doivent suivre la notation database.schema.table
en trois parties.
- Ressources
Une ressource indique l'étendue ou la partie d'une ressource de données à laquelle le contexte personnalisé est appliqué.
- ResourceId
Spécifie un identifiant unique de la ressource. Pour un cluster Amazon Redshift, spécifiez le.
cluster id
Pour un groupe de travail Redshift Serverless, spécifiez le.workgroup name
- ResourceType
Valeur valide :
REDSHIFT_WAREHOUSE
.- TablesToInclude
Spécifie un ensemble de tables prises en compte pour la génération SQL. Ce champ est essentiel lorsque vous souhaitez limiter la portée des requêtes SQL à un sous-ensemble défini de tables disponibles. Cela peut aider à optimiser le processus de génération en réduisant les références inutiles aux tables. Vous pouvez associer ce champ à ce champ
TablesToExclude
pour mieux contrôler la génération des requêtes.- TablesToExclude
Spécifie l'ensemble de tables exclues de la génération SQL. Utilisez-le lorsque certaines tables ne sont pas pertinentes ou ne doivent pas être prises en compte dans le processus de génération de requêtes.
- TableAnnotations
Fournit des métadonnées ou des informations supplémentaires sur les tables utilisées. Ces annotations peuvent inclure des descriptions de tables, des notes d'utilisation ou tout autre attribut supplémentaire qui aide Amazon Q Generative SQL à mieux comprendre le contexte ou la structure de la table. Cela est utile pour améliorer la précision de la génération SQL en clarifiant les définitions des tables.
- ColumnsToInclude
Définit les colonnes des tables spécifiées qui sont incluses lors de la génération de requêtes SQL. Ce champ permet à Amazon Q Generative SQL de se concentrer sur les colonnes pertinentes et améliore les performances en réduisant le champ de récupération des données. Cela garantit que le SQL génératif Amazon Q extrait uniquement les données nécessaires au contexte de requête donné.
- ColumnsToExclude
Spécifie les colonnes qui ne sont pas prises en compte lors de la génération SQL. Cela peut être utilisé lorsque certaines colonnes contiennent des données non pertinentes ou redondantes qui ne doivent pas être prises en compte par le SQL génératif Amazon Q. En gérant l'inclusion et l'exclusion des colonnes, vous pouvez affiner les résultats et garder le contrôle sur les données extraites.
- ColumnAnnotations
De même
TableAnnotations
, ce champ fournit des métadonnées ou des annotations spécifiques à des colonnes individuelles. Ces annotations peuvent donner un aperçu des définitions de colonnes ou des instructions de manipulation spéciales. Ces informations sont utiles pour guider le processus de génération SQL et garantir que les colonnes sont utilisées de manière appropriée dans les requêtes.- CuratedQueries
Ensemble d'exemples de questions et réponses prédéfinis, dans lesquels la question est écrite en langage naturel (NLQ) et la réponse est la requête SQL correspondante. Ces exemples aident le SQL génératif Amazon Q à comprendre les types de requêtes qu'il est censé générer. Ils servent de points de référence pour améliorer la précision et la pertinence des sorties SQL génératives d'Amazon Q.
- CustomDocuments
Informations ou conseils supplémentaires fournis au SQL génératif Amazon Q, tels que des définitions, des connaissances spécifiques à un domaine ou des explications. Par exemple, si votre unité commerciale utilise une méthode unique pour calculer une valeur, par exemple « dans une division de fabrication, le total des ventes est égal au prix* au chiffre d'affaires », cela peut être documenté ici. Ces documents améliorent la capacité du SQL génératif d'Amazon Q à interpréter les entrées en langage naturel en fournissant un contexte supplémentaire.
- AdditionalTables
Spécifie toutes les tables supplémentaires qui doivent être prises en compte pour la génération SQL mais qui ne font pas partie des données stockées dans l'entrepôt de données. Cela permet au SQL génératif Amazon Q d'intégrer des sources de données externes dans sa logique de génération de SQL, élargissant ainsi sa capacité à gérer des environnements de données complexes.
- AppendToPrompt
Des instructions ou directives supplémentaires ont été fournies à Amazon Q Generative SQL pour guider le processus de génération de code SQL. Cela peut inclure des directives spécifiques sur la manière de structurer la requête, des préférences pour certaines constructions SQL ou toute autre instruction de haut niveau qui améliore la qualité de la sortie SQL générative d'Amazon Q.
L'exemple de contexte personnalisé suivant indique le format du fichier JSON et définit les éléments suivants :
Définit un contexte personnalisé pour l'entrepôt de données Amazon Redshift pour le cluster.
mycluster
Définit les tables et les colonnes spécifiques à inclure et à exclure afin d'optimiser le processus de génération SQL.
Définit les annotations pour les tables et les colonnes appelées à inclure.
Définit des exemples de requêtes sélectionnées pour le SQL génératif Amazon Q à utiliser.
Définit les documents personnalisés et les garde-fous à utiliser lors de la génération de code SQL.
Définit le DDL pour les tables supplémentaires à utiliser lors de la génération de code SQL.
{ "resources": [ { "ResourceId": "mycluster", "ResourceType": "REDSHIFT_WAREHOUSE", "TablesToInclude": [ "database.schema.table1", "database.schema.table2" ], "TablesToExclude": [ "database.schema.table3", "database.schema.table4" ], "ColumnsToInclude": { "database.schema.table1": [ "col1", "col2" ], "database.schema.table2": [ "col1", "col2" ] }, "ColumnsToExclude": { "database.schema.table5": [ "col1", "col2" ], "database.schema.table6": [ "col1", "col2" ] }, "TableAnnotations": { "database.schema.table1": "table1 refers to Q3 sales", "database.schema.table2": "table2 refers to Q4 sales" }, "ColumnAnnotations": { "database.schema.table1": { "col1": "col1 refers to Q3 sale total", "col2": "col2 refers to sale location" }, "database.schema.table2": { "col1": "col2 refers to Q4 sale total", "col2": "col2 refers to sale location" } }, "CuratedQueries": [ { "Question": "what is the sales data for Q3", "Answer": "SELECT * FROM table1" }, { "Question": "what is the sales data for Q4", "Answer": "SELECT * FROM table2" } ], "CustomDocuments": [ "in manufacturing division total sales is price * revenue", "in research division total sales is price * revenue" ], "AdditionalTables": { "database.schema.table8": "create table database.schema.table8(col1 int)", "database.schema.table9": "create table database.schema.table9(col1 int)" }, "AppendToPrompt": "Apply these guardrails: Queries should never return the secretId field of a user." } ] }