我希望能够像这样更新我的数据表:
608更新中的每一个都代表一个日期:
基本上我的jobSpec
就像这样:
var jobSpec = {
configuration: {
load: {
destinationTable: {
projectId: projectId,
datasetId: 'Facebook',
tableId: tableId
},
allowJaggedRows: true,
writeDisposition: 'WRITE_TRUNCATE',
schema: {
fields: [
{name: 'Page_ID', type: 'STRING'},
{name: 'Post_ID', type: 'STRING'},
{name: 'Post_creation_date', type: 'STRING'},
{name: 'Post_name', type: 'STRING'},
{name: 'Post_message', type: 'STRING'}
]
}
}
}
};
这是我的工作:
BigQuery.Jobs.insert(jobSpec, projectId, data);
我尝试按'WRITE_TRUNCATE'
重新'WRITE_APPEND'
,但它正在合并我的所有更新。我想跟踪它们,就像我在截图中看到的那样。
谢谢!
答案 0 :(得分:1)
不确定我是否完全理解你的问题但是为了创建像ga_sessions这样的表,你所要做的就是创建具有相同前缀的表,并为它们更改一些标识。
例如,如果您转到BigQuery WebUI并创建一个名为“test_1”的表,然后创建另一个表,就像第一个名为“test_2”的那样,您将看到与ga_sessions相同的结果(但这次您将见 test_(2))。
如果您想使用API,您必须执行以下操作:
BigQuery.Jobs.insert(jobSpec, projectId, data, table_id='test_1');
BigQuery.Jobs.insert(jobSpec, projectId, data, table_id='test_2');
因此,您应该更改“write_append”和“write_truncate”,而不是表名。
这种类型的分区更“手动”,您可以创建不同的表格。
BigQuery也提供了更自动的选项,即partitioned table。这种类型的表与ga_sessions有点不同,因为你所拥有的只是一个表。此表中插入的所有数据都表示在4月28日将自动分配到此时间戳。如果第二天您插入了更多数据,它会自动分配到4月29日的时间戳,依此类推。
稍后查询您的数据,您可以使用_PARTITIONTIME
仅选择所需的时间戳。
这是一个在项目中确定哪一个对你更有意义的问题。