bigquery - zeppelin 时间戳未呈现为日期

Posted

技术标签:

【中文标题】bigquery - zeppelin 时间戳未呈现为日期【英文标题】:bgiquery - zeppelin timestamp not rendered as date 【发布时间】:2017-12-14 16:55:30 【问题描述】:

我正在使用 Bigquery 解释器在 zeppelin 上运行 Bigquery 查询,查询是在具有类型为 TIMESTAMP 的字段的表上运行的。

行为: 1. 在 google bigquery 控制台上执行查询时,TIMESTAMP 字段被视为日期,这是有效的默认行为,因为它是人类可读的。它也与任何 SQL 数据库相同。 2. 当使用 bigquery 解释器在 zeppelin 上执行相同的查询时,TIMESTAMP 字段将呈现为 LONG 类型..即一个巨大的数字。 但是在 zeppelin 上,当使用 JDBC 解释器执行查询时,TI

我们希望 Timestamp 列在执行选择查询时呈现为日期。

当我在 zeppelin 源的 BigQueryInterpreter.java 中添加日志时,字段值打印为长类型,即大数字。所以如果我们想解决这个问题,什么是正确的方法,因为 zeppelin 解释器使用 bigquery google api 服务,即 google-api-services-bigquery-v2-rev300-1.20.0

for (TableRow 行: response.getRows()) for (TableCell 字段 : row.getF()) logger.error("字段值:",field.getV().toString()); msg.append(field.getV().toString()); msg.append(TAB);

Timestamp field rendered as number

SQl, timestamp rendered as date

那么我们如何确保 bigquery 返回 timstamp 作为日期而不是长类型,如何解决这个问题?

【问题讨论】:

这个问题只发生在 Zeppelin Interpreter 上?为什么不能在拉取数据后简单地将 Long 值重新转换回 Timestamp? 【参考方案1】:

由于 Zeppelin 在内部使用 Long,您可以让他们的开发人员添加一种将数据作为时间戳返回的方法,或者您可以在查询后自行转换数据。

如果是Java,可以试试this。

【讨论】:

以上是关于bigquery - zeppelin 时间戳未呈现为日期的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB / Mongoose 时间戳未更新

时间戳未显示在 Python 的 yfinance 包中

时间戳未从 Glue 加载到 Redshift 表中

时间戳未打印在 FFMPEG 的缩略图上

当时间戳未被归类为索引时,如何按时间戳对数据帧进行切片?

JPQL 查询参数中的时间戳未转换为 UTC