相关疑难解决方法(0)

红移.将逗号分隔的值转换为行

我想知道如何将逗号分隔的值转换为Redshift中的行.我担心我自己的解决方案不是最优的.请指教.我有一个表与其中一个具有逗号分隔值的列.例如:

我有:

user_id|user_name|user_action
-----------------------------
1      | Shone   | start,stop,cancell...
Run Code Online (Sandbox Code Playgroud)

我想看看

user_id|user_name|parsed_action 
------------------------------- 
1      | Shone   | start        
1      | Shone   | stop         
1      | Shone   | cancell      
....
Run Code Online (Sandbox Code Playgroud)

amazon-redshift

27
推荐指数
2
解决办法
1万
查看次数

Amazon Redshift中的generate_series函数

我试过以下:

SELECT * FROM generate_series(2,4);
generate_series
-----------------
           2
           3
           4
(3 rows)

SELECT * FROM generate_series(5,1,-2);                                                             
generate_series
-----------------
           5
           3
           1
(3 rows)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试时,

select * from generate_series('2011-12-31'::timestamp, '2012-12-31'::timestamp, '1 day');
Run Code Online (Sandbox Code Playgroud)

它产生了错误.

ERROR:  function generate_series(timestamp without time zone, timestamp without time zone, "unknown") does not exist
HINT:  No function matches the given name and argument types. You may need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)

我在Redshift 1.0.757上使用PostgreSQL 8.0.2.
知道为什么会这样吗?

更新:

generate_series现在正在使用Redshift.

SELECT CURRENT_DATE::TIMESTAMP  - (i * interval '1 day') as date_datetime …
Run Code Online (Sandbox Code Playgroud)

generate-series amazon-redshift

7
推荐指数
2
解决办法
4284
查看次数

在Redshift中generate_series()方法失败

当我运行SQL查询时:

 select generate_series(0,g)
 from ( select date(date1) - date(date2) as g from mytable ;
Run Code Online (Sandbox Code Playgroud)

它返回一个错误:

 INFO:  Function "generate_series(integer,integer)" not supported.
 ERROR:  Specified types or functions (one per INFO message) not supported 
 on Redshift tables.
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个查询时:

select  generate_series(0, g) from (select 5 as g)
Run Code Online (Sandbox Code Playgroud)

它返回以下响应:

 generate_series
-----------------
 0
 1
 2
 3
 4
 5
(6 rows)
Run Code Online (Sandbox Code Playgroud)

为什么第二个查询有效,而第一个查询失败?

generate-series amazon-redshift

6
推荐指数
2
解决办法
6864
查看次数

加入一个范围的最佳方式?

我认为这可能是一个常见的问题,可能无法解决每个工具.现在我们正在尝试使用amazons Redshift.我们现在唯一的问题是我们正在尝试查找IP地址的邮政编码.我们将IP连接到城市的表是IP转换为整数的范围.

例:

Start IP | End IP  | City

| 123123 | 123129 | Rancho Cucamonga|
Run Code Online (Sandbox Code Playgroud)

我在intip> = startip和intip <endip上尝试了明显的内连接.

有谁知道这样做的好方法?

sql postgresql range-types amazon-redshift

2
推荐指数
1
解决办法
3931
查看次数

REDSHIFT:如何在不使用redshift(Postgres 8.0.2)中创建名为"数字"的表格的情况下生成一系列数字?

我需要为报告创建一个空的时间表系列,这样我就可以将几个表的连接活动留给它了.一天中的每个小时都不一定有数据,但我希望它显示为零或零以获取不活动而不是省略当天的那个小时.

在后期版本的Postgres(后8.0.2版)中,这在以下几个方面很容易:

SELECT unnest(array[0,1,2,3,4...]) as numbers

要么

CROSS JOIN (select generate_series as hours from generate_series(now()::timestamp, now()::timestamp + interval '1 day', '1 hour'::interval )) date_series

Redshift可以运行其中一些命令,但是当您尝试与任何表一起运行它时会引发错误.

我需要的:

生成一系列数字(例如0-23)作为将在redshift上运行的子查询的可靠方法(使用postgres 8.0.2).

generate-series amazon-redshift postgresql-8.0

2
推荐指数
2
解决办法
7356
查看次数