2017-02-24 103 views
1

我们正在手动将数据存储表(即种类)(作为云存储中的备份)加载到Big Query中。在加载到Big Query之前是否有任何方法来转换(重命名等)数据存储列。它似乎支持E(提取)和L(加载)功能,但不支持在Big Query中加载数据存储类型备份时的T(转换)。 问题在于我们将column-key作为数据存储区中的主要字段,因此当类加载到Big Query中时,我们会看到具有名称“_key__.id”的列。 我们希望这个列加载名称'id'而不是'_key__.id'。所以只是想知道,有什么方法可以重新命名大查询中的列?
及时的帮助是高度赞赏。如何重命名Big Query中的列?

+1

[Update Big Query Table Schema]的可能重复(http://stackoverflow.com/questions/42395612/update-big-query-table-schema) –

回答

1

通过SQL查询方式支持ETL的“T”部分。您可以直接使用查询数据存储备份作为外部表(https://cloud.google.com/bigquery/external-data-sources)或首先加载到临时表中,然后运行SQL对其进行转换。 在标准SQL重命名将类似于以下内容:

SELECT * EXCEPT(oldname1, oldname2), oldname1 as newname1, oldname2 as newname2 FROM ... 

但是既然你提到的名字用点分隔:_key__.id它可能是嵌套场_key__存在类型的记录,所以SQL看起来像

SELECT * EXCEPT(_key__), _key__.id AS id FROM ... 
+0

感谢Mosha。你的答案有帮助。但看起来,我们需要做更多的PoC,因为我们无法在这种用例上找到好的编程示例。我们需要以编程方式对超过20-30个表进行Datastore备份的提取(E),在BIG查询中转换(T),然后加载(L)。不确定,如果所有这些都可以在没有任何人工干预的情况下由API支持。虽然我欣赏你的指示。 –