BigQuery 重复数据删除和分区表

2024-03-13

我想在 BigQuery 中创建一个允许执行以下操作的视图:

  • 重复记录删除
  • 将 _PARTITIONTIME 公开为用于过滤的列,以允许分区修剪

我知道执行重复数据删除的建议查询是:

SELECT
  * EXCEPT(row_number)
  FROM (
SELECT *
    ,ROW_NUMBER()
          OVER (PARTITION BY fct.KeyColumn ORDER BY fct.CreatedDatetime DESC) row_number
FROM `my-project.my_dataset.fact_table` fct)
WHERE
  row_number = 1

关于如何查询分区表的建议方法是:

SELECT
  *
FROM
  `my-project.my_dataset.fact_table`
WHERE
  _PARTITIONTIME BETWEEN TIMESTAMP('2016-01-01')
  AND TIMESTAMP('2016-01-02');

如何将两者结合起来提供一个经过重复数据删除的 BigQuery 视图,并提供一个列以允许在视图的 where 子句中使用 _PARTITIONTIME。我读到了有关使用子选择等时分区修剪的限制的信息,这就是为什么我想知道这是否可能。

为了给您一些背景信息,该视图位于正在流式传输的表的顶部,因此重复数据删除必须即时进行。


您需要让视图每天返回最新行,以启用对分区时间的过滤。它会是这样的:

#standardSQL
SELECT day, latest_row.*
FROM (
  SELECT
    _PARTITIONTIME AS day,
    ARRAY_AGG(fct ORDER BY fct.CreatedDatetime DESC LIMIT 1)[OFFSET(0)] AS latest_row
  FROM `my-project.my_dataset.fact_table` AS fct
  GROUP BY day, KeyColumn
);

在外部查询中,latest_row.*还应包括KeyColumn.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BigQuery 重复数据删除和分区表 的相关文章

随机推荐

  • 如何在旋转动画后在 ImageView 上设置 OnClickListener

    我想在使用 addView 方法动态创建 ImageView 并在我的应用程序中旋转它们后 在 ImageView 上设置 OnClickListener 但是当我在屏幕上按下 ImageView 时 onClick 方法无法正常工作 如果
  • XPATH——由查询定义的结果顺序

    我有一个像这样的 xpath 表达式 element attr a element attr b element attr c 这是一个 或 语句 那么 我是否可以创建一个表达式来保证结果按照查询中的顺序出现 即使元素在文档中以不同的顺序出
  • Django(鼻子)测试加速,reuse_db 不起作用

    我正在使用 django nose 在 django 1 4 中运行单元测试 TEST RUNNER django nose NoseTestSuiteRunner 创建数据库需要很长时间 所以我发现把它放在settings py中 os
  • Symfony2 - 为什么超级管理员也需要投票

    我注意到 即使是超级管理员用户也会征求我的选民的意见 它是否按预期工作 如果是的话 我认为SuperAdmin的哲学是他们系统地拥有所有权利 这样我们就不必一一授予他们每个权限 既然如此 为什么不向所有选民授予访问权呢 我是否总是必须把 i
  • 加载程序集后执行的 C# 方法

    我编写了一些 C 类库 我想使用 Ninject 为我的类提供依赖注入 类库是否可以声明一些在每次加载类库时执行的代码 方法 我需要它来定义 Ninject 的绑定 听起来您正在寻找 C 的 DllMain 的等效项 在 C 中没有办法做到
  • 如何将多个参数作为单个向量传递给函数?

    我使用六个参数创建了以下函数 nDone lt function under strike ttoe vol rf dy pnorm log under strike rf dy vol 2 2 ttoe vol ttoe 0 5 nDon
  • method="post" enctype="text/plain" 不兼容?

    当我使用
  • 使用yarn berry时将.yarn目录提交到git

    在纱线 浆果 的下一个版本中manual https yarnpkg com getting started install指出应该只提交创建的名为 yarn 但是如果您对yarn使用多版本设置 则该目录包含该文件releases yarn
  • 根据ace编辑器实例中字符的长度设置宽度

    我正在开发一个使用 contenteditable 属性创建自定义富文本编辑器的项目 在这个富文本编辑器中 我想插入单行 ace 编辑器实例 其宽度将根据其中的字符数设置 为了将 ace 编辑器实例限制为单行 我处理了 Enter 键事件
  • 如何使用通配符投影别名?

    一旦我做了一个join A by id B by id 我得到一个带有字段的别名A f B f 有没有办法只将其投影到A fields C join A by id B by id D filter C by B n lt 1000 E f
  • 在大型文本文件中搜索字符串 - 分析 python 中的各种方法

    这个问题已经被问过很多次了 花了一些时间阅读答案后 我做了一些快速分析来尝试前面提到的各种方法 我有一个600 MB文件与600万字符串行 DMOZ 项目的类别路径 每行的条目都是唯一的 我想要load文件once 不停寻找用于数据中的匹配
  • 如何撤消 SQL Server UPDATE 查询?

    在 SQL Server Management Studio 中 我执行了以下查询 不幸的是 我忘记取消注释WHERE clause 更新了 1647 行 而不是 4 行 如何撤消最后一条语句 Unfortunately I ve only
  • 完成活动后如何取下键盘?

    我有一个用户在其中输入的活动 然后单击 确定 按钮 完成后 活动关闭并返回到旧活动 但软键盘仍然在屏幕上 我试过了android windowSoftInputMode stateHidden and getWindow setSoftIn
  • 阻止直接 URL 访问返回部分视图的控制器?

    如果有一个名为 UsersController 的控制器 其操作如下 public ActionResult ActiveUsers IQueryable
  • 如何获取数组值作为curl php请求的返回值?

    由于我是 PHP 新手 所以我很难使用 PHP 问题是我没有从curl 请求中获得任何返回值 我正在访问一个远程文件 其中包含以下代码 测试 php test gt getCall public function getCall var a
  • 为什么 easy_install 适用于某些 Windows 二进制文件?

    背景 Windows 默认情况下不包含编译器 安装编译器 或许还需要配置 Python 来使用它 是一项足够复杂的任务 许多开发人员都避免这样做 为此 许多具有二进制依赖项的包可以作为包含二进制文件的预编译 Windows 可执行文件提供
  • 如果未找到元素,C# 中的 XmlSerializer 反序列化是否会失败?

    我正在使用 XmlSerializer 在 C 中将对象写入和读取到 xml 我目前使用的属性XmlElement and XmlIgnore操纵对象的序列化 如果我的 xml 文件缺少我需要的 xml 元素 我的对象仍然可以很好地反序列化
  • Python 中的方法参数[重复]

    这个问题在这里已经有答案了 假设我有这样的代码 class Num def init self num self n num def getn self return self n def getone return 1 myObj Num
  • 将特定线程绑定到特定处理器核心

    我在大学里谈过一些关于并行处理的内容 现在我正在努力提高它 我可以编写可以并行运行的代码 然后启动线程 但之后我就失去了对线程执行操作的控制 我想知道如何控制线程 例如将特定线程绑定到特定处理器核心 我对 C 最感兴趣 但我已经用 Java
  • BigQuery 重复数据删除和分区表

    我想在 BigQuery 中创建一个允许执行以下操作的视图 重复记录删除 将 PARTITIONTIME 公开为用于过滤的列 以允许分区修剪 我知道执行重复数据删除的建议查询是 SELECT EXCEPT row number FROM S