Sql 红移:将2个Epoch Unix列转换为1(带时区的可读格式)
背景:下面的JSON文件是事务的事件类型(来自DocumentDB),我将每天将其加载到Redshift中。红移中的原始表将包含您在使用Pentaho Kettle读取和解析后在下面的JSON中看到的确切信息 在红移中捕获此JSON文件的当前DDL如下所示:Sql 红移:将2个Epoch Unix列转换为1(带时区的可读格式),sql,json,timestamp,amazon-redshift,epoch,Sql,Json,Timestamp,Amazon Redshift,Epoch,背景:下面的JSON文件是事务的事件类型(来自DocumentDB),我将每天将其加载到Redshift中。红移中的原始表将包含您在使用Pentaho Kettle读取和解析后在下面的JSON中看到的确切信息 在红移中捕获此JSON文件的当前DDL如下所示: CREATE TABLE etl.lpgetlstage_na.json_data_raw ( document_id varchar(500), clustertime timestamp, operation_t
CREATE TABLE etl.lpgetlstage_na.json_data_raw (
document_id varchar(500),
clustertime timestamp,
operation_type varchar(500),
"database" varchar(500),
collection varchar(500),
document_key varchar(500),
order_number varchar(600),
order_id varchar(500),
order_date_time varchar(500),
attraction_id varchar(500),
entry_date timestamp,
entry_time timestamp,
request_id varchar(500),
ticket_url varchar(500),
pass_id varchar(500),
external_ticket_id varchar(500),
"class" varchar(500),
filename varchar(500),
last_modified varchar(500),
etl_created_ts varchar(500)
);
问题:正如我们在下面的JSON结构中看到的,两个字段“entry\u date”和“entry\u time”目前都是Unix Epoch格式的。我在这里的主要目标是从“entry_date”和“entry_time”中提取日期和时间,这样我就可以将两者连接起来,并创建一个具有以下格式(包括时区)的唯一列:“GMT:2020年9月7日星期一下午4:11:04”
有什么方法可以用红移来实现这一点吗
{
"_id": {
"_data": "11111111111111"
},
"operationType": "insert",
"clusterTime": {
"$timestamp": {
"t": 1599495064,
"i": 1
}
},
"ns": {
"db": "abc",
"coll": "abc"
},
"documentKey": {
"_id": {
"$uuid": "abcabcabcabcabcabc"
}
},
"fullDocument": {
"_id": {
"$uuid": "abcabcabcabcabcabc"
},
"orderNumber": "1234567",
"externalOrderId": "12345678",
"orderDateTime": "2020-09-11T08:06:26Z[UTC]",
"attraction": "abc",
"entryDate": {
"$date": 1599523200000
},
"entryTime": {
"$date": 1599472800000
},
"requestId": "abc",
"ticketUrl": "abc",
"tickets": [
{
"passId": "1111111",
"externalTicketId": "1234567"
},
{
"passId": "222222222",
"externalTicketId": "122442492"
}
],
"_class": "abc"
}
}