大查询将重复字段中的结构更新为 null

2024-03-09

在 Google bigquery 中,我试图对重复字段进行更新。

为了进行比较,这是可行的(或者至少被标记为有效),但当然实际上并没有更新该字段。

UPDATE my.table t
SET my_field = ARRAY(
  SELECT AS STRUCT g.foo, g.bar, g.struct_to_set_null
  FROM unnest(t.groups) as g
), ... FROM ... etc

Setting struct_to_set_null为 null 会出现错误:

UPDATE my.table t
SET my_field = ARRAY(
  SELECT AS STRUCT g.foo, g.bar, null as struct_to_set_null
  FROM unnest(t.groups) as g
), ... FROM ... etc

Value of type ARRAY<STRUCT<... (really long and cut off) cannot be assigned to groups, which has type <ARRAY,STRUCT<... (same, really long, cut off)

我可以看到有问题的字段是类型RECORD and NULLABLE,所以我想将其设置为null被允许。有什么技巧可以让它发挥作用吗?


问题在于 BigQuery 不能仅从 NULL 文字推断结构字段的类型;你需要更明确一点。这是一个例子:

CREATE TABLE tmp_elliottb.UpdateTable (
  my_field ARRAY<STRUCT<foo INT64, bar INT64, struct_to_set_null STRUCT<x STRING, y BOOL, z INT64>>>
);

UPDATE tmp_elliottb.UpdateTable
SET my_field = ARRAY(
  SELECT AS STRUCT foo, bar, NULL AS struct_to_set_null FROM UNNEST(my_field)
)
WHERE true;

这给了我:

Value of type ARRAY<STRUCT<foo INT64, bar INT64, struct_to_set_null INT64>> cannot be assigned to my_field, which has type ARRAY<STRUCT<foo INT64, bar INT64, struct_to_set_null STRUCT<x STRING, y BOOL, z INT64>>> at [4:16]

我可以做的是使用IF产生的表达式NULL,但是有struct_to_set_null在其中一个分支上,以强制我想要的输出类型:

UPDATE tmp_elliottb.UpdateTable
SET my_field = ARRAY(
  SELECT AS STRUCT
    foo, bar,
    IF(false, struct_to_set_null, NULL) AS struct_to_set_null 
  FROM UNNEST(my_field)
)
WHERE true;

或者,我也可以使用SELECT * REPLACE:

UPDATE tmp_elliottb.UpdateTable
SET my_field = ARRAY(
  SELECT AS STRUCT * REPLACE (IF(false, struct_to_set_null, NULL) AS struct_to_set_null )
  FROM UNNEST(my_field)
)
WHERE true;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大查询将重复字段中的结构更新为 null 的相关文章

随机推荐

  • PHP Laravel:无法建立连接,因为目标机器主动拒绝它

    我正在 Laravel 5 中构建一个 Web 应用程序 该应用程序应该获取存储在 MySQL 数据库中的 类别名称 并显示一个表单以添加新的 类别名称 当我执行命令时php artisan serve我导航到http localhost
  • 位置:子元素上的粘性行为,而父元素不粘性?

    我正在努力实现一些我不确定是否可能实现的目标 请注意 我正在寻找仅 CSS 的解决方案 我知道我可以用 JS 解决这个问题 但我不想这样做 考虑下面的笔 https codepen io fchristant pen PjoKOq http
  • 使用 Alter 命令的 Oracle 存储过程

    我正在尝试构建一个 Oracle 存储过程 它将接受表名作为参数 然后该过程将重建表上的所有索引 我的问题是在存储过程中使用 ALTER 命令时出现错误 就好像 PLSQL 不允许该命令一样 Use the execute immediat
  • 如何使用 Ant、文件和文件夹“chmod -R +w”?

    我想做相当于chmod R w foo in an Ant构建脚本 到目前为止我正在使用这个
  • 如何解决 Tridion 弹出页面中的“Tridion 未定义”错误?

    我正在自定义功能区工具栏并向其添加一个按钮 每当我单击该按钮时 它都会打开一个 aspx 页面 允许作者选择一些数据 这些数据将附加到现有的 RTF 字段内容中 但是当打开弹出窗口时 浏览器 Internet Explorer 中出现以下错
  • 使用队列进行基数排序

    我想创建一个基数排序 http en wikipedia org wiki Radix sort使用队列实现 我无法弄清楚我的代码的哪一部分有问题或者我应该阅读哪些资源 我的代码可能完全错误 但这是我的实现 没有任何帮助 我还没有参加数据结
  • 不带重定向的不记名令牌 WEB API asp.net core

    我是 ASP NET Core 的新手 我正在尝试使用来自 Google Facebook 的 jwt 身份验证和 OpenOauth 制作一个小型 Web 服务 我读过这篇文章 https stormpath com blog token
  • System.Windows.Threading.DispatcherTimer 在哪里?

    快到长周末了 我正在尝试创建一个 DispatcherTimer 我找到了一些示例代码 但由于缺少命名空间而无法运行它 我有命名空间 System Windows Threading 但我可以在哪个程序集中找到它 我尝试了 System S
  • Pandas GroupBy 中的计数和连接整数

    假设这是我的 df A B C 0 a 33 13 1 b 44 14 2 a 55 15 3 a 66 16 4 b 77 17 5 c 88 18 我尝试得到这样的东西 A B B C count list sum 0 a 3 33 5
  • 如果类列表包含多个特定类

    我需要一个函数来触发元素recordplayerstick包含pinplace or pinsongplay班级 我当前的代码返回语法错误 这样做的正确方法是什么 if document getElementById recordplaye
  • LINQ to DataTable 简单快速

    我是 LINQ 新手 我想将 LINQ 查询转换为 DataTable DataClassesDataContext db new DataClassesDataContext MyConncectionString IEnumerable
  • INVoiceShortcutCenter.shared.getAllVoiceShortcuts 在 iOS 13 中不会返回任何内容

    我不确定我做错了什么 但在这个方法中 INVoiceShortcutCenter shared getAllVoiceShortcuts vShortCuts error in print vShortCuts vShortCuts 是一个
  • 填充形状的图像不会在 FabricJS 中使用 loadFromJSON 加载

    I have JSON带有 Fabric Rect 对象的数据 当我尝试加载这个时JSON数据到织物画布上从JSON加载 形状加载完美 但形状中填充的图案未渲染 仅在单击形状后才会渲染图案 我已将我的代码复制到织物厨房水槽执行模块中 并尝试
  • 无法使用 Apache POI 读取 Excel

    我正在使用 Apache POI 读取 excel 但它不断给出 XSSFWorkbook 类定义发现错误的错误 我使用了不同版本的 Apache poi jar 库 即 4 1 4 0 和 3 12 但它们似乎都没有修复此错误 这是当前导
  • 从 Graphite 迁移到图形浏览器

    石墨网络应用程序不鼓励临时绘图 Graphiti 等人只是花哨的 UI 虽然改进了 UI UX 但对于困扰 Graphite Webapp 的固有线性度量搜索没有做太多事情 如果这里错了请纠正我 但是only我遇到的鼓励临时绘图的选项是图形
  • 请求:网络应用程序的最小框架

    我即将构建一个框架 将 xml 带有嵌入代码 解析为具有 ajax 功能的自动生成的 Web 应用程序 现在 我不想重新发明轮子 所以感谢任何现有的可用解决方案 归结为 有可用的框架吗 这为我创建了回调代码等 最好是php If not 适
  • 如何在 MVC4 中使用 type="url" 而无需 jQuery 将字段验证为 URL?

    情况是这样的 我这里有一个很大的 URL 文本输入框 https asafaweb com https asafaweb com 不过 这不需要遵守 URL 的严格定义 我允许没有方案的地址 然后出于可用性目的默认为 HTTP 例如 sta
  • 如何在iOS中制作一个水平可滚动的UITabBar?

    我的应用程序中的 UITabBar 由 10 多个项目组成 但宽度足以放置所有 10 多个项目 如何在 iOS 中制作水平可滚动的 UITabBar Thanks 至少在某种程度上 你必须自己动手 What might工作 将创建一个 UI
  • mapM 的惰性版本

    假设我在使用 IO 时收到了大量的项目列表 as lt getLargeList 现在我正在尝试申请fn a gt IO b onto as as lt getLargeList bs lt mapM fn as mapM有类型mapM M
  • 大查询将重复字段中的结构更新为 null

    在 Google bigquery 中 我试图对重复字段进行更新 为了进行比较 这是可行的 或者至少被标记为有效 但当然实际上并没有更新该字段 UPDATE my table t SET my field ARRAY SELECT AS S