struct - BigQuery 将 unix 时间戳结构转换为日期时间结构
问题描述
我有一个 BigQuery 表,其中包含一个daySliderTimes
以下列形式调用的结构列:
daySliderTimes STRUCT<_field_1 STRUCT<_seconds INT, _nanoseconds INT>, _field_1 STRUCT<_seconds INT, _nanoseconds INT>
.
_field_1
并_field_2
代表两个不同的时间戳。_seconds
并_nanoseconds
表示自 unix 时代以来的时间。
我想将数据转换为STRUCT
具有以下形式的新数据:
daySlidertimes STRUCT<startTime DATETIME, endTime DATETIME>
这是 BigQuery UI 中的表格:
解决方案
如果您想使用格式从旧表创建一个新表daySlidertimes STRUCT<startTime DATETIME, endTime DATETIME>
,您可以以毫秒为单位转换数据,然后使用函数“TIMESTAMP_MICROS”将其转换为 TIMESTAMP,查看此链接以查看解析时间戳的函数数量 [ 1]。
查询示例应如下所示:
CREATE TABLE `project.dataset.new_table` AS
SELECT searchDocId,
STRUCT(TIMESTAMP_MICROS(CAST(
((daySliderTimes.field1.seconds * 1e+6) +
ROUND(daySliderTimes.field1.nanoseconds * 0.001)) AS INT64)) as
startTime,
TIMESTAMP_MICROS(CAST( ((daySliderTimes.field2.seconds * 1e+6) +
ROUND(daySliderTimes.field2.nanoseconds * 0.001)) AS INT64)) as endTime)
as daySliderTimes,
enabledDaySliders
FROM `project.dataset.old_table`
推荐阅读
- windows - 执行 .cmd 文件的 Autosys 作业比通过命令行界面单独运行 .cmd 脚本花费的时间更长
- javascript - AWS Lambda 函数上 Axios 请求中的 NodeMailer
- c# - 如何从解决方案中的另一个项目将 JSON 文件作为字符串加载?
- sql - 我可以通过 VIEW 中的 WHERE 子句设置递归 CTE 吗?
- c - 操作数求值顺序的矛盾
- python - 从 SQL Server 查询 Python 中的二进制值
- html - 如何以编程方式关闭 JAWS 的虚拟光标?
- c - 包含指向 void 指针的指针变量的 memcpy 结构
- oracle - PLSQL Oracle10 方言使用触发器模仿 UPSERT 功能
- html - HTML 列表在移动视图上被分解