在Redshift中创建表时遇到以下错误:
Column "main.sales_metrics" has unsupported type "character varying[]".;
在DataFrame模式中,它看起来像这样:
|-- sales_metrics: array (nullable = true)
|-- element: string (nullable = true)
我试图像通常在PostgreSQL中那样声明该列:sales_metrics text[]
正如我从文档中看到的那样,Amazon Redshift不支持PostgreSQL数据类型。
那么在RedShift中创建表时,如何正确声明存储sales_metrics
的{{1}}列?
答案 0 :(得分:3)
Redshift does not support arrays,但可以使用一些JSON functions。 基本上,您可以将数据存储为varchar并使用json函数查询数据
例如:
create temporary table sales_metrics (col1 varchar(20));
insert into sales_metrics values ('[1,2,3]');
然后
select json_extract_array_element_text(col1, 2) from sales_metrics;
json_extract_array_element_text
---------------------------------
3
(1 row)
答案 1 :(得分:1)
除了@ittus的答案外,请注意Redshift对数组的存储方式很挑剔。
json_arrays | is_valid_json_array
------------------------------+---------------------
[] | t
["a","b"] | t
["a",["b",1,["c",2,3,null]]] | t
{"a":1} | f
a | f
{foo, bar} | f
{"one", "two"} | f
[x,y,z] | f
[1,2,] | f