我希望我能尽可能清楚地理解它。我正在维护有关舞台动作的数据,即当有人进入舞台和有人搬出时。我希望bigquery表为每个阶段的运动提供单一条目(由于我将对数据进行的查询类型)但是有两个进出的更新,所以这就是我正在做的事情;
搬出时:
一个。使用类似
的查询将截断的表复制到同一目标SELECT * FROM my_dataset.my_table WHERE id !="id"
湾为新行执行流式插入。
问题是,在复制操作后进行流式插入时会出现随机数据丢失。
我找到了这个链接:After recreating BigQuery table streaming inserts are not working?
已经提到在这种情况下在进行流插入之前应该有> 2分钟的延迟以避免数据丢失但是,我希望它是瞬时的,因为多个阶段的移动可能发生在少数几个秒。是否有解决方法或修复此问题?或者我是否必须在仅附加的基础上重新考虑我的完整过程,现在看起来不太可能?
答案 0 :(得分:0)
我是否必须在仅附加的基础上重新考虑我的整个过程?
我对你的具体案例的建议是不要在每一个“搬出”上截断表格。
假设您有标识最近行(时间戳或订单等)的字段,您可以使用类似
的内容轻松过滤旧行<?php
/**
* Extension of the default Yii Active Record class
*
* Edit this class to add custom behaviour to all the models used within the application
*
*/
class BaseModel extends CActiveRecord
{
/**
* Returns the static model of the specified AR class.
* Uses the class that called the model() by default
* @param string $className active record class name.
* @return static The static model class instance
*/
public static function model($className = null)
{
return parent::model($className !== null ? $className : get_called_class());
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param mixed $pk
* @param string $condition
* @param array $params
* @return static
*/
public function findByPk($pk,$condition='',$params=array())
{
return parent::findByPk($pk,$condition,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param string $condition
* @param array $params
* @return static
*/
public function find($condition='',$params=array())
{
return parent::find($condition,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param string $condition
* @param array $params
* @return static[]
*/
public function findAll($condition='',$params=array())
{
return parent::findAll($condition,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param $pk
* @param string $condition
* @param array $params
* @return static[]
*/
public function findAllByPk($pk,$condition='',$params=array())
{
return parent::findAllByPk($pk,$condition,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param $attributes
* @param string $condition
* @param array $params
* @return static
*/
public function findByAttributes($attributes,$condition='',$params=array())
{
return parent::findByAttributes($attributes,$condition,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param $attributes
* @param string $condition
* @param array $params
* @return static[]
*/
public function findAllByAttributes($attributes,$condition='',$params=array())
{
return parent::findAllByAttributes($attributes,$condition,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param $sql
* @param array $params
* @return static
*/
public function findBySql($sql,$params=array())
{
return parent::findBySql($sql,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* @param $sql
* @param array $params
* @return static[]
*/
public function findAllBySql($sql,$params=array())
{
return parent::findAllBySql($sql,$params);
}
/**
* This function exists only to help the IDE autodetect the returned class
* This will add a couple of milliseconds with every `with` usage
* @return static
*/
public function with()
{
return call_user_func_array('parent::with', func_get_args());
}
/**
* This function exists only to help the IDE autodetect the returned class
* @return static
*/
public function together()
{
return parent::together();
}
}
如果需要,您可以使用与上面相同的方法每天将“旧/非最新”行清除到截断表中
哪里提到过?
也许没有明确说明您的情况,但请检查Data availability部分 在How to change the template table schema阅读第三段(我觉得它是相关的)