Interazione con SQL generativo Amazon Q - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuovi Python a UDFs partire dal 1° novembre 2025. Se vuoi usare Python UDFs, crea la UDFs data precedente a quella data. Python esistente UDFs continuerà a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

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 SQL generativo 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 orientali (Ohio) (us-east-2)

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

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

  • Regione Asia Pacifico (Seoul) (ap-northeast-2)

  • 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)

Per informazioni su dove vengono elaborati i dati, consulta Inferenza tra Regioni in Amazon Q Developer nella Guida per l’utente di Amazon Q.

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 SQL generativo Amazon Q, poni domande specifiche, esegui l’iterazione in caso di richieste complesse e verifichi 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 i migliori locali che hanno venduto il maggior numero di biglietti», fornisci maggiori dettagli, ad esempio «trova i tre locali che hanno venduto il maggior numero names/ids di biglietti nel 2008". Usa nomi coerenti e specifici per gli oggetti nel database quando li conosci, ad esempio i nomi di schema, tabella e colonna definiti nel database, invece di fare riferimento allo stesso oggetto in modi diversi, 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 a SQL generativo Amazon Q. Impara da questi errori per produrre SQL migliore.

Aggiungi lo 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 SQL generativo 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 di Query Editor V2 può specificare un contesto personalizzato per adattare l’SQL generato all’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 di Query Editor V2 in SQL generativo 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.

Resources

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

ResourceId

Specifica un identificatore univoco della risorsa. Per un cluster Amazon Redshift, specifica cluster id. Per un gruppo di lavoro Redshift serverless, specifica workgroup name.

ResourceType

Valore valido: REDSHIFT_WAREHOUSE.

TablesToInclude

Specifica un insieme di tabelle che sono considerate per la generazione di SQL. Questo campo è fondamentale se desideri limitare l’ambito delle query SQL a un sottoinsieme definito di tabelle disponibili. Consente di ottimizzare il processo di generazione riducendo i riferimenti a tabelle non necessari. Puoi associare questo campo con TablesToExclude per un controllo più preciso sulla generazione delle query.

TablesToExclude

Specifica l’insieme 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 per l’utilizzo o qualsiasi attributo aggiuntivo che aiuti SQL generativo Amazon Q a comprendere meglio il contesto o la struttura della tabella. Ciò è utile per migliorare l’accuratezza della generazione di SQL grazie a una maggiore chiarezza delle definizioni delle tabelle.

ColumnsToInclude

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

ColumnsToExclude

Specifica le colonne che vengono omesse dalla considerazione nella generazione di SQL. Ciò può essere usato quando alcune colonne contengono dati irrilevanti o ridondanti che non devono essere considerati da SQL generativo Amazon Q. Gestendo l’inclusione e l’esclusione delle colonne, puoi perfezionare i risultati e mantenere il controllo sui dati recuperati.

ColumnAnnotations

Analogamente a TableAnnotations, questo campo fornisce metadati o annotazioni specifici per le singole colonne. Queste annotazioni possono offrire informazioni sulle definizioni delle colonne o sulle istruzioni speciali per la gestione. Queste informazioni sono utili per gestire il processo di generazione di 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 SQL generativo 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 di SQL generativo Amazon Q.

CustomDocuments

Informazioni o suggerimenti aggiuntivi forniti a SQL generativo Amazon Q, quali definizioni, conoscenze specifiche del dominio o spiegazioni. Ad esempio, se l’unità aziendale utilizza un metodo unico per calcolare un valore, del tipo “nella divisione di produzione le vendite totali sono uguali a prezzo * ricavo”, puoi documentarlo qui. Questi documenti migliorano la capacità di SQL generativo Amazon Q di interpretare gli input in linguaggio naturale fornendo un contesto aggiuntivo.

AdditionalTables

Specifica eventuali tabelle aggiuntive che devono essere prese in considerazione per la generazione di SQL ma che non fanno parte dei dati archiviati nel data warehouse. Ciò consente a SQL generativo Amazon Q di integrare origini dati esterne nella sua logica di generazione di SQL, ampliando la sua capacità di gestire ambienti di dati complessi.

AppendToPrompt

Istruzioni o linee guida aggiuntive fornite a SQL generativo Amazon Q per gestire il processo di generazione SQL. Ciò può includere direttive specifiche su come strutturare la query, le preferenze per determinati costrutti SQL o qualsiasi altra istruzione di alto livello che migliori la qualità dell’output SQL generativo 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 il cluster mycluster.

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

  • Definisce le annotazioni per le tabelle e le colonne evidenziate da includere.

  • Definisce esempi di query curate utilizzabili da SQL generativo Amazon Q.

  • 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." } ] }