我熟悉使用"表装饰器"例如,查询表格,就像一周前一样,或者查询某个日期范围内的数据。
引入日期分区表会显示一个名为_PARTITIONTIME的伪列。 使用"日期装饰"语法,您可以将记录添加到表中的某个分区。
我想知道在场景后面是否也使用了伪列_PARTITIONTIME来支持表装饰器或直接的东西。
如果是,可以访问/更改它,就像我们对分区表的伪列一样吗?
它被称为_PARTITIONTIME还是_INSERTIONTIME?当然,两者都没有奏效。 :)
答案 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")