将 JSON 文件加载到 BigQuery 表时如何管理/处理架构更改

2023-12-01

我的输入文件如下所示:

{"Id": 1, "Address": {"Street":"MG Road","City":"Pune"}}
{"Id": 2, "Address": {"City":"Mumbai"}}
{"Id": 3, "Address": {"Street":"XYZ Road"}}
{"Id": 4}
{"Id": 5, "PhoneNumber": 12345678, "Address": {"Street":"ABCD Road", "City":"Bangalore"}}

在我的数据流管道中,如何动态确定每行中存在哪些字段以遵守 BigQuery 表架构。 例如,在第 2 行中,Street不见了。我想要列的条目Address.Street在 BigQuery 中"N/A" or null并且不希望管道因架构更改或丢失数据而失败。

在使用 Python 写入 BigQuery 之前,如何在数据流作业中处理此逻辑?


我建议将数据写入只有一个字段的临时表line类型的string

将数据导入 BigQuery 临时表后 - 现在您可以应用架构逻辑并将临时表中的数据查询到最终表

以下示例适用于 BigQuery 标准 SQL,说明如何对一个字段中包含整行的表应用架构逻辑

#standardSQL
WITH t AS (
  SELECT '{"Id": 1, "Address": {"Street":"MG Road","City":"Pune"}}' line UNION ALL
  SELECT '{"Id": 2, "Address": {"City":"Mumbai"}}' UNION ALL
  SELECT '{"Id": 3, "Address": {"Street":"XYZ Road"}}' UNION ALL
  SELECT '{"Id": 4}  ' UNION ALL
  SELECT '{"Id": 5, "PhoneNumber": 12345678, "Address": {"Street":"ABCD Road", "City":"Bangalore"}}' 
)
SELECT
  JSON_EXTRACT_SCALAR(line, '$.Id') id,
  JSON_EXTRACT_SCALAR(line, '$.PhoneNumber') PhoneNumber,
  JSON_EXTRACT_SCALAR(line, '$[Address].Street') Street,
  JSON_EXTRACT_SCALAR(line, '$[Address].City') City 
FROM t  

结果如下

Row id  PhoneNumber Street      City     
1   1   null        MG Road     Pune     
2   2   null        null        Mumbai   
3   3   null        XYZ Road    null     
4   4   null        null        null     
5   5   12345678    ABCD Road   Bangalore      
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JSON 文件加载到 BigQuery 表时如何管理/处理架构更改 的相关文章

  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • NSArrayController 无需将大型数据集加载到数组中

    我想使用 NSArrayController 向 NSTableView 提供数据 我面临的问题是我不想将所有数据预先加载到数组中 然后使用数组控制器setContent 方法 我的数据模型是一个管理数百万条记录的大型现有代码库 它包含有效
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • 如何在 Angular 4 中翻译 mat-paginator?

    你知道如何在 Angular 中翻译 每页项目 吗mat paginator标签 这mat paginator是材料设计中的一个元素 您可以使用MatPaginatorIntl为了这 威尔 豪厄尔制作 https github com an
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我
  • 如何在 OSX 上安装 LaTeX .sty 文件?

    我设置了一个 LaTeX 项目 tex documents some file tex support todonotes sty where some file tex uses todonotes usepackage colorinl
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下

随机推荐

  • 为什么 ln -sf 不覆盖目录的现有链接[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 根据文档 命令ln f删除现有的目标文件 这是否意味着如果我创建符号链接 f 应该删除或覆盖目标处的任何现有符号链接 我有一个符号链接 例如 L 指向 DIR1 并输入ln sf D
  • Win32Api USB SetupDiGetDeviceInterfaceDetail 失败

    我正在尝试连接到 USB GPS 设备 如果我通过 CreateFile WinApi 手动创建文件 使用设备管理器中指定的路径 我可以成功连接到设备 但是 当我尝试通过枚举选择设备时 SetupDiGetDeviceInterfaceDe
  • 我如何检查此功能是否失败(我应该检查它)?

    我看到LuaCrypto下有这个函数crypto digest new dtype 我看到了有关该功能的以下解释 crypto digest new dtype 使用 dtype 指定的算法创建新的消息摘要对象 当我调用这个函数时 我应该检
  • 如何使用 Eclipse 将类导入现有 Java 项目

    我下载了 svgsalamander jar 其中包含所有漂亮的类和内容 但我无法使用 Eclipse 将它们成功加载到我现有的 Java 项目中 那么我该怎么办呢 我真的很抱歉问这个问题 但我尝试使用谷歌 堆栈并发现没有任何有用的东西 T
  • jQuery:使用 AJAX 调用更改按钮的类别

    我正在构建一个类似 不同的系统 我有一个按钮 其中有一个类似的类 如果我单击它 数据就会插入到数据库中 并且该类会更改为不同的 与假设拉动另一个ajax调用不同的是 它会删除实际的like 但它不起作用 当类更改时 它会执行like类应该做
  • 将图像转换为极坐标的示例明确执行 - 想要一个灵活的矩阵方法

    我正在尝试将图像从笛卡尔坐标转换为极坐标 我知道如何使用 for 循环显式地执行此操作 但我正在寻找更紧凑的东西 我想做类似的事情 x y size CartImage minr floor min x y 2 r linspace 0 m
  • 如果渲染器进程关闭,电子全局变量垃圾会被收集吗?

    在 Electron 中 我的主进程打开了一个 BrowserWindow BrowserWindow 加载一个 html 页面 然后同一窗口最终加载另一个 html 页面 main js var mainWindow global mai
  • 更改 YII 中的语言

    使用 YII 创建新站点后 我在 protected messages 中添加了一个文件夹 fr 并添加了一个文件 site php 其中包含 返回数组 你好 gt bonjour 在 view layout main php 中 我添加了
  • 无法在头文件中声明 ifstream 类成员

    我试图在头文件中声明一个 ifstream 对象 如图所示 但收到一条错误消息 指出无法访问它 我尝试了各种方法 例如将其变成指针 在 c 文件中初始化等 但我的代码似乎无法获取它的声明的一部分 读取文件 h ifndef READFILE
  • 如何使用 open() 在 python 中使用相对路径打开文件? [复制]

    这个问题在这里已经有答案了 我试图不使用配置文件的绝对路径 因为我需要将其部署在多个环境中 这里我的最佳选择是什么 下面的代码是我尝试过的 它无法找到路径 但是我可以在同一位置找到该文件 我在 Redhat 服务器上使用 Python3 6
  • RDFa 面包屑导航和验证器的正确文档类型

    我需要弄清楚 HTML 文档类型 在此页面中 http kovo intl uk to我使用 RDFa 添加面包屑导航 但随后页面不再有效 我用谷歌搜索 发现将 doctype 更改为 现在页面 100 有效 但是 XHTML 和如此低的数
  • jquery数据表排序忽略空值

    我正在使用数据表和 jQuery 来制作漂亮的可排序表 我现在想要对行进行排序 该值是一个数值 但它也可能不可用 所以此时我将回显破折号 现在 当我对此列进行排序时 所有带有破折号的行都位于顶部 然后显示值为 1 3 6 8 10 的行 如
  • 获取 Point 两侧的 LineString 上的顶点

    我有一个匀称的LineString并定义了一个匀称的Point沿着LineString 我怎样才能找到顶点LineString哪个位于该点的两侧 将线分成两部分 找到线段LineString重点在哪里 然后将顶点分成两组LineString
  • 如何在mysql存储过程中生成5个随机数

    如何生成 5 个唯一的随机数 现在我有类似的东西 declare v counter integer declare v random integer declare v result varchar 10 select FLOOR 1 r
  • FixThreadPool 与 CachedThreadPool:两害相权取其轻

    我有一个程序可以生成线程 5 150 来执行一堆任务 最初 我使用了一个FixedThreadPool因为这个类似的问题建议它们更适合寿命较长的任务 并且由于我对多线程的了解非常有限 我考虑了线程的平均寿命 几分钟 长寿 但是 我最近添加了
  • 如何使用 Java 列出存储桶中的所有 AWS S3 对象

    使用 Java 获取 S3 存储桶中所有项目的列表的最简单方法是什么 List
  • 安装factoextra时rbind(info, getNamespaceInfo(env, "S3methods")) 出错

    我正在尝试在 Windows 上使用本地源 tar 球安装 factoextra 包 我可以用同样的方式安装其他软件包 没有问题 但是 在安装 factoextra 时 我收到与 S3methods 相关的错误 我尝试使用本地 Window
  • 如何使用 css 模糊图像,同时在图像上显示文本(悬停)

    可以 然后呢 我有个问题 我想要一张悬停时模糊的图片 同时让文字出现在它上面 我找到了一种简单的方法来模糊图像并显示文本 但不能同时显示两者 事实上 将两个代码合并在一起可以使图片看起来一点也不模糊 我认为这是因为文本实际上覆盖了图像 并且
  • WPF 中的网格表

    我需要创建一个网格 应该是可编辑的我应该设置行数和列数 例如 mygrid RowCount 3 mygrid ColumnCount 3 它应该是这样的 如何将二维数组绑定到DataGrid 您可以使用 WPF DataGrid 控件 它
  • 将 JSON 文件加载到 BigQuery 表时如何管理/处理架构更改

    我的输入文件如下所示 Id 1 Address Street MG Road City Pune Id 2 Address City Mumbai Id 3 Address Street XYZ Road Id 4 Id 5 PhoneNu