Interazione con l'SQL generativo di Amazon Q - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Interazione con l'SQL generativo di Amazon Q

Nota

Il supporto SQL generativo di Amazon Q è disponibile solo nei seguenti paesi: Regioni AWS

  • Regione Stati Uniti orientali (Virginia settentrionale) (us-east-1)

  • Regione Stati Uniti occidentali (Oregon) (us-west-2)

  • Regione Asia Pacifico (Mumbai) (ap-south-1)

  • Regione Asia Pacifico (Singapore) (ap-southeast-1)

  • Regione Asia Pacifico (Sydney) (ap-southeast-2)

  • Regione Asia Pacifico (Tokyo) (ap-northeast-1)

  • Regione Canada (Centrale) (ca-central-1)

  • Regione Europa (Francoforte) (eu-central-1)

  • Regione Europa (Irlanda) (eu-west-1)

  • Regione Europa (Londra) (eu-west-2)

  • Regione Europa (Parigi) (eu-west-3)

  • Regione Sud America (San Paolo) (sa-east-1)

Puoi interagire con la funzionalità SQL generativo di Amazon Q nell'Editor di query Amazon Redshift v2. Si tratta di un assistente di codifica che genera istruzioni SQL in base alle istruzioni e allo schema del database, disponibile per la creazione di un notebook nell'editor di query v2. L'SQL generato è per il database a cui è collegato il notebook.

Quando interagisci con l'SQL generativo di Amazon Q, poni domande specifiche, ripeti quando hai richieste complesse e verifica l'accuratezza delle risposte.

Quando fornisci richieste di analisi in linguaggio naturale, sii il più specifico possibile per aiutare l'assistente di codifica a capire esattamente di cosa hai bisogno. Invece di chiedere "trova le sedi principali che hanno venduto il maggior numero di biglietti", fornisci maggiori dettagli, ad esempio "trova i nomi/gli ID delle tre sedi che hanno venduto il maggior numero di biglietti nel 2008". Usa nomi coerenti e specifici degli oggetti nel tuo database quando li conosci. Ad esempio, i nomi di schema, tabella e colonna definiti nel database, anziché fare riferimento allo stesso oggetto in modi diversi, il che può confondere l'assistente.

Suddividi le richieste complesse in più istruzioni semplici che sono più facili da interpretare per l'assistente. Poni domande di follow-up in modo iterativo per ottenere un'analisi più dettagliata dall'assistente. Ad esempio, per prima cosa chiedi in quale stato ci sono più sedi. Quindi, in base alla risposta, chiedi qual è la sede più popolare di questo stato.

Esamina l'SQL generato prima di eseguirlo per verificarne l'accuratezza. Se la query SQL generata contiene errori o non corrisponde al tuo intento, fornisci all'assistente le istruzioni per correggerla invece di riformulare l'intera richiesta. Ad esempio, se nella query manca una clausola di predicato relativa all'anno, chiedi di fornire le sedi a partire dal 2008.

Invia il testo degli errori che ricevi dall'esecuzione di SQL generato come prompt all'SQL generativo di Amazon Q. Impara da questi errori per produrre un SQL migliore.

Aggiungi il tuo schema al percorso di ricerca SQL per segnalare che lo schema deve essere usato. Ad esempio, aggiungi lo schema tickit quando i dati si trovano nello schema tickit anziché nello schema pubblico.

set search_path to '$user', tickit;

Considerazioni sull'interazione con l'SQL generativo di Amazon Q

Considera le seguenti indicazioni quando utilizzi il pannello di chat.

  • L'amministratore dell'editor di query v2 del tuo account deve aver attivato la funzionalità di chat nella pagina Impostazioni di SQL generativo.

  • Per utilizzare l'SQL generativo di Amazon Q, è necessaria l'autorizzazione sqlworkbench:GetQSqlRecommendations nella policy IAM, oltre alle altre autorizzazioni specificate nella policy AWS gestita per l'editor di query v2. Per ulteriori informazioni sulle politiche AWS gestite, consulta. Accesso all'editor di query v2

  • Le domande devono essere scritte in inglese.

  • Le domande devono fare riferimento al database connesso nel cluster o nel gruppo di lavoro. Per evitare errori di stato vuoto, nel database devono essere presenti almeno una tabella e alcuni dati.

  • Le domande devono riferirsi ai dati archiviati nel database connesso. Non è possibile fare riferimento a uno schema esterno. Per ulteriori informazioni sugli schemi supportati, consulta Create schema nella Guida per gli sviluppatori di database di Amazon Redshift.

  • Qualsiasi domanda che restituisca un codice SQL che modifichi il database connesso può generare un avviso.

  • La tecnologia di IA generativa è nuova e nelle risposte possono esserci errori, a volte chiamati allucinazioni. Testa e rivedi tutto il codice per individuare errori e vulnerabilità prima di utilizzarlo nell'ambiente o nel carico di lavoro.

  • Puoi migliorare i suggerimenti condividendo nel tuo account le query SQL eseguite da altri utenti. L'amministratore dell'account può eseguire i seguenti comandi SQL per consentire l'accesso alla cronologia delle query dell'account.

    GRANT ROLE SYS:MONITOR to "IAMR:role-name"; GRANT ROLE SYS:MONITOR to "IAM:user-name"; GRANT ROLE SYS:MONITOR to "database-username";

    Per ulteriori informazioni su SYS:MONITOR, consulta Ruoli definiti dal sistema di Amazon Redshift nella Guida per gli sviluppatori di database di Amazon Redshift.

  • I tuoi dati sono sicuri e privati. I tuoi dati non vengono condivisi tra account. Le query, i dati e gli schemi di database non vengono utilizzati per addestrare un modello di fondazione (FM) di IA generativa. L'input viene utilizzato come prompt contestuale nel modello di fondazione solo per rispondere alle tue query.

Contesto personalizzato

L'amministratore dell'editor di query v2 può specificare un contesto personalizzato per adattare l'SQL generato al tuo ambiente. Un contesto personalizzato fornisce conoscenze e preferenze del dominio per fornire un controllo granulare sulla generazione di SQL. Un contesto personalizzato è definito in un file JSON che può essere caricato dall'amministratore dell'editor di query v2 su SQL generativo di Amazon Q.

Le chiavi JSON utilizzate per personalizzare l'SQL generato per un data warehouse sono le seguenti.

Tutti i riferimenti alle tabelle devono seguire la notazione in tre parti. database.schema.table

Risorse

Una risorsa specifica l'ambito o la parte di una risorsa di dati a cui viene applicato il contesto personalizzato.

ResourceId

Speciifica un identificatore univoco della risorsa. Per un cluster Amazon Redshift, specifica il. cluster id Per un gruppo di lavoro Redshift Serverless, specificare. workgroup name

ResourceType

Valore valido: REDSHIFT_WAREHOUSE.

TablesToInclude

Speciifica un set di tabelle che vengono prese in considerazione per la generazione di SQL. Questo campo è fondamentale quando si desidera limitare l'ambito delle query SQL a un sottoinsieme definito di tabelle disponibili. Può aiutare a ottimizzare il processo di generazione riducendo i riferimenti alle tabelle non necessari. È possibile associare questo campo TablesToExclude per un controllo più preciso sulla generazione delle query.

TablesToExclude

Speciifica il set di tabelle che sono escluse dalla generazione di SQL. Usalo quando determinate tabelle sono irrilevanti o non devono essere considerate nel processo di generazione delle query.

TableAnnotations

Fornisce metadati o informazioni supplementari sulle tabelle in uso. Queste annotazioni possono includere descrizioni di tabelle, note di utilizzo o qualsiasi attributo aggiuntivo che aiuti Amazon Q generative SQL a comprendere meglio il contesto o la struttura della tabella. Ciò è utile per migliorare l'accuratezza della generazione SQL aggiungendo chiarezza alle definizioni delle tabelle.

ColumnsToInclude

Definisce quali colonne delle tabelle specificate sono incluse nella generazione di query SQL. Questo campo aiuta l'SQL generativo di Amazon Q a concentrarsi sulle colonne pertinenti e migliora le prestazioni restringendo l'ambito del recupero dei dati. Garantisce che l'SQL generativo di Amazon Q estragga solo i dati necessari per il contesto di query specificato.

ColumnsToExclude

Speciifica le colonne che non vengono prese in considerazione nella generazione di SQL. Questo può essere usato quando alcune colonne contengono dati irrilevanti o ridondanti che non devono essere considerati dall'SQL generativo di Amazon Q. Gestendo l'inclusione e l'esclusione delle colonne, puoi perfezionare i risultati e mantenere il controllo sui dati recuperati.

ColumnAnnotations

AnalogamenteTableAnnotations, questo campo fornisce metadati o annotazioni specifici per le singole colonne. Queste annotazioni possono offrire informazioni sulle definizioni delle colonne o su istruzioni di gestione speciali. Queste informazioni sono utili per guidare il processo di generazione SQL e garantire che le colonne vengano utilizzate in modo appropriato nelle query.

CuratedQueries

Una serie di esempi di domande e risposte predefiniti, in cui la domanda è scritta in linguaggio naturale (NLQ) e la risposta è la query SQL corrispondente. Questi esempi aiutano l'SQL generativo di Amazon Q a comprendere i tipi di query che dovrebbe generare. Servono come punti di riferimento per migliorare l'accuratezza e la pertinenza degli output SQL generativi di Amazon Q.

CustomDocuments

Informazioni o suggerimenti aggiuntivi forniti all'SQL generativo di Amazon Q, come definizioni, conoscenze specifiche del dominio o spiegazioni. Ad esempio, se la tua unità aziendale utilizza un metodo unico per calcolare un valore, ad esempio «nella divisione di produzione le vendite totali sono prezzo* ricavi», puoi documentarlo qui. Questi documenti migliorano la capacità SQL generativa di Amazon Q di interpretare gli input del linguaggio naturale fornendo un contesto aggiuntivo.

AdditionalTables

Speciifica eventuali tabelle aggiuntive da prendere in considerazione per la generazione di SQL ma che non fanno parte dei dati archiviati nel data warehouse. Ciò consente all'SQL generativo di Amazon Q di integrare fonti di dati esterne nella sua logica di generazione SQL, ampliando la sua capacità di gestire ambienti di dati complessi.

AppendToPrompt

Istruzioni o linee guida aggiuntive fornite all'SQL generativo di Amazon Q per guidare il processo di generazione SQL. Ciò può includere direttive specifiche su come strutturare la query, preferenze per determinati costrutti SQL o qualsiasi altra istruzione di alto livello che migliori la qualità dell'output SQL generativo di Amazon Q.

Il seguente esempio di contesto personalizzato mostra il formato del file JSON e definisce quanto segue:

  • Definisce un contesto personalizzato per il data warehouse Amazon Redshift per cluster. mycluster

  • Definisce tabelle e colonne specifiche da includere ed escludere per ottimizzare il processo di generazione SQL.

  • Definisce le annotazioni per le tabelle e le colonne richiamate a includere.

  • Definisce esempi di query curate per l'SQL generativo di Amazon Q da utilizzare.

  • Definisce documenti e guardrail personalizzati da utilizzare durante la generazione di SQL.

  • Definisce il DDL per le tabelle aggiuntive da utilizzare durante la generazione di 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." } ] }