Questo documento fornisce le risposte alle domande più frequenti sul servizio Query e fornisce un elenco di codici di errore visualizzati di frequente durante l’utilizzo del servizio Query. Per domande e risoluzione dei problemi relativi ad altri servizi in Adobe Experience Platform, fai riferimento alla Guida alla risoluzione dei problemi di Experience Platform.
Il seguente elenco di risposte alle domande frequenti è suddiviso nelle seguenti categorie:
Questa sezione include informazioni su prestazioni, limiti e processi.
++ + N. risposta La disattivazione della funzione di completamento automatico non è attualmente supportata dall'editor.
+++
+++Risposta Una possibile causa è la funzione di completamento automatico. La funzione elabora alcuni comandi di metadati che possono rallentare occasionalmente l’editor durante la modifica delle query.
+++
+++Risposta Sì, puoi visualizzare e interagire con tutti i servizi API di Adobe utilizzando Postman (un’applicazione gratuita di terze parti). Guarda il Guida alla configurazione del postman istruzioni dettagliate su come impostare un progetto in Adobe Developer Console e acquisire tutte le credenziali necessarie per l’utilizzo con Postman. Consulta la documentazione ufficiale per indicazioni sull’avvio, l’esecuzione e la condivisione delle raccolte Postman.
+++
+++Risposta Sì, Query Service applica internamente un limite di 50.000 righe a meno che non venga specificato un limite esplicito all’esterno. Consulta le linee guida esecuzione di query interattive per ulteriori dettagli.
+++
++ + N. risposta Non esiste un limite alla dimensione dei dati, ma esiste un limite di timeout della query di 10 minuti da una sessione interattiva. Se la query viene eseguita come CTAS batch, non è applicabile un timeout di 10 minuti. Consulta le linee guida esecuzione di query interattive per ulteriori dettagli.
+++
SELECT * FROM customers LIMIT 0;
++ + N. risposta Query Service ha una funzionalità di scalabilità automatica che garantisce che le query simultanee non abbiano alcun impatto significativo sulle prestazioni del servizio.
+++
Consulta la documentazione per maggiori informazioni come utilizzare le strutture dati nidificate utilizzando l’editor delle query o un client di terze parti.
+++Risposta Per migliorare le prestazioni delle query sui set di dati contenenti array, è necessario esplodere la matrice come Query CTAS in fase di esecuzione, quindi esploralo ulteriormente per le opportunità di migliorare il tempo di elaborazione.
+++
È possibile che una query sia bloccata durante l’elaborazione per diversi motivi. Per determinare la causa esatta è necessaria un'analisi approfondita caso per caso. Contattare l'assistenza clienti di Adobe a questo processo.
Elenco completo dei numeri di telefono dell'assistenza clienti Adobi è disponibile nella pagina della guida di Adobe. In alternativa, puoi trovare la guida online completando i seguenti passaggi:
Viene visualizzato un banner a discesa contenente un Aiuto e supporto sezione . Seleziona Contattaci per aprire Adobe Customer Care Virtual Assistant o selezionare Supporto aziendale per un aiuto dedicato alle grandi organizzazioni.
Consulta la sezione documentazione relativa al blocco anonimo per ulteriori dettagli.
+++Risposta Sì, è possibile modellare le query utilizzando le istruzioni preparate. Le istruzioni preparate possono ottimizzare le prestazioni ed evitare di ripetere ripetutamente l’analisi di una query. Consulta la sezione documentazione preparata delle dichiarazioni per ulteriori dettagli.
+++
Utilizzare il comando GET per recuperare più query. Le informazioni su come effettuare una chiamata all’API sono disponibili nella sezione documentazione di esempio sulle chiamate API.
Dalla risposta, identifica la query da esaminare ed effettua un’altra richiesta di GET utilizzando la relativa id
valore. Le istruzioni complete sono disponibili nella sezione recuperare una query per documentazione ID.
Una risposta corretta restituisce lo stato HTTP 200 e contiene il errors
array. La risposta è stata abbreviata per brevità.
{
"isInsertInto": false,
"request": {
"dbName": "prod:all",
"sql": "SELECT *\nFROM\n accounts\nLIMIT 10\n"
},
"clientId": "8c2455819a624534bb665c43c3759877",
"state": "SUCCESS",
"rowCount": 0,
"errors": [{
'code': '58000',
'message': 'Batch query execution gets : [failed reason ErrorCode: 58000 Batch query execution gets : [Analysis error encountered. Reason: [sessionId: f055dc73-1fbd-4c9c-8645-efa609da0a7b Function [varchar] not defined.]]]',
'errorType': 'USER_ERROR'
}],
"isCTAS": false,
"version": 1,
"id": "343388b0-e0dd-4227-a75b-7fc945ef408a",
}
La Documentazione di riferimento API del servizio query fornisce ulteriori informazioni su tutti gli endpoint disponibili.
L'esempio seguente illustra l'utilizzo di una sintassi CTAS e di un tipo di dati struct:
CREATE TABLE table_name WITH (SCHEMA='schema_name')
AS SELECT '1' as _id,
STRUCT
('2021-02-17T15:39:29.0Z' AS taskActualCompletionDate,
'2020-09-09T21:21:16.0Z' AS taskActualStartDate,
'Consulting' AS taskdescription,
'5f6527c10011e09b89666c52d9a8c564' AS taskguide,
'Stakeholder Consulting Engagement' AS taskname,
'2020-09-09T15:00:00.0Z' AS taskPlannedStartDate,
'2021-02-15T11:00:00.0Z' AS taskPlannedCompletionDate
) AS _workfront ;
+++Risposta SNAPSHOT
può essere utilizzato per leggere in modo incrementale i dati su una tabella basata su un ID snapshot. Questa funzione è ideale per l'utilizzo con carico incrementale pattern di progettazione che elabora solo le informazioni nel set di dati creato o modificato dall’ultima esecuzione del caricamento. Di conseguenza, aumenta l’efficienza dell’elaborazione e può essere utilizzata sia con l’elaborazione in streaming che con quella in batch.
+++
La query include i dati storici, mentre l’interfaccia utente visualizza solo i dati di profilo correnti.
WHERE
fino a quando non si iniziano a vedere alcuni dati.Puoi anche confermare che il set di dati contiene dati utilizzando una piccola query come:
SELECT count(1) FROM myTableName
+++Risposta Questa funzione è attualmente in corso di elaborazione. I dettagli saranno disponibili in note sulla versione e tramite le finestre di dialogo dell’interfaccia utente di Platform una volta che la funzione è pronta per il rilascio.
+++
+++Risposta Query Service fornisce diverse funzioni integrate di supporto SQL per estendere le funzionalità SQL. Consulta il documento per un elenco completo delle Funzioni SQL supportate da Query Service.
+++
È inoltre necessario consultare la documentazione per informazioni su come eseguire query pianificate nell’interfaccia utente e API.
Di seguito è riportato un elenco di considerazioni per le query pianificate quando si utilizza il Query Editor. Non si applicano al Query Service API:
È possibile aggiungere una pianificazione solo a una query già creata, salvata ed eseguita.
You impossibile aggiungi una pianificazione a una query con parametri.
Query pianificate impossibile contiene un blocco anonimo.
È possibile pianificare solo uno modello di query utilizzando l’interfaccia utente. Se desideri aggiungere ulteriori pianificazioni a un modello di query, dovrai utilizzare l’API . Se una pianificazione è già stata aggiunta utilizzando l’API , non potrai aggiungere altre pianificazioni utilizzando l’interfaccia utente .
+++Risposta "Limite sessione raggiunto" significa che è stato raggiunto il numero massimo di sessioni del servizio query consentite per la tua organizzazione. Connettiti all’amministratore Adobe Experience Platform della tua organizzazione.
+++
+++Risposta Query Service non elimina mai la cronologia delle query. Ciò significa che qualsiasi query che fa riferimento a un set di dati eliminato restituirà "Nessun set di dati valido" come risultato.
+++
SELECT * FROM <table> WHERE 1=0
Ad esempio, puoi creare una tabella temporanea:
CREATE temp TABLE temp_dataset AS
SELECT *
FROM actual_dataset
WHERE 1 = 0;
Quindi puoi utilizzare la tabella temporanea come segue:
INSERT INTO temp_dataset
SELECT a._company AS _company,
a._id AS _id,
a.timestamp AS timestamp
FROM actual_dataset a
WHERE timestamp >= TO_TIMESTAMP('2021-01-21 12:00:00')
AND timestamp < TO_TIMESTAMP('2021-01-21 13:00:00')
LIMIT 100;
2021-12-22T19:52:05Z
Query Service supporta funzioni SQL integrate per convertire una data marca temporale in e dal formato UTC. Entrambi i to_utc_timestamp()
e from_utc_timestamp()
i metodi richiedono due parametri: marca temporale e fuso orario.
Parametro | Descrizione |
---|---|
Marca temporale | La marca temporale può essere scritta in formato UTC o in formato semplice {year-month-day} formato. Se non viene fornito alcun orario, il valore predefinito è mezzanotte della mattina del giorno specificato. |
Fuso orario | Il fuso orario viene scritto in un {continent/city}) formato. Deve essere uno dei codici di fuso orario riconosciuti come trovato nella database TZ di dominio pubblico. |
La to_utc_timestamp()
interpreta i parametri specificati e li converte alla marca temporale del fuso orario locale in formato UTC. Ad esempio, il fuso orario a Seoul, Corea del Sud, è UTC/GMT +9 ore. Fornendo una marca temporale di sola data, il metodo utilizza un valore predefinito di mezzanotte della mattina. La marca temporale e il fuso orario vengono convertiti in formato UTC dall’ora di tale regione a una marca temporale UTC della propria area locale.
SELECT to_utc_timestamp('2021-08-31', 'Asia/Seoul');
La query restituisce una marca temporale nell’ora locale dell’utente. In questo caso, alle 15.00 del giorno precedente, mentre Seoul è in attesa di 9 ore.
2021-08-30 15:00:00
Un altro esempio, se la marca temporale è stata 2021-07-14 12:40:00.0
per Asia/Seoul
fuso orario, la marca temporale UTC restituita sarà 2021-07-14 03:40:00.0
L’output della console fornito nell’interfaccia utente del servizio query è un formato più leggibile dall’utente:
8/30/2021, 3:00 PM
La from_utc_timestamp()
interpreta i parametri indicati dalla marca temporale del fuso orario locale e fornisce la marca temporale equivalente della regione desiderata in formato UTC. Nell’esempio seguente, l’ora è 2:40 nel fuso orario locale dell’utente. Il fuso orario di Seoul passato come variabile è nove ore prima del fuso orario locale.
SELECT from_utc_timestamp('2021-08-31 14:40:00.0', 'Asia/Seoul');
La query restituisce una marca temporale in formato UTC per il fuso orario passato come parametro. Il risultato è nove ore prima del fuso orario in cui è stata eseguita la query.
8/31/2021, 11:40 PM
Stringa data deve nel formato yyyy-mm-ddTHH24:MM:SS
.
Di seguito è riportato un esempio di utilizzo del filtro timestamp :
SELECT a._company AS _company,
a._id AS _id,
a.timestamp AS timestamp
FROM dataset a
WHERE timestamp >= To_timestamp('2021-01-21 12:00:00')
AND timestamp < To_timestamp('2021-01-21 13:00:00')
CAST
per convertire i timestamp nelle query SQL?CAST
per convertire una marca temporale, è necessario includere sia la data e tempo.Ad esempio, se manca il componente tempo , come illustrato di seguito, si verifica un errore:
SELECT * FROM ABC
WHERE timestamp = CAST('07-29-2021' AS timestamp)
L'uso corretto del CAST
l’operatore è mostrato di seguito:
SELECT * FROM ABC
WHERE timestamp = CAST('07-29-2021 00:00:00' AS timestamp)
+++Risposta Non è possibile utilizzare i caratteri jolly per ottenere tutti i dati dalle righe, in quanto Query Service deve essere trattato come un columnar-store piuttosto che un sistema di archiviazione tradizionale basato su righe.
+++
NOT IN
nella query SQL?NOT IN
viene spesso utilizzato per recuperare righe che non si trovano in un'altra tabella o istruzione SQL. Questo operatore può rallentare le prestazioni e può restituire risultati imprevisti se le colonne confrontate accettano NOT NULL
oppure hai un gran numero di documenti.Invece di utilizzare NOT IN
, puoi utilizzare NOT EXISTS
o LEFT OUTER JOIN
.
Ad esempio, se sono state create le tabelle seguenti:
CREATE TABLE T1 (ID INT)
CREATE TABLE T2 (ID INT)
INSERT INTO T1 VALUES (1)
INSERT INTO T1 VALUES (2)
INSERT INTO T1 VALUES (3)
INSERT INTO T2 VALUES (1)
INSERT INTO T2 VALUES (2)
Se utilizzi NOT EXISTS
è possibile replicare utilizzando NOT IN
utilizzando la seguente query:
SELECT ID FROM T1
WHERE NOT EXISTS
(SELECT ID FROM T2 WHERE T1.ID = T2.ID)
In alternativa, se utilizzi il LEFT OUTER JOIN
è possibile replicare utilizzando NOT IN
utilizzando la seguente query:
SELECT T1.ID FROM T1
LEFT OUTER JOIN T2 ON T1.ID = T2.ID
WHERE T2.ID IS NULL
Questa sezione fornisce informazioni sull’esportazione di dati e limiti.
++ + Risposta Sì. I dati possono essere estratti da Query Service e c'è anche l'opzione per memorizzare i risultati in formato CSV tramite un comando SQL.
Esistono due modi per salvare i risultati di una query quando si utilizza un client PSQL. È possibile utilizzare COPY TO
creare un'istruzione utilizzando il formato seguente:
SELECT column1, column2
FROM <table_name>
\g <table_name>.out
Orientamenti sull'uso COPY TO
command può essere trovato nella documentazione di riferimento della sintassi SQL.
+++
++ + N. risposta Al momento non è disponibile alcuna funzione per l’estrazione dei dati acquisiti.
+++
Questa sezione include informazioni sull'utilizzo di strumenti di terze parti come PSQL e Power BI.
+++Risposta Sì, è possibile collegare più client desktop di terze parti a Query Service. Consulta la documentazione per informazioni complete sui client disponibili e su come collegarli al servizio Query.
+++
+++Risposta Sì, i client desktop di terze parti possono essere collegati a Query Service tramite una configurazione unica di credenziali non in scadenza. Le credenziali non in scadenza possono essere generate da un utente autorizzato e le riceveranno in un file JSON scaricato sul computer locale. Completo istruzioni su come creare e scaricare credenziali non in scadenza si trova nella documentazione.
+++
+++Risposta Qualsiasi editor SQL di terze parti PSQL o Postgres È possibile collegare l’editor del servizio query al client. Consulta la documentazione per connessione dei client a Query Service per un elenco delle istruzioni disponibili.
+++
+++Risposta Sì, è possibile collegare Power BI a Query Service. Consulta la documentazione per istruzioni sulla connessione dell’app desktop Power BI al servizio query.
+++
Se desideri migliorare i tempi di risposta per le dashboard, implementa un server di Business Intelligence (BI) come livello di memorizzazione in cache tra gli strumenti Query Service e BI. In genere, la maggior parte degli strumenti BI presenta un’offerta aggiuntiva per un server.
Lo scopo di aggiungere il livello del server cache è quello di memorizzare in cache i dati da Query Service e utilizzare lo stesso per le dashboard per velocizzare la risposta. Ciò è possibile in quanto i risultati per le query eseguite vengono memorizzati nella cache del server BI ogni giorno. Il server di caching distribuisce quindi questi risultati per qualsiasi utente con la stessa query per ridurre la latenza. Fare riferimento alla documentazione dell'utilità o dello strumento di terze parti utilizzato per i chiarimenti su questa configurazione.
+++Risposta No, la connettività pgAdmin non è supportata. A elenco dei client di terze parti disponibili e istruzioni su come collegarli a Query Service si trova nella documentazione.
+++
Nella tabella seguente sono riportati i codici di errore PSQL e le relative possibili cause.
Codice di errore | Stato connessione | Descrizione | Possibile causa |
---|---|---|---|
08P01 | N/D | Tipo di messaggio non supportato | Tipo di messaggio non supportato |
28P01 | Avvio - autenticazione | Password non valida | Token di autenticazione non valido |
28000 | Avvio - autenticazione | Tipo di autorizzazione non valido | Tipo di autorizzazione non valido. Deve essere AuthenticationCleartextPassword . |
42P12 | Avvio - autenticazione | Nessuna tabella trovata | Non sono state trovate tabelle da utilizzare |
42601 | Query | Errore di sintassi | Errore di comando o sintassi non valido |
42P01 | Query | Tabella non trovata | Impossibile trovare la tabella specificata nella query |
42P07 | Query | La tabella esiste | Esiste già una tabella con lo stesso nome (CREATE TABLE) |
53400 | Query | LIMITE supera il valore massimo | L'utente ha specificato una clausola LIMIT superiore a 100.000 |
53400 | Query | Timeout dell'istruzione | La dichiarazione in diretta ha richiesto più di 10 minuti al massimo |
58000 | Query | Errore di sistema | Errore interno del sistema |
0A000 | Query/Comando | Non supportati | Funzionalità/funzionalità nella query/comando non supportata |
42501 | Query DI TABELLA A DISCESA | Tabella di eliminazione non creata dal servizio query | La tabella da eliminare non è stata creata dal servizio query utilizzando CREATE TABLE dichiarazione |
42501 | Query DI TABELLA A DISCESA | Tabella non creata dall'utente autenticato | La tabella da eliminare non è stata creata dall'utente attualmente connesso |
42P01 | Query DI TABELLA A DISCESA | Tabella non trovata | Impossibile trovare la tabella specificata nella query |
42P12 | Query DI TABELLA A DISCESA | Nessuna tabella trovata per dbName : controlla dbName |
Impossibile trovare tabelle nel database corrente |
history_meta()
viene utilizzato per accedere a uno snapshot da un set di dati. In precedenza, se si eseguiva una query su un set di dati vuoto in Azure Data Lake Storage (ADLS), si riceveva un codice di errore 58000 che indica che il set di dati non esiste. Di seguito è riportato un esempio del vecchio errore di sistema.ErrorCode: 58000 Internal System Error [Invalid table your_table_name. historyMeta can be used on datalake tables only.]
Errore. Nessun valore restituito per la query. Questo comportamento è stato corretto per restituire il seguente messaggio:
Query complete in {timeframe}. 0 rows returned.
La tabella seguente fornisce i codici di errore HTTP e le relative possibili cause.
Codice di stato HTTP | Descrizione | Possibili cause |
---|---|---|
400 | Richiesta errata | Query non valida |
401 | Autenticazione non riuscita | Token di autenticazione non valido |
500 | Errore interno del server | Errore interno del sistema |