如何解决镶木地板的外部暂存数据在雪花中返回 NULL
各位,我在 S3
上有一个外部舞台,用于存储镶木地板文件。
现在,我创建了一个表为 T1_D1
:
CREATE TABLE T1_D1(ID NUMBER(38,0),TRANSACTION_DATE TIMESTAMP_NTZ(9),PRODUCT VARCHAR(16777216))
现在,我正在运行以下脚本,以测试我加载的数据是否正确。
select
$1:ID::number,$1:PRODUCT::VARCHAR(16777216)
from @my_s3/T1/day_2_sales.parquet
(file_format => my_parq)
它在所有行中成功返回 ID
数字,而产品返回为 NULL
。
我什至尝试使用交易日期列运行,但同样的问题仍然存在。 (即)ID
匹配并正确返回数据,但时间戳值抛出 NULL
。
$1:ID::NUMBER,$1:TRANSACTION_DATE::TIMESTAMP_NTZ(9) 1,2,3,6,7,8,9,10,11,
作为附加步骤,我在源镶木地板文件上使用了 AWS 爬虫,它为我提供了下表的架构,如下所示。
1 id : bigint 2 transaction_date : string 3 product : string
解决方法
我实验过的东西如下。
- 首先,我尝试对各个列进行测试,即尝试使用以下查询打印 ID 和 PRODUCT 列。
select $1:ID::number,$1:PRODUCT::VARCHAR(16777216) from @my_s3/T1/day_2_sales.parquet (file_format => my_parq)
It returned ID's correctly but the product values are null.
-
所以我使用了 AWS 爬虫来查找源模式的数据类型,并相应地编写了雪花查询。通过更改雪花中的数据类型。但它仍然返回NULL。
-
然后我发现,源镶木地板文件中列的命名约定不合适。即目标列 "ID" 在源系统中被命名为 "ID" 本身,但是 "PRODUCT" 被命名为 >“产品” 在源镶木地板文件中。并且 TRANSACTION_DATE 被命名为 Transaction_Date。
-
以下查询成功。
select $1:ID::number,$1:Transaction_date::timestamp,$1:Product::varchar from @my_s3/T1/day_1_sales.parquet (file_format => my_parq)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。