json - 使用现有 JSON 文件,如何将此数据上传到 BigQuery 并使用 JSON 文件中的数据计算新字段?
问题描述
我有一个新行分隔的 JSON 文件,我将上传到 BigQuery。
JSON 文件的每一行都包含许多字段,我想将其中两个添加在一起,以形成一个新列,其中包含添加在一起的两个值。
但是,有数百万条记录,我宁愿在 JSON 完全上传后不使用 SQL 来执行此操作。
有什么过程可以完成我正在寻找的东西吗?
也许在 JSON 模式中?或者可能是我将 JSON 和 JSON 架构上传到 BigQuery 的方式?
非常感谢!:)
解决方案
检查我的“ BigQuery 中的延迟数据加载”帖子:
诀窍是设置 BigQuery 以将 GCS 文件视为具有稀有字符分隔符的联合 CSV 文件。然后,您可以在 BigQuery 本身内进行任何转换。
就我而言:
#standardSQL
CREATE VIEW `fh-bigquery.views.wikipedia_views_test_ddl`
AS SELECT
PARSE_TIMESTAMP('%Y%m%d-%H%M%S', REGEXP_EXTRACT(_FILE_NAME, '[0-9]+-[0-9]+')) datehour
, REGEXP_EXTRACT(line, '([^ ]*) ') wiki
, REGEXP_EXTRACT(line, '[^ ]* (.*) [0-9]+ [0-9]+') title
, CAST(REGEXP_EXTRACT(line, ' ([0-9]+) [0-9]+$') AS INT64) views
, CAST(REGEXP_EXTRACT(line, ' ([0-9]+)$') AS INT64) zero
, _FILE_NAME filename
, line
FROM `fh-bigquery.views.wikipedia_views_gcs`WHERE REGEXP_EXTRACT(line, ' ([0-9]+) [0-9]+$') IS NOT NULL # views
AND REGEXP_EXTRACT(line, ' ([0-9]+)$') = '0' # zero
而不是REGEXP_EXTRACT
你可以这样做JSON_EXTRACT/JSON_EXTRACT_SCALAR
,或者 - 为了最大的灵活性 - JavaScript UDF。
推荐阅读
- mysql - MYSQL - 错误代码:1415。不允许从函数返回结果集。存储函数尝试
- python - 不同模型在超参数调整时对 RNN 模型进行增量拟合
- http - nginx sent_http 标头变量不真实
- node.js - 使用带有 symfony 的 nodeJS 服务器
- dart - Dart/WebStorm“取消 dart.async.StreamSubscription 的实例”
- speech-to-text - 如何禁用 Google Cloud Speech to Text API 的不流畅移除功能
- java - 在 Java 中创建新构造函数的问题
- perl - Custom Storable hooks for dclone-ing a light-weight object referencing a heavy-weight object
- javascript - 动态表输入值计算
- xamarin.forms - 如何创建多个初始屏幕取决于条件 xamarin 形式?