簡體   English   中英

為什么我不能刷新我的 Snowflake 外部表?

[英]Why can I not refresh my Snowflake External Table?

當我嘗試在 Snowflake 中執行我的外部表的刷新時,我收到消息“查詢未產生任何結果”。 以下是我在導致未成功執行的最終語句之前采取的步驟。

當我執行以下命令時,我可以在我的階段(天藍色的 blob 存儲)中成功看到我試圖訪問的 .json 文件:

LIST @AZURE_STAGE_ECL_RAW

我創建了一個文件格式如下:

CREATE OR REPLACE FILE FORMAT ECL_JSON_FORMAT
    TYPE = JSON
    FILE_EXTENSION = '.json';

我確保 my.json 文件是 ndjson 格式,如下所示:

{"code": "value1", "display": "value2", "version": "value3", "cluster_name": "value4"}
{"code": "value1", "display": "value2", "version": "value3", "cluster_name": "value4"}
{"code": "value1", "display": "value2", "version": "value3", "cluster_name": "value4"}
{"code": "value1", "display": "value2", "version": "value3", "cluster_name": "value4"}

我創建了我的外部表如下:

CREATE OR REPLACE EXTERNAL TABLE CLUSTERS_SNOMED_ECL
(
    Code TEXT AS (value:"code"::TEXT)
    ,Display TEXT AS (value:"display"::TEXT)
    ,Version TEXT AS (value:"version"::TEXT)
    ,Cluster_Name TEXT AS (value:"cluster_name"::TEXT)
)
WITH LOCATION = @AZURE_STAGE_ECL_RAW/clusters.json
FILE_FORMAT = (FORMAT_NAME = ECL_JSON_FORMAT);

當我執行以下命令時,我可以看到創建的列,但沒有按照附圖顯示的數據:

SELECT * FROM CLUSTERS_SNOMED_ECL

當我從表中選擇 * 時查看

所以最后我試圖在就職時間刷新我的外部表但是當我執行以下命令時,我收到消息“查詢沒有結果”:

ALTER EXTERNAL TABLE CLUSTERS_SNOMED_ECL REFRESH;

任何人都可以建議我下一步應該做什么才能成功刷新並將數據拉入我的表中嗎?

查詢返回 0 個結果,因為該位置直接指向文件。

 WITH LOCATION = @AZURE_STAGE_ECL_RAW/clusters.json

外部表功能旨在從目錄而不是一個文件中讀取所有文件。

要解決此問題,請重新創建外部表,使該位置指向文件目錄。 之后,對外部表運行 select 查詢以進行驗證。

使用命令 select metadata$filename from @ZURE_STAGE_ECL_RAW 檢查您是否可以從階段列出文件的元數據;

如果您收到訪問拒絕消息,則表明文件級別存在權限問題。 ls @ZURE_STAGE_ECL_RAW,可以工作,如果你有對 Blob 的權限,但你也需要對文件有正確的權限。

文件格式不需要FILE_EXTENSION部分:

CREATE OR REPLACE FILE FORMAT ECL_JSON_FORMAT
    TYPE = JSON
    -- FILE_EXTENSION = '.json';

創建文件格式

FILE_EXTENSION = '字符串' | 沒有任何

利用

僅數據卸載

定義

指定卸載到階段的文件的擴展名。 接受任何延期。 用戶負責指定可由任何所需軟件或服務讀取的文件擴展名。


表定義可以改用FORMAT_TYPE

CREATE OR REPLACE EXTERNAL TABLE CLUSTERS_SNOMED_ECL
(
    Code TEXT AS (value:"code"::TEXT)
    ,Display TEXT AS (value:"display"::TEXT)
    ,Version TEXT AS (value:"version"::TEXT)
    ,Cluster_Name TEXT AS (value:"cluster_name"::TEXT)
)
WITH LOCATION = @AZURE_STAGE_ECL_RAW/clusters.json
FILE_FORMAT = (FORMAT_TYPE = JSON);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM