Big Query Tables 中列的默认值

Posted

技术标签:

【中文标题】Big Query Tables 中列的默认值【英文标题】:Default values for columns in Big Query Tables 【发布时间】:2016-10-04 01:15:22 【问题描述】:

有没有办法在大查询中为表中的列设置默认值?我想将“false”设置为布尔数据类型列的默认值。

【问题讨论】:

您应该根据自己的需要进行更多扩展。 【参考方案1】:

可空列可以(通常)具有 NULL 默认值,但 BigQuery 中没有其他默认概念(您要么插入特定值,要么省略该值,它将具有 NULL 值)。

也就是说,如果您想将原始表包装在视图中,您可以将 NULL 列值映射到您喜欢的任何默认值。

【讨论】:

【参考方案2】:

BigQuery 中的列没有默认值 简单的方法就是使用 NULL(在大多数情况下,这应该可以从需求预期中接受) 还要考虑这方面的成本 - 将 NULL 存储为默认成本为零而不是存储实际值将花费您的列大小乘以具有默认值的行数

如果 NULL 对您有用,但您仍然需要在应用程序中使用真正的默认值 - 您可以使用字段描述来存储有关该字段的一些元数据,包括默认值,以便应用程序能够检索它并根据应用程序逻辑使用它

在 BigQuery 中 - 查看是公开真实默认值的最佳方式

【讨论】:

关于成本,如果列是NOT NULL,则不必存储DEFAULT 值,至少在DEFAULT 或可空性改变之前不必存储。跨度> 【参考方案3】:

虽然您无法在表级别设置默认值,但您可以在插入时在 SQL 中执行此操作,前提是这适合您的目的。你可以使用IF()conditional expression,比如:

SELECT IF(field IS NOT NULL, field, "default") from `table`

事实上,你可以随心所欲地做任何条件表达式。

【讨论】:

以上是关于Big Query Tables 中列的默认值的主要内容,如果未能解决你的问题,请参考以下文章

将序列值设置为 HSQL 中列的默认值

代码优先迁移中列的 EF6 Oracle 默认值

SQL Server:通过查询找出列的默认值

如何复制临时表中列的默认约束?

cassandra中列的默认排序顺序?

如何使用默认值修改列的数据类型