mysql时间戳字段类型_Superset支持int类型的时间戳字段

aeeb3bf22d326eef5b2b01f21c44e418.png

表结构如下

sqlite> .schema exam
CREATE TABLE exam (id int primary key, name text, exam_time int, score int, age int, income int);

其中exam_time保存的是UNIX时间戳(1970年1月1号以来的秒数)。

为了让superset能正常识别时间,需要修改exam表的字段定义。

Sources>Tables

7241b6d0ebc88abcbde786d5ebc877bb.png

选择Edit record,进入编辑界面:

cde0a8f385753917d3e6fbcd6d15e22a.png

编辑exam_time字段的定义

bde09f3787dc4cccaf09750785a9e533.png

选中is temporal,在Datetime Format中设置格式为epoch_s。

这样,exam_time字段就可以在Time-Series类型的图表中,用作时间字段了。

这是以“day”为粒度,Superset在查询时生成的sqlite3 SQL语句:

SELECT DATE(datetime(exam_time, 'unixepoch')) AS __timestamp, AVG(score) AS "AVG(score)"
FROM exam GROUP BY DATE(datetime(exam_time, 'unixepoch')) ORDER BY "AVG(score)" DESC
LIMIT 10000 OFFSET 0

改成以“week”为粒度:

SELECT DATE(datetime(exam_time, 'unixepoch'), -strftime('%W', datetime(exam_time, 'unixepoch')) || ' days') AS __timestamp, AVG(score) AS "AVG(score)"
FROM exam GROUP BY DATE(datetime(exam_time, 'unixepoch'), -strftime('%W', datetime(exam_time, 'unixepoch')) || ' days') ORDER BY "AVG(score)" DESC
LIMIT 10000 OFFSET 0

以"month"为粒度:

SELECT DATE(datetime(exam_time, 'unixepoch'), -strftime('%d', datetime(exam_time, 'unixepoch')) || ' days', '+1 day') AS __timestamp, AVG(score) AS "AVG(score)"
FROM exam GROUP BY DATE(datetime(exam_time, 'unixepoch'), -strftime('%d', datetime(exam_time, 'unixepoch')) || ' days', '+1 day') ORDER BY "AVG(score)" DESC
LIMIT 10000 OFFSET 0

这是以"month"为粒度时的效果:

32aa85a5c24f21c662729fbef421a144.png

另,构造测试数据时,用python自动写了一个csv文件,exam_time的数字前面有空格,在sqlite里.import 文件名 表名,能导入。但是执行select date(datetime(exam_time, 'unixepoch')) from exam limit 10转换出来的日期为空。

后来去掉csv文件中的空格,再次导入,date(datetime(exam_time, 'unixepoch'))才能正常转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值