首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在不知道主键的情况下在BiqQuery中构建类型2历史记录可行吗?

在不知道主键的情况下,在BigQuery中构建类型2历史记录是可行的。

类型2历史记录是一种常见的数据建模技术,用于跟踪数据的历史变化。它通过在每次数据更改时创建新的记录版本来实现。每个记录版本都包含一个生效时间范围,以及相应的属性值。

在BigQuery中,可以使用以下步骤来构建类型2历史记录:

  1. 创建一个包含所有属性的表,用于存储历史记录。每个属性都应该有一个对应的列。
  2. 添加两个特殊的列:生效时间(有效起始时间)和失效时间(有效结束时间)。这些列将用于跟踪每个记录版本的有效时间范围。
  3. 当有新的数据更改时,创建一个新的记录版本,并将其插入到历史记录表中。新记录的生效时间应该是当前时间,失效时间可以设置为一个较大的值,表示该记录是当前有效的。
  4. 对于之前的记录版本,更新其失效时间为当前时间,表示它们不再有效。

通过这种方式,可以在不知道主键的情况下,在BigQuery中构建类型2历史记录。每个记录版本都有自己的生效时间和失效时间,可以准确地跟踪数据的历史变化。

在腾讯云的产品中,可以使用腾讯云的数据仓库产品TencentDB for BigQuery来进行类型2历史记录的构建。TencentDB for BigQuery是一种快速、可扩展的云原生数据仓库,可以处理大规模数据集和复杂查询。您可以通过以下链接了解更多关于TencentDB for BigQuery的信息:TencentDB for BigQuery产品介绍

请注意,本答案没有提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,以符合问题要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

BigQuery:云中数据仓库

将您数据仓库放入云中 因此,现在考虑到所有这些情况,如果您可以使用BigQuery云中构建数据仓库和分析引擎呢?...然后使用Dremel,您可以构建接近实时并且十分复杂分析查询,并对数TB数据运行所有这些查询。所有这些都可以没有购买或管理任何大数据硬件集群情况下使用!...快速渐变维度(Fast Changing Dimensions) 快速渐变维度(FCD)典型DW需要更多工作才能创建,这与BiqQuery相比没有什么不同。...您ETL引擎通常必须注意何时去插入新事实或时间维度记录,并且通常包括“终止”记录历史记录集谱系当前记录前一个记录。...这种FCD总体方法对于建模ERP类型数据来说非常有用,例如,在记录有生效和终止日期(effective and termination)情况下,以及追踪变化至关重要情况下。

5K40

2021春招 | 一口气搞懂MySQL索引所有知识点

索引类型 主键索引 索引列值必须是唯一,不允许有空值。 普通索引 MySQL基本索引类型,没有什么限制,允许定义索引插入重复值和空值。...其他(按照索引列数量分类) 单列索引 组合索引 组合索引使用,需要遵循最左前缀匹配原则(最左匹配原则)。一般情况下在条件允许情况下使用组合索引替代多个单列索引使用。...构建1百万条数据,树高度只需要2层就可以(1000*1000=1百万),也就是说只需要2次磁盘IO就可以查询到数据。磁盘IO次数变少了,查询数据效率也就提高了。...一般情况下,聚簇索引等同于主键索引,当一个表没有创建主键索引时,InnoDB会自动创建一个ROWID字段来构建聚簇索引。...InnoDB,辅助索引叶子节点存储数据是该行主键值都。检索时,InnoDB使用此主键聚簇索引搜索行记录。

61020
  • 某团面试题:JVM 堆内存溢出后,其他线程是否继续工作?

    来源:http://sina.lt/gqaM 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱答案。...由于题目中给出OOM,javaOOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError...2 上图是JVM堆空间变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    33730

    MYSQL统计行数时到底应该怎么COUNT

    相信每个人在写代码时都有遇到过要获取MYSQL表里数据行数情况,多数人获取数据表行数时都用COUNT(*),但同时也流传了不少其他方式,比如说COUNT(1)、COUNT(主键)、COUNT(字段)。...到底哪种方式MYSQL执行起来更快也是众说纷纭,其实之前我也不知道到底哪个执行起来快,到底谁说对(笑哭)。...开启事务拿到一致性视图,重复读级别下在事务任何时刻读到数据都一样,其他事务更新对会话A没影响所以 count(*)结果是10000。...会话BT5插入一条新数据,T6查询时 count(*)结果是10002(T4 begin时会话C insert语句已经提交,所以会话B事务能看到这个更新)。...由于会话BT6时事务还没有提交,会话C看不到会话B更新,所以会话CT6时 count(*)结果是10001。

    1.4K20

    某团面试题:JVM 堆内存溢出后,其他线程是否继续工作?

    来源:http://sina.lt/gqaM 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?” 我看网上出现了很多不靠谱答案。...由于题目中给出OOM,javaOOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError...2 上图是JVM堆空间变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    49230

    某团面试题:JVM 堆内存溢出后,其他线程是否继续工作?

    最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。 我看网上出现了很多不靠谱答案。 这道题其实很有难度,涉及知识点有jvm内存分配、作用域、gc等,不是简单是与否问题。...由于题目中给出OOM,javaOOM又分很多类型;比如: 堆溢出(“java.lang.OutOfMemoryError: Java heap space”) 永久带溢出(“java.lang.OutOfMemoryError...我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    29610

    某团面试题:JVM 堆内存溢出后,其他线程是否继续工作?

    来源:http://sina.lt/gqaM 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱答案。...由于题目中给出OOM,javaOOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError...2 上图是JVM堆空间变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    33220

    金九银十,金三银四(上)

    有了索引,就不需要加载所有数据,因为B+树高度一般2-4层,最多只需要读取2-4次磁盘,查询速度大大提升。 什么情况下需要建索引?...导致索引失效情况: 对于组合索引,不是使用组合索引最左边字段,则不会使用索引 以%开头like查询如%abc,无法使用索引;非%开头like查询如abc%,相当于范围查询,会使用索引 查询条件类型是字符串...我们都知道在读已提交隔离级别下解决了脏读,但存在不可重复读及幻读情况重复读隔离级别下解决了不可重复读和幻读(如何解决下篇文章分享),下面就看下在这两个隔离级别下MVCC是如何其作用。...null;如果不存在主键的话,还会有第三列row_id,没有主键情况下默认生成主键; 我们都知道mysql事务日志中有redo log和undo log,redo log记录是真实改变值,...那么在读已提交和重复读下是如何实现,在读已提交下,是每次select都会生成read view,所以可以读到提交数据;重复读隔离级别下,是第一次select时候生成read view,以后

    80320

    美团面试题:JVM堆内存溢出后,其他线程是否继续工作?

    作者:大佛拈花 来源:http://t.cn/Ai9VH6oE 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱答案。...由于题目中给出OOM,javaOOM又分很多类型;比如: 堆溢出(“java.lang.OutOfMemoryError: Java heap space”); 永久带溢出(“java.lang.OutOfMemoryError...我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结 其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    54430

    美团面试:JVM 堆内存溢出后,其他线程是否继续工作?

    最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?” 我看网上出现了很多不靠谱答案。这道题其实很有难度,涉及知识点有jvm内存分配、作用域、gc等,不是简单是与否问题。...由于题目中给出OOM,javaOOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError...上图是JVM堆空间变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    45740

    某团面试题:JVM 堆内存溢出后,其他线程是否继续工作?

    来源:http://sina.lt/gqaM 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。 我看网上出现了很多不靠谱答案。...由于题目中给出OOM,javaOOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError...上图是JVM堆空间变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    44410

    JVM 堆内存溢出后,其他线程是否继续工作?

    作者 | gosaintmrc 出品 | 朱小厮博客 最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?” 我看网上出现了很多不靠谱答案。...由于题目中给出OOM,javaOOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError...上图是JVM堆空间变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    55810

    一文搞懂MySQL索引所有知识点(建议收藏)

    索引类型 主键索引 索引列值必须是唯一,不允许有空值。 普通索引 MySQL基本索引类型,没有什么限制,允许定义索引插入重复值和空值。...前缀索引 文本类型如CHAR,VARCHAR,TEXT类列上创建索引时,可以指定索引列长度,但是数值类型不能指定。...其他(按照索引列数量分类) 单列索引 组合索引 组合索引使用,需要遵循最左前缀匹配原则(最左匹配原则)。一般情况下在条件允许情况下使用组合索引替代多个单列索引使用。...构建1百万条数据,树高度只需要2层就可以(1000*1000=1百万),也就是说只需要2次磁盘IO就可以查询到数据。磁盘IO次数变少了,查询数据效率也就提高了。...一般情况下,聚簇索引等同于主键索引,当一个表没有创建主键索引时,InnoDB会自动创建一个ROWID字段来构建聚簇索引。

    63910

    【总结】Data Vault数据建模过程及举例

    数据仓库2.png 1. 摘要 本文介绍数据仓库Data Vault建模过程描述,并举一个示例以加深对相关概念理解。 2....2.2.1 中心表(Hub) 对于构建Data Vault模型,第一件事就是构建中心表,中心表示DV模型核心。如果设计得当,将可以兼容整合各种数据源。...Hubs中心表 business_key业务主键 使其以业务为导向, 并允许跨系统集成 Links链接表 Associations/Transactions关联和转换 提供了无需重新设计情况下吸收结构和业务规则更改灵活性...Satellites附属表 Descriptors描述性信息 提供在任何想要时间间隔内记录历史记录适应性, 以及对源系统无可争辩审核性和可追溯性 总之, 通过Data Vault模型可以获得敏捷性...、灵活性、适应性、审核性、扩展性. 2.3 Data Vault建模实践 本示例源数据库是一个订单销售普通场景,共有省、市、客户、产品类型、产品、订单、订单明细7个表。

    2.5K00

    DBLog:一种基于水印变更数据捕获框架(论文翻译)

    我们构建DBLog时考虑了插拔性,允许按需替换实现,例如将Zookeeper替换为其他数据存储。 以下各小节详细解释了交易日志捕获和完整状态捕获。...MySQL和PostgreSQL,存在一个复制协议,通过TCP套接字将事件提交时间后不久传递给DBLog。一个事件可以是创建、更新或删除类型。...因此,DBLog 要求数据库提供一个高效主键范围扫描,并且我们只允许具有主键表上进行选择。图2用一个简单例子说明了块选择过程。...第4步之后,日志事件处理会逐个进行,最终发现水位标记,而不需要缓存日志事件条目。步骤2-4预计是快速:水位标记更新是单个写操作,并且块选择具有限制主键索引上运行。...PostgreSQL,wal2json包含列名和类型以及列值。MySQL,模式更改增量作为binlog事件接收。

    49450

    MongoDB-插入数据insert、insertOne、insertMany、save用法介绍

    先针对上篇文章MongoDB_id字段含义做一些补充描述,上篇文章地址: MongoDB-_id字段含义介绍 补充说明:MongoDB是一个分布式数据库,使用ObjectId类型数据作为主键的话...上篇文章中有介绍过ObjectId类型_id每一位对应含义。...除了之前介绍过,可以自定义_id值以外,_id字段类型除了可以用字符串、数字以外,还可以用一些比较复杂数据格式做主键: db.getCollection("user").insert({"_id...":{"regionId":6,"name":"小燕子"}, "name": "小燕子","age": 18,"height": 178}) 接下来我们一起看一下在mongodb要插入数据的话,格式是怎么样...注意:save方法一次只能操作一条记录,操作多条时候会报错: insertOne和save不同,主键冲突时insertOne会报错,而save会直接用新值覆盖久值 如果你对目前工作比较困惑,不知道如何去提升自己

    2.4K20

    MySQL与PostgreSQL对比

    LAMPM指就是MySQL。构建在LAMP上应用都会使用MySQL,如WordPress、Drupal等大多数php开源程序。...功能上,和MYSQL对比,PostGIS具有下列优势: O2O业务场景LBS业务使用PostgreSQL + PostGIS有无法比拟优势。...4)支持树状结构 支持R-trees这样扩展索引类型,可以更方便地处理一些特殊数据。MySQL 处理树状设计会很复杂, 而且需要写很多代码, 而 PostgreSQL 可以高效处理树结构。...虽然很多情况下在SQL语句中使用子查询效率低下,而且绝大多数情况下可以使用带条件多表连接来替代子查询,但是子查询存在在很多时候仍然不可避免。...绝大多数情况下,你不需要为MySQL运行任何清除程序。PostgreSQL目前仍不完全适应24/7运行,这是因为你必须每隔一段时间运行一次VACUUM。

    9K10

    面试官欺负人:一个线程 OOM 后,其他线程还能运行吗

    最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。 我看网上出现了很多不靠谱答案。这道题其实很有难度,涉及知识点有jvm内存分配、作用域、gc等,不是简单是与否问题。...由于题目中给出OOM,javaOOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java.lang.OutOfMemoryError...上图是JVM堆空间变化。我们仔细观察一下在14:42:05~14:42:25之间曲线变化,你会发现使用堆数量,突然间急剧下滑!...注意了,这个例子我只演示了堆溢出情况。如果是栈溢出,结论也是一样,大家自行通过代码测试。...总结:其实发生OOM线程一般情况下会死亡,也就是会被终结掉,该线程持有的对象占用heap都会被gc了,释放内存。

    2K20
    领券