好吧,我想我在这里得到了一些东西。这是一个奇怪的...实际上,如果您具有完全相同的模式(字段模式),它就不起作用。
这是源表架构:
"schema": {
"fields": [
{
"name": "ID_CLIENT",
"type": "INTEGER",
"mode": "NULLABLE"
},
{
"name": "IDENTITE",
"type": "STRING",
"mode": "NULLABLE"
}
]
}
如果我使用浏览器界面 (bigquery.cloud.google.com) 中的复制功能,我会得到与预期完全相同的架构:
"schema": {
"fields": [
{
"name": "ID_CLIENT",
"type": "INTEGER",
"mode": "NULLABLE"
},
{
"name": "IDENTITE",
"type": "STRING",
"mode": "NULLABLE"
}
]
}
但是我不能从以下提取附加到复制的表:
SELECT ID_CLIENT + 1 AS ID_CLIENT, RIGHT(IDENTITE,12) AS IDENTITE FROM datasetid.client
尽管它返回相同的模式,至少从浏览器界面视图来看,它在内部返回以下模式:
"schema": {
"fields": [
{
"name": "ID_CLIENT",
"type": "INTEGER",
"mode": "REQUIRED"
},
{
"name": "IDENTITE",
"type": "STRING",
"mode": "NULLABLE"
}
]
}
这不是完全相同的模式(检查模式)。
更奇怪的是这个选择:
SELECT ID_CLIENT, IDENTITE FROM datasetid.client
返回此架构:
"schema": {
"fields": [
{
"name": "ID_CLIENT",
"type": "INTEGER",
"mode": "REQUIRED"
},
{
"name": "IDENTITE",
"type": "STRING",
"mode": "REQUIRED"
}
]
}
结论:
不要依赖来自浏览器界面的表模式信息,始终使用 Tables.get API。复制并没有真正按预期工作......