AWS Redshift Spectrum 十进制类型读取镶木地板双类型

CK *_*hen 4 pandas amazon-redshift parquet

我有 Pandas(pyarrow) 编写的带有 Double 类型字段的镶木地板文件。以下是镶木地板架构:

message schema {
  optional binary domain (STRING);
  optional binary type;
  optional binary country;
  optional binary region;
  optional binary country_code (STRING);
  optional int64 date (TIMESTAMP(MILLIS,true));
  optional double visits;
  optional double average_visit_duration;
}
Run Code Online (Sandbox Code Playgroud)

问题:我使用 Redshift Spectrum 创建外部表来读取这些镶木地板中的数据。表架构:

CREATE EXTERNAL TABLE spectrum.similarweb_daily_current(
  domain varchar(200), 
  type varchar(200), 
  country varchar(200), 
  region varchar(200), 
  country_code varchar(200), 
  visits decimal(38,37), 
  average_visit_duration decimal(38,37))
STORED as PARQUET
LOCATION
  's3://XXX'
Run Code Online (Sandbox Code Playgroud)

在做简单的选择查询时,它显示错误,模式不兼容 => Double vs Decimal。有谁知道如何解决它?

我所做的研究:
在 Pandas/pyarrow 上,似乎在写入镶木地板时我无法将架构调整为十进制。
在 Redshift 上,Double 类型不支持外部表(频谱)

CK *_*hen 5

解决了这个问题。使用 Redshift“双精度”类型在镶木地板中添加双倍。