当我使用bq
命令行工具将查询结果保存到表中时,将创建该表,但没有数据被保存到该表中。
我还有其他一些可以正常工作的查询,但是由于某种原因,这个查询不起作用。
这是我正在使用的脚本:
#!/usr/bin/env bash
DATE=`date --date='TZ="America/Los_Angeles" yesterday 00:00' +%Y%m%d`
/usr/bin/bq --nouse_gce_service_account --headless --format none query --use_legacy_sql=false --destination_table example.table_$DATE --replace 'select * from example.table_source'
它使用所有正确的列定义创建表example.table_20180827
,但是无法填充数据。脚本的第二次运行实际上确实填充了数据。我没有任何错误。
我在BigQuery用户界面中看到了工作/查询,看起来不错:
Job ID ****:US.bqjob_***_***_1
Creation Time Aug 28, 2018, 6:00:04 AM
Start Time Aug 28, 2018, 6:00:07 AM
End Time Aug 28, 2018, 6:00:22 AM
User **@**.com
Bytes Processed 7.70 GB
Bytes Billed 7.71 GB
Slot Time (ms) 854 K
Query Priority Interactive
Destination Table ****
Write Preference Overwrite table
Use Legacy SQL false
它甚至向我收取所有数据费用。
另一个奇怪的是,当我手动运行脚本时不会发生这种情况。我首先想到的是这是通过crontab运行脚本的问题(环境问题等)。但是,如果我将作业设置为每分钟运行一次(* * * * *),则该作业可以正常运行并填满表格。
此脚本与其他脚本之间的唯一区别是,该脚本使用的是select *
而不是手动指定列。这可能是问题的原因吗?
我还应该注意,源表实际上是一个视图。一些子表是Google工作表支持的表。我认为这并不重要,但也许确实如此。