将 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 表时如何管理/处理架构更改 的相关文章

  • Instagram 勒克斯效果

    Instagram 最近添加了一个 Lux 按钮 可以对您拍摄的照片进行自动对比 调平 我有一堆图片需要以类似的方式自动调平 使这些图片看起来更好 如果我想在 Imagemagick 中使用批处理命令 需要使用什么 秘密成分 我应该坚持对比
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self
  • Visual Studio 2017/2019/2022 gitsync/pull/push/fetch 操作卡住,并且无法停止

    我从 Visual Studio 中的 Git Changes 选项卡启动同步 获取 拉取或推送 但操作只是挂起 没有选项可以停止它 我必须点击 X 才能关闭 Visual Studio 如果操作是同步的 它会在其他所有操作上打开一个模式对
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 是否可以将 Cypress e2e 测试与 firebase auth 项目结合使用?

    我正在探索 Cypress 进行 e2e 测试 看起来是很棒的软件 问题在于身份验证 Cypress 文档解释了为什么使用 UI 非常糟糕here https docs cypress io guides getting started t
  • 本地权威声明和外部提供商声明的混淆

    我正在创建一个简单的 WebApi 它允许用户与 Facebook 连接 当我从 facebook 获取 accessToken 时 我调用 RegisterExternal 创建 Asp Net Identity 记录并存储令牌中的声明
  • 修改 ADW Android 启动器?

    我想更改和修改开源 ADW 启动器 启动器可在此处获取 https github com AnderWeb android packages apps Launcher https github com AnderWeb android p
  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp
  • 期望最大化算法的数值示例[重复]

    这个问题在这里已经有答案了 由于我不确定给出的公式 有人可以提供 EM 算法的简单数字示例吗 一个非常简单的具有 4 或 5 个笛卡尔坐标的坐标就可以了 那这个呢 http en wikibooks org wiki Data Mining
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 绘制大位图时 nSyncAndDrawFrame 速度极慢

    我想用多个大位图优化视差滚动视图 在我的 Nexus 5 上 一切都很顺利 Traceview 转储如下所示 doFrame 方法大约需要 18 毫秒才能完成 但是 当使用我的 Nexus 7 或 Android 6 模拟器 Genymot
  • 如何为React hooks(useState等)做流类型注解?

    我们应该如何将 Flow 类型注释与 React hooks 一起使用 例如useState 我尝试寻找一些如何实施它们的示例 但找不到任何东西 我试过这个 const allResultsVisible setAllResultsVisi
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 为什么 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