本檔案提供查詢服務常見問題的解答,並提供使用查詢服務時常見錯誤代碼的清單。 如需Adobe Experience Platform中其他服務的相關問題和疑難排解,請參閱 Experience Platform疑難排解指南.
下列常見問題解答清單分為下列類別:
本節包含關於效能、限制和程式的資訊。
+++回答否。 編輯器目前不支援關閉自動完成功能。
+++
+++答案一個潛在原因是自動完成功能。 此功能會處理某些中繼資料命令,有時候會在查詢編輯期間拖慢編輯器的速度。
+++
+++回答是,您可以使用視覺化方式,與所有AdobeAPI服務互動, Postman (免費的第三方應用程式)。 觀看 Postman 安裝指南 以取得在Adobe Developer Console中設定專案和取得所有必要認證以搭配使用的逐步指示 Postman. 請參閱 啟動、執行和共用的指南 Postman 集合.
+++
+++答案是,除非在外部指定明確限制,否則Query Service在內部應用50,000行的限制。 請參閱 互動式查詢執行 以取得更多詳細資訊。
+++
+++回答批次查詢中不支援更新資料集內的列。
+++
+++回答否。 資料大小沒有限制,但互動式工作階段的查詢逾時限制為10分鐘。 如果查詢以批次CTAS執行,則10分鐘逾時不適用。 請參閱 互動式查詢執行 以取得更多詳細資訊。
+++
SELECT * FROM customers LIMIT 0;
+++回答否。 查詢服務具有自動擴展功能,可確保併發查詢不會對服務的效能產生任何明顯的影響。
+++
+++答案某些保留的關鍵字無法用作列名,例如 ORDER
, GROUP BY
, WHERE
, DISTINCT
. 如果您想使用這些關鍵字,則必須逸出這些欄。
+++
如需的完整指引,請參閱本檔案 如何使用巢狀資料結構 使用查詢編輯器或協力廠商用戶端。
+++答案若要改善包含陣列之資料集的查詢效能,您應 分解陣列 as a CTAS查詢 在執行階段上,接著進一步探索,以尋找改善其處理時間的機會。
+++
處理期間查詢卡住的原因可能有許多。 要確定確切原因,需要逐個進行深入分析。 聯絡Adobe客戶支援 這個過程。
Adobe客戶支援電話號碼的完整清單 可在「Adobe」說明頁面上使用。 或者,您也可以完成下列步驟,線上找到說明:
下拉式橫幅會顯示包含 說明與支援 區段。 選擇 聯繫我們 要開啟「Adobe客戶服務虛擬助理」,請選擇 企業支援 為大型組織提供專屬協助。
請參閱 匿名塊文檔 以取得更多詳細資訊。
+++回答是,您可以通過使用預準備語句來模板查詢。 預準備的語句可以優化效能,並避免重複重新解析查詢。 請參閱 準備聲明文檔 以取得更多詳細資訊。
+++
使用GET命令檢索多個查詢。 如需如何呼叫API的資訊,請參閱 範例API呼叫檔案.
從回應中,識別您要調查的查詢,並使用其提出其他GET要求 id
值。 如需完整指示,請參閱 依ID檔案擷取查詢.
成功的回應會傳回HTTP狀態200,並包含 errors
陣列。 回應已縮短,以簡化。
{
"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",
}
此 查詢服務API參考檔案 提供有關所有可用端點的詳細資訊。
以下示例演示了CTAS語法和結構資料類型的使用:
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 ;
+++回答 SNAPSHOT
子句可用於根據快照ID增量讀取表上的資料。 這非常適合搭配 增量負載 設計模式,僅處理自上次載入執行後建立或修改的資料集中的資訊。 因此,可提高處理效率,並可與串流和批次資料處理搭配使用。
+++
查詢包含歷史資料,而UI只顯示目前的設定檔資料。
WHERE
子句,直到您開始看到某些資料。您也可以使用下列小型查詢來確認資料集包含資料:
SELECT count(1) FROM myTableName
+++答案此功能目前正在進行中。 詳情將在 發行說明 功能準備好發行後,透過Platform UI對話方塊執行和操作。
+++
+++應答查詢服務提供了幾個內置的SQL幫助程式函式以擴展SQL功能。 請參閱檔案,以取得 查詢服務支援的SQL函式.
+++
+++回答:尚未,並非所有開放原始碼 Spark SQL 已對資料湖資料進行測試。 測試並確認後,就會將其新增至支援清單。 請參閱 支援的清單 Spark SQL 函式 來檢查特定函式。
+++
+++答基於資料安全性考量,不允許自訂UDF定義。
+++
您也應查閱本檔案,以取得如何執行的指引 UI中的排程查詢 和 API.
以下是使用 Query Editor. 它們不適用於 Query Service API:
您只能將排程新增至已建立、儲存及執行的查詢。
您 不能 將計畫添加到參數化查詢。
排程查詢 不能 包含匿名塊。
您只能排程 one 使用UI查詢範本。 如果您想要將其他排程新增至查詢範本,則需使用API。 如果已使用API新增排程,則您將無法使用UI新增其他排程。
+++回答「已達工作階段上限」表示已達到貴組織允許的查詢服務工作階段數上限。 請連線貴組織的Adobe Experience Platform管理員。
+++
+++答查詢服務不會刪除查詢歷史記錄。 這表示任何參考已刪除資料集的查詢都會因此傳回「無有效資料集」。
+++
SELECT * FROM <table> WHERE 1=0
例如,您可以建立臨時表格:
CREATE temp TABLE temp_dataset AS
SELECT *
FROM actual_dataset
WHERE 1 = 0;
然後,您可以使用臨時表格,如下所示:
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
查詢服務支援內置的SQL函式,可將指定的時間戳轉換為UTC格式或從UTC格式轉換。 兩者 to_utc_timestamp()
和 from_utc_timestamp()
方法會採用兩個參數:時間戳記和時區。
參數 | 說明 |
---|---|
時間戳記 | 時間戳記可以以UTC格式或簡單格式寫入 {year-month-day} 格式。 若未提供時間,預設值為指定日的上午的午夜。 |
時區 | 時區會寫入 {continent/city}) 格式。 它必須是中可辨識的時區代碼之一,如 公共域TZ資料庫. |
此 to_utc_timestamp()
方法解釋給定參數並轉換它 至您當地時區的時間戳記 格式。 例如,韓國首爾的時區是UTC/GMT +9小時。 方法提供僅限日期的時間戳記,會使用凌晨的午夜預設值。 時間戳記和時區會從該地區的時間轉換為UTC格式,再轉換為您當地地區的UTC時間戳記。
SELECT to_utc_timestamp('2021-08-31', 'Asia/Seoul');
查詢會以使用者的當地時間傳回時間戳記。 在這種情況下,首爾將提前9小時在前一天下午3點。
2021-08-30 15:00:00
另一個範例是,如果指定的時間戳記是 2021-07-14 12:40:00.0
針對 Asia/Seoul
時區,傳回的UTC時間戳記會是 2021-07-14 03:40:00.0
查詢服務UI中提供的主控台輸出是較人類看得懂的格式:
8/30/2021, 3:00 PM
此 from_utc_timestamp()
方法解釋給定參數 從您當地時區的時間戳記 並以UTC格式提供所需區域的等效時間戳記。 在下列範例中,小時是使用者當地時區的下午2:40。 以變數傳遞的首爾時區比當地時區提前九小時。
SELECT from_utc_timestamp('2021-08-31 14:40:00.0', 'Asia/Seoul');
查詢會針對以參數傳遞的時區,傳回UTC格式的時間戳記。 結果會比執行查詢的時區提前九小時。
8/31/2021, 11:40 PM
日期字串 必須 格式 yyyy-mm-ddTHH24:MM:SS
.
以下是使用時間戳記篩選的範例:
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
運算子來轉換SQL查詢中的時間戳?CAST
運算子來轉換時間戳記,您需要同時包含日期 和 時間。例如,遺失時間元件(如下所示)將導致錯誤:
SELECT * FROM ABC
WHERE timestamp = CAST('07-29-2021' AS timestamp)
正確使用 CAST
運算子如下所示:
SELECT * FROM ABC
WHERE timestamp = CAST('07-29-2021 00:00:00' AS timestamp)
+++答案您無法使用萬用字元(*)從您的列取得所有資料,因為Query Service應視為 欄位式存放 而不是傳統的基於行的儲存系統。
+++
NOT IN
?NOT IN
運算子通常用於檢索在其他表或SQL陳述式中找不到的行。 如果要比較的列接受,此運算子可能會降低效能,並可能傳回未預期的結果 NOT NULL
,或者您有大量記錄。而非使用 NOT IN
,您可以使用 NOT EXISTS
或 LEFT OUTER JOIN
.
例如,如果您已建立下清單格:
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)
如果您使用 NOT EXISTS
運算子,您可以使用 NOT IN
運算元,方法如下:
SELECT ID FROM T1
WHERE NOT EXISTS
(SELECT ID FROM T2 WHERE T1.ID = T2.ID)
或者,如果您使用 LEFT OUTER JOIN
運算子,您可以使用 NOT IN
運算元,方法如下:
SELECT T1.ID FROM T1
LEFT OUTER JOIN T2 ON T1.ID = T2.ID
WHERE T2.ID IS NULL
test_table_001
.+++答案否,這是套用至所有Adobe服務(包括查詢服務)的跨Experience Platform故意限制。 架構名稱和資料集名稱可以使用兩個底線的名稱,但資料集的表格名稱只能包含單一底線。
+++
+++答案由於批處理查詢作為後端作業運行,因此沒有查詢併發限制。 但是,有設為24小時的查詢逾時限制。
+++
+++答案有監控和警報功能可檢查查詢活動和狀態。 請參閱 查詢服務審核日誌整合 和 查詢記錄 檔案以取得詳細資訊。
+++
+++回答目前,我們不支援以此方式回傳或更新。
+++
+++回答查詢服務是「全部或全部無」解決方案。 無法提供部分訪問。
+++
+++答案是,您可以將查詢限制為具有唯讀存取權的資料集。
+++
+++回答是,支援SSL模式。 請參閱 SSL模式檔案 以劃分不同的可用SSL模式及其提供的保護級別。
+++
+++回答是。 傳輸中資料一律符合HTTPS規範。 目前支援的版本為TLS1.2。
+++
+++回答是,在埠80上建立的連接仍使用SSL。 您也可以使用埠5432。
+++
+++答是是,如果配置了,將強制執行基於屬性的訪問控制。 請參閱 基於屬性的訪問控制概述 以取得更多資訊。
+++
+++答案否,查詢服務不支援「插入覆蓋到」命令。
+++
本節提供有關匯出資料和限制的資訊。
使用PSQL客戶端時,有兩種方法可保存查詢結果。 您可以使用 COPY TO
命令或使用以下格式建立語句:
SELECT column1, column2
FROM <table_name>
\g <table_name>.out
關於使用 COPY TO
命令 可在SQL語法參考檔案中找到。
+++回答否。 目前沒有可用於擷取擷取擷取資料的功能。
+++
SELECT * FROM prod_table LIMIT 1;
應寫為:
SELECT * FROM prod_table
WHERE
timestamp >= to_timestamp('2022-07-22')
and timestamp < to_timestamp('2022-07-23');
本節包括有關使用第三方工具(如PSQL和Power BI)的資訊。
+++回答是,您可以將多個第三方案頭客戶端連接到查詢服務。 請參閱 有關可用客戶端以及如何將它們連接到查詢服務的完整詳細資訊.
+++
+++回答是,第三方案頭客戶端可以通過一次性設定非即將到期的憑據連接到查詢服務。 授權的使用者可產生未到期的憑證,並以自動下載至其本機電腦的JSON檔案接收。 完整 關於如何建立和下載未到期的憑據的指南 可在檔案中找到。
+++
technicalAccountID
和 credential
取自設定JSON檔案。 密碼值採用以下形式: {{technicalAccountId}:{credential}}
.如需如何取得的詳細資訊,請參閱本檔案 使用憑證連線至外部用戶端.
+++回答任何第三方SQL編輯器,即PSQL或 Postgres 客戶端相容可連接到查詢服務編輯器。 請參閱 將客戶端連接到查詢服務 以取得可用指示的清單。
+++
+++答案是,您可以將Power BI連接到Query Service。 請參閱 將Power BI案頭應用程式連接到Query Service的說明.
+++
若要改善控制面板的回應時間,您應將Business Intelligence(BI)伺服器實作為查詢服務與BI工具之間的快取層。 一般而言,大部分的BI工具都提供額外的伺服器服務。
新增快取伺服器層的目的,是快取查詢服務中的資料,並將資料用於控制面板,以加速回應。 這是可能的,因為每天都會在BI伺服器中快取執行的查詢結果。 然後,快取伺服器會為具有相同查詢的任何使用者提供這些結果,以減少延遲。 請參閱您使用的公用程式或協力廠商工具的檔案,以了解此設定的相關說明。
+++答案否,不支援pgAdmin連接。 A 可用的第三方客戶端清單以及如何將它們連接到查詢服務的說明 可在檔案中找到。
+++
下表提供了PSQL錯誤代碼及其可能的原因。
錯誤代碼 | 連接狀態 | 說明 | 可能的原因 |
---|---|---|---|
08P01 | 不適用 | 不支援的消息類型 | 不支援的消息類型 |
28P01 | 啟動 — 驗證 | 密碼無效 | 驗證令牌無效 |
28000 | 啟動 — 驗證 | 授權類型無效 | 授權類型無效。 必須 AuthenticationCleartextPassword . |
42P12 | 啟動 — 驗證 | 未找到表 | 未找到要使用的表 |
42601 | 查詢 | 語法錯誤 | 命令或語法錯誤無效 |
42P01 | 查詢 | 未找到表 | 未找到查詢中指定的表 |
42P07 | 查詢 | 表存在 | 具有相同名稱的表已存在(CREATE TABLE) |
53400 | 查詢 | LIMIT超過最大值 | 用戶指定的LIMIT子句大於100,000 |
53400 | 查詢 | 語句超時 | 提交的即時陳述最多需要10分鐘 |
58000 | 查詢 | 系統錯誤 | 內部系統故障 |
0A000 | 查詢/命令 | 不支援 | 不支援查詢/命令中的功能 |
42501 | 拖放表查詢 | 刪除未由查詢服務建立的表 | 正在刪除的表不是由查詢服務使用 CREATE TABLE 語句 |
42501 | 拖放表查詢 | 未由已驗證的用戶建立的表 | 被刪除的表不是當前登錄的用戶建立的 |
42P01 | 拖放表查詢 | 未找到表 | 未找到查詢中指定的表 |
42P12 | 拖放表查詢 | 未找到 dbName :請檢查 dbName |
在當前資料庫中未找到任何表 |
history_meta()
方法可用於從資料集存取快照。 以前,如果您要對Azure資料湖儲存(ADLS)中的空資料集執行查詢,會收到58000錯誤碼,指出資料集不存在。 以下顯示舊系統錯誤的示例。ErrorCode: 58000 Internal System Error [Invalid table your_table_name. historyMeta can be used on datalake tables only.]
發生此錯誤是因為沒有查詢的返回值。 此行為現已修正,現在會傳回下列訊息:
Query complete in {timeframe}. 0 rows returned.
下表提供HTTP錯誤碼及其可能的原因。
HTTP狀態代碼 | 說明 | 可能的原因 |
---|---|---|
400 | 錯誤請求 | 格式錯誤或非法查詢 |
401 | 驗證失敗 | 驗證令牌無效 |
500 | 內部伺服器錯誤 | 內部系統故障 |