postgresql - 在 RedShift 表中存储数组的正确方法是什么?

标签 postgresql apache-spark dataframe apache-spark-sql amazon-redshift

我在 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建表时,应该如何正确声明存储Array[String]sales_metrics列呢?

最佳答案

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)

关于postgresql - 在 RedShift 表中存储数组的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51680795/

相关文章:

python - 通过索引名称使用 MultiIndex 迭代 pandas.DataFrame

sql - 在 PostgreSQL 中没有主键的表用于

python - 在 sqlalchemy、数据库、ORM 中使用标签

r - Sparklyr - 无法实例化 SessionHiveMetaStoreClient

python - 如何在pyspark中通过键找到两个rdd的交集?

python - 在 pandas Dataframe 的列上运行函数的有效方法?

sql - 根据另一列的最小值选择一列

postgresql - 使用多个模式或按 customerId 表列实现 Multi-Tenancy 数据结构

scala - 将 groupByKey() 替换为 reduceByKey()

将 NA 值替换为组中的数值