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 Amazon Q Generative SQL
Note
Le SQL support génératif Amazon Q n'est disponible que dans les cas 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 Europe (Francfort) (eu-central-1)
Région Europe (Paris) (eu-west-3)
Région Europe (Irlande) (eu-west-1)
Vous pouvez interagir avec la SQL fonctionnalité 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 SQL des instructions en fonction de vos instructions et du 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 Amazon Q GenerativeSQL, 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. Comme 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 ?).
Vérifiez le fichier généré SQL avant de l'exécuter pour vous assurer de son exactitude. Si la SQL requête 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 dans son intégralité. 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).
Envoyez le texte des erreurs que vous recevez lors de l'exécution de Generated SQL sous forme d'invite au générateur SQL Amazon Q. Il apprend de ces erreurs pour mieux produireSQL.
Ajoutez votre schéma au chemin SQL de recherche 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 à prendre en compte lors de l'interaction avec Amazon Q Generative SQL
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 des SQLparamètres génératifs.
Pour utiliser Amazon Q generativeSQL, vous avez besoin d'une autorisation
sqlworkbench:GetQSqlRecommendations
dans votre IAM politique, 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 entraînant une modification SQL de 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 SQL requêtes exécutées par d'autres utilisateurs dans votre compte. L'administrateur de votre compte peut exécuter les SQL commandes 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 contexte généré SQL à votre environnement. Un contexte personnalisé fournit des connaissances et des préférences relatives au domaine afin de permettre un contrôle SQL précis de la génération. Un contexte personnalisé est défini dans un JSON fichier qui peut être chargé par l'administrateur de l'éditeur de requêtes v2 sur Amazon Q GenerativeSQL.
Les JSON clés utilisées pour personnaliser les données générées SQL 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 dont la SQL génération est prise en compte. Ce champ est essentiel lorsque vous souhaitez limiter la portée des SQL requêtes à 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 SQL génération. 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 tableaux, des notes d'utilisation ou tout autre attribut permettant à Amazon Q Generative de SQL mieux comprendre le contexte ou la structure du tableau. Cela est utile pour améliorer la précision de la SQL génération 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 SQL requêtes. Ce champ permet à Amazon Q de SQL se concentrer de manière générative sur les colonnes pertinentes et d'améliorer les performances en réduisant le champ de récupération des données. Cela garantit que le générateur Amazon Q extrait SQL 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 SQL génération. Cela peut être utilisé lorsque certaines colonnes contiennent des données non pertinentes ou redondantes qui ne doivent pas être prises en compte par Amazon Q GenerativeSQL. 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 SQL génération 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 SQL requête correspondante. Ces exemples aident Amazon Q Generative à SQL 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 SQL résultats génératifs d'Amazon Q.
- CustomDocuments
Informations ou conseils supplémentaires fournis à Amazon Q GenerativeSQL, 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 SQL capacité générative 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 SQL génération mais qui ne font pas partie des données stockées dans l'entrepôt de données. Cela permet à l'Amazon Q Generative SQL d'intégrer des sources de données externes dans sa logique de SQL génération, é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 SQL de génération. Cela peut inclure des directives spécifiques sur la manière de structurer la requête, des préférences pour certaines SQL constructions ou toute autre instruction de haut niveau qui améliore la qualité de la SQL sortie générative d'Amazon Q.
L'exemple de contexte personnalisé suivant indique le format du JSON fichier 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 SQL génération.
Définit les annotations pour les tables et les colonnes appelées à inclure.
Définit des exemples de requêtes sélectionnées à utiliser par Amazon Q GenerativeSQL.
Définit les documents personnalisés et les garde-corps à utiliser lors de la génération. SQL
Définit DDL les quatre tables supplémentaires à utiliser lors de la générationSQL.
{ "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." } ] }