BigQuery,日期分区表和装饰器

时间:2017-01-18 22:44:17

标签: google-bigquery decorator

我熟悉使用"表装饰器"例如,查询表格,就像一周前一样,或者查询某个日期范围内的数据。

引入日期分区表会显示一个名为_PARTITIONTIME的伪列。 使用"日期装饰"语法,您可以将记录添加到表中的某个分区。

我想知道在场景后面是否也使用了伪列_PARTITIONTIME来支持表装饰器或直接的东西。

如果是,可以访问/更改它,就像我们对分区表的伪列一样吗?

它被称为_PARTITIONTIME还是_INSERTIONTIME?当然,两者都没有奏效。 :)

1 个答案:

答案 0 :(得分:1)

首先通过读出分区

来检查是否确实对表​​进行了分区
 protected void Page_Load(object sender, EventArgs e)
    {
        ServiceReference1.WebService1SoapClient cli = new ServiceReference1.WebService1SoapClient();
       String str= cli.HelloWorld("Send Me To DB");

    }

如果不是,您将收到错误: SELECT TIMESTAMP(partition_id) FROM [dataset.partitioned_table$__PARTITIONS_SUMMARY__]

然后是另一个重要步骤:要选择Cannot read partition information from a table that is not partitioned的值,您必须使用别名。

_PARTITIONTIME

但是当您在WHERE中使用时,它不是强制性的,只有在选择时才会使用。

SELECT
  _PARTITIONTIME AS pt,
  field1
FROM
  mydataset.table1

您始终可以使用装饰器引用一个分区表:#legacySQL SELECT field1 FROM mydataset.table1 WHERE _PARTITIONTIME > DATE_ADD(TIMESTAMP('2016-04-15'), -5, "DAY")