Questo documento fornisce le risposte alle domande più frequenti su Query Service e fornisce un elenco dei codici di errore più comuni durante l’utilizzo di Query Service. Per domande e risoluzione dei problemi relativi ad altri servizi in Adobe Experience Platform, consulta 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.
+++Risposta n. 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 occasionalmente rallentare l’editor durante la modifica delle query.
+++
+++Risposta Sì, puoi visualizzare e interagire con tutti i servizi API di Adobe utilizzando Postman (applicazione gratuita di terze parti). Osserva Postman guida alla configurazione per 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 istruzioni su avvio, esecuzione e condivisione Postman raccolte.
+++
+++Risposta Sì, Query Service applica internamente un limite di 50.000 righe, a meno che non venga specificato esternamente un limite esplicito. Consulta la guida su esecuzione di query interattive per ulteriori dettagli.
+++
+++Risposta Nelle query batch, l’aggiornamento di una riga all’interno del set di dati non è supportato.
+++
+++Risposta n. Non vi è alcun 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 la guida su esecuzione di query interattive per ulteriori dettagli.
+++
SELECT * FROM customers LIMIT 0;
+++Risposta n. Query Service dispone di una funzionalità di scalabilità automatica che garantisce che le query simultanee non abbiano alcun impatto rilevante sulle prestazioni del servizio.
+++
+++Risposta Esistono alcune parole chiave riservate che non possono essere utilizzate come nome di colonna, ad esempio, ORDER
, GROUP BY
, WHERE
, DISTINCT
. Se desideri utilizzare queste parole chiave, devi eseguire l’escape di queste colonne.
+++
Consulta la documentazione per istruzioni complete su come utilizzare le strutture di dati nidificate utilizzando Query Editor o un client di terze parti.
+++Risposta Per migliorare le prestazioni delle query su set di dati contenenti array, è necessario esplodere l’array as a Query CTAS in fase di esecuzione, quindi esplorala ulteriormente per scoprire le opportunità di migliorare il tempo di elaborazione.
+++
Un’interrogazione può essere bloccata durante l’elaborazione per diversi motivi. Per determinare la causa esatta è necessaria un’analisi approfondita caso per caso. Contatta l’assistenza clienti Adobe ad essere questo processo.
Un elenco completo dei numeri di telefono dell’assistenza clienti Adobe è disponibile nella guida di Adobe. In alternativa, è possibile trovare la guida online completando i passaggi seguenti:
Viene visualizzato un banner a discesa contenente Guida e supporto sezione. Seleziona Contattaci per aprire l’Assistente virtuale dell’Assistenza clienti di Adobe, oppure seleziona Supporto Enterprise per assistenza dedicata alle grandi organizzazioni.
Consulta la documentazione di blocco anonimo per ulteriori dettagli.
+++Risposta Sì, è possibile modellare le query tramite l'utilizzo di istruzioni preparate. Le istruzioni preparate possono ottimizzare le prestazioni ed evitare di rianalizzare ripetutamente una query. Consulta la documentazione delle dichiarazioni preparate per ulteriori dettagli.
+++
Utilizzare il comando GET per recuperare più query. Le informazioni su come effettuare una chiamata all'API sono disponibili nella sezione Esempio di documentazione sulle chiamate API.
Dalla risposta, identifica la query da esaminare e invia un’altra richiesta di GET utilizzando il relativo id
valore. Le istruzioni complete sono reperibili nella sezione recuperare una query per documentazione ID.
Una risposta corretta restituisce lo stato HTTP 200 e contiene errors
array. La risposta è stata ridotta 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",
}
Il Documentazione di riferimento API di Query Service 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 ;
+++Rispondi SNAPSHOT
può essere utilizzata per leggere in modo incrementale i dati su una tabella basata su un ID snapshot. Questa funzione è ideale per l'utilizzo con carico incrementale modello di progettazione che elabora solo le informazioni nel set di dati creato o modificato dopo l’ultima esecuzione del caricamento. Di conseguenza, aumenta l’efficienza di elaborazione e può essere utilizzato sia con l’elaborazione dei dati in streaming che in batch.
+++
La query include dati storici, mentre l’interfaccia utente visualizza solo i dati di profilo correnti.
WHERE
finché non si iniziano a visualizzare alcuni dati.Puoi anche verificare che il set di dati contenga dati utilizzando una piccola query come:
SELECT count(1) FROM myTableName
+++Risposta Questa funzione è attualmente in corso di elaborazione. I dettagli saranno resi disponibili in note sulla versione e nelle finestre di dialogo dell’interfaccia utente di Platform quando la funzione è pronta per il rilascio.
+++
+++Answer Query Service fornisce diverse funzioni di assistenza SQL integrate per estendere le funzionalità SQL. Consulta il documento per un elenco completo Funzioni SQL supportate da Query Service.
+++
+++Risposta non ancora disponibile, non tutte open-source Spark SQL Le funzioni sono state testate sui dati del data lake. Una volta testate e confermate, verranno aggiunte all’elenco delle supportate. Fare riferimento al elenco di supportate Spark SQL funzioni per verificare la presenza di una funzione specifica.
+++
+++Risposta A causa di considerazioni sulla sicurezza dei dati, la definizione personalizzata di FDU non è consentita.
+++
Consulta anche la documentazione per istruzioni su come eseguire query pianificate nell’interfaccia utente e attraverso l’API.
Di seguito è riportato un elenco di considerazioni per le query pianificate quando si utilizza Query Editor. Non si applicano al Query Service API:
È possibile aggiungere una pianificazione solo a una query già creata, salvata ed eseguita.
Tu non può aggiungere una pianificazione a una query con parametri.
Query pianificate non può contiene un blocco anonimo.
Puoi solo pianificare uno modello di query tramite l’interfaccia utente. Per aggiungere pianificazioni aggiuntive a un modello di query, è necessario utilizzare l’API. Se è già stata aggiunta una pianificazione utilizzando l’API, non sarà possibile aggiungere ulteriori pianificazioni utilizzando l’interfaccia utente di.
+++La risposta "Limite sessione raggiunto" indica che è stato raggiunto il numero massimo di sessioni di Query Service consentite per la tua organizzazione. Stabilisci una connessione con l’amministratore Adobe Experience Platform della tua organizzazione.
+++
+++Answer Query Service non elimina mai la cronologia delle query. Ciò significa che eventuali query che fanno riferimento a un set di dati eliminato restituirebbero come risultato "Nessun set di dati valido".
+++
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 possibile utilizzare la tabella temporanea nel modo seguente:
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 incorporate per convertire un determinato timestamp in e dal formato UTC. Entrambe to_utc_timestamp()
e from_utc_timestamp()
i metodi richiedono due parametri: timestamp e timezone.
Parametro | Descrizione |
---|---|
Marca temporale | Il timestamp può essere scritto in formato UTC o semplice {year-month-day} formato. Se non viene specificata un'ora, il valore predefinito è la mezzanotte del mattino del giorno specificato. |
Fuso orario | Il fuso orario è scritto in un {continent/city}) formato. Deve essere uno dei codici di fuso orario riconosciuti presenti nella database TZ di dominio pubblico. |
Il to_utc_timestamp()
il metodo interpreta i parametri specificati e li converte alla marca temporale del fuso orario locale in formato UTC. Ad esempio, il fuso orario a Seul, Corea del Sud, è UTC/GMT +9 ore. Specificando un timestamp di sola data, il metodo utilizza il valore predefinito mezzanotte del mattino. La marca temporale e il fuso orario vengono convertiti in formato UTC dall’ora dell’area geografica a una marca temporale UTC dell’area locale.
SELECT to_utc_timestamp('2021-08-31', 'Asia/Seoul');
La query restituisce un timestamp nell’ora locale dell’utente. In questo caso sono le 15 del giorno prima, mentre Seoul è avanti di nove ore.
2021-08-30 15:00:00
Altro esempio: se la marca temporale specificata è 2021-07-14 12:40:00.0
per Asia/Seoul
fuso orario, il timestamp UTC restituito sarebbe 2021-07-14 03:40:00.0
L’output della console fornito nell’interfaccia utente di Query Service è un formato più leggibile:
8/30/2021, 3:00 PM
Il from_utc_timestamp()
il metodo interpreta i parametri specificati dalla marca temporale del fuso orario locale e fornisce la marca temporale equivalente della regione desiderata in formato UTC. Nell’esempio seguente, l’ora è le 14:40 nel fuso orario locale dell’utente. Il fuso orario di Seoul superato come variabile è di nove ore davanti al 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
La stringa della data deve essere 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 in query SQL?CAST
per convertire una marca temporale, è necessario includere sia la data e tempo.Ad esempio, la mancanza del componente tempo, come mostrato di seguito, genera un errore:
SELECT * FROM ABC
WHERE timestamp = CAST('07-29-2021' AS timestamp)
L'utilizzo 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 considerato come un columnar-store anziché utilizzare un sistema tradizionale basato su file.
+++
NOT IN
nella query SQL?NOT IN
L'operatore viene spesso utilizzato per recuperare le righe non trovate 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
o un numero elevato di record.Invece di utilizzare NOT IN
, è possibile utilizzare NOT EXISTS
o LEFT OUTER JOIN
.
Ad esempio, se sono state create le seguenti tabelle:
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 il NOT EXISTS
, è possibile eseguire la replica utilizzando NOT IN
mediante 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 eseguire la replica utilizzando NOT IN
mediante la seguente query:
SELECT T1.ID FROM T1
LEFT OUTER JOIN T2 ON T1.ID = T2.ID
WHERE T2.ID IS NULL
test_table_001
.+++Risposta n., si tratta di una limitazione intenzionale in un Experience Platform che si applica a tutti i servizi Adobe, incluso Query Service. Un nome con due trattini bassi è accettabile come nome di schema e set di dati, ma il nome della tabella per il set di dati può contenere solo un singolo trattino basso.
+++
+++Risposta Non esiste alcun limite di concorrenza per le query in quanto le query batch vengono eseguite come processi back-end. Tuttavia, è stato impostato un limite di timeout per le query di 24 ore.
+++
+++Risposta Sono disponibili funzionalità di monitoraggio e di avviso per verificare le attività e gli stati delle query. Consulta la Integrazione del registro di controllo di Query Service e registri di query documenti per ulteriori informazioni.
+++
+++Risposta Al momento, non sono supportati rollback o aggiornamenti di questo tipo.
+++
+++Answer Query Service è una soluzione completa o nulla. Impossibile fornire l'accesso parziale.
+++
+++Risposta Sì, è possibile limitare la query ai set di dati con accesso in sola lettura.
+++
+++Risposta Sì, sono supportate le modalità SSL. Consulta la Documentazione sulle modalità SSL suddividendo le diverse modalità SSL disponibili e il livello di protezione che offrono.
+++
+++Risposta Sì. I dati in transito sono sempre conformi a HTTPS. La versione attualmente supportata è TLS1.2.
+++
+++Risposta Sì, una connessione effettuata sulla porta 80 utilizza ancora SSL. È inoltre possibile utilizzare la porta 5432.
+++
+++Risposta Sì, se configurato, viene applicato il controllo degli accessi basato su attributi. Consulta la panoramica sul controllo degli accessi basato su attributi per ulteriori informazioni.
+++
+++Risposta no, Query Service non supporta il comando "INSERT OVERWRITE INTO".
+++
Questa sezione fornisce informazioni sull’esportazione di dati e sui limiti.
Esistono due modi per salvare i risultati di una query quando si utilizza un client PSQL. È possibile utilizzare COPY TO
o creare un'istruzione utilizzando il seguente formato:
SELECT column1, column2
FROM <table_name>
\g <table_name>.out
Linee guida sull'uso del COPY TO
comando possono essere trovate nella documentazione di riferimento della sintassi SQL.
+++Risposta n. Al momento non è disponibile alcuna funzione per l’estrazione dei dati acquisiti.
+++
SELECT * FROM prod_table LIMIT 1;
Deve essere scritto come:
SELECT * FROM prod_table
WHERE
timestamp >= to_timestamp('2022-07-22')
and timestamp < to_timestamp('2022-07-23');
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 a Query Service.
+++
+++Risposta Sì, i client desktop di terze parti possono essere collegati a Query Service tramite l’impostazione una tantum di credenziali senza scadenza. Le credenziali senza scadenza possono essere generate da un utente autorizzato e ricevute in un file JSON che viene scaricato automaticamente nel computer locale. Completo istruzioni su come creare e scaricare credenziali senza scadenza sono disponibili nella documentazione.
+++
technicalAccountID
e credential
preso dal file JSON di configurazione. Il valore della password è il seguente: {{technicalAccountId}:{credential}}
.Consulta la documentazione per ulteriori informazioni su come connettersi ai client esterni con le credenziali.
+++Rispondi a qualsiasi editor SQL di terze parti che sia PSQL o Postgres è possibile connettersi all’editor di Query Service con la compatibilità del 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 per la connessione dell’app desktop Power BI a Query Service.
+++
Se desideri migliorare i tempi di risposta per i dashboard, devi implementare un server di Business Intelligence (BI) come livello di caching tra gli strumenti Query Service e BI. In genere, la maggior parte degli strumenti di business intelligence dispone di un'offerta aggiuntiva per un server.
Lo scopo dell’aggiunta del livello del server di cache è quello di memorizzare in cache i dati da Query Service e utilizzarli ugualmente per i dashboard per velocizzare la risposta. Ciò è possibile in quanto i risultati per le query eseguite verrebbero memorizzati nella cache del server di business intelligence ogni giorno. Il server di caching fornisce quindi questi risultati a tutti gli utenti con la stessa query per ridurre la latenza. Per ulteriori informazioni su questa configurazione, consulta la documentazione dell’utility o dello strumento di terze parti in uso.
+++Risposta n.: la connettività pgAdmin non è supportata. A elenco dei client di terze parti disponibili e istruzioni su come collegarli a Query Service sono disponibili nella documentazione.
+++
Nella tabella seguente sono riportati i codici di errore PSQL e le possibili cause.
Codice errore | Stato della 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 | Nessuna tabella trovata per l'utilizzo |
42601 | Query | Errore di sintassi | Errore di comando o sintassi non valida |
42P01 | Query | Tabella non trovata | Impossibile trovare la tabella specificata nella query |
42P07 | Query | Tabella esistente | Esiste già una tabella con lo stesso nome (CREATE TABLE) |
53400 | Query | Il limite supera il valore massimo | L'utente ha specificato una clausola LIMIT superiore a 100.000 |
53400 | Query | Timeout rendiconto | Il rendiconto live inviato ha richiesto più di 10 minuti |
58000 | Query | Errore di sistema | Guasto del sistema interno |
0A000 | Query/Comando | Non supportati | La funzionalità nella query o nel comando non è supportata |
42501 | DROP TABLE Query | Eliminazione della tabella non creata da Query Service | La tabella che viene eliminata non è stata creata da Query Service utilizzando CREATE TABLE dichiarazione |
42501 | DROP TABLE Query | Tabella non creata dall'utente autenticato | La tabella in fase di eliminazione non è stata creata dall'utente attualmente connesso |
42P01 | DROP TABLE Query | Tabella non trovata | Impossibile trovare la tabella specificata nella query |
42P12 | DROP TABLE Query | Nessuna tabella trovata per dbName : controlla la dbName |
Nessuna tabella trovata 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), veniva visualizzato un codice di errore 58000 che indicava che il set di dati non esiste. Di seguito è riportato un esempio del precedente errore di sistema.ErrorCode: 58000 Internal System Error [Invalid table your_table_name. historyMeta can be used on datalake tables only.]
Questo errore si è verificato perché non è stato restituito alcun valore per la query. Questo comportamento è stato corretto per restituire il seguente messaggio:
Query complete in {timeframe}. 0 rows returned.
Nella tabella seguente sono riportati i codici di errore HTTP e le possibili cause.
Codice di stato HTTP | Descrizione | Possibili cause |
---|---|---|
400 | Richiesta non valida | Query non valida o non valida |
401 | Autenticazione non riuscita | Token di autenticazione non valido |
500 | Errore interno del server | Guasto del sistema interno |