Sql 如何修复BigQuery中的计划查询未正确返回结果

Sql 如何修复BigQuery中的计划查询未正确返回结果,sql,google-bigquery,Sql,Google Bigquery,我已经在标准SQL中为BigQuery编写了一些查询,这些查询计划每天在UTC+2上午5点运行,但它们返回null或空结果 具体地说,查询查看的是前一天的数据,因此它们采用@run_date参数并减去1天,以获得正确的日期,该日期将用作列分区数据的_table_后缀 我已经测试了手动运行查询,既可以从控制台切换出@run_date作为当前_日期,也可以手动安排回填,使用当前日期作为运行日期 安装为 选择 COUNTIFevent\u name=first\u open和app\u info.in

我已经在标准SQL中为BigQuery编写了一些查询,这些查询计划每天在UTC+2上午5点运行,但它们返回null或空结果

具体地说,查询查看的是前一天的数据,因此它们采用@run_date参数并减去1天,以获得正确的日期,该日期将用作列分区数据的_table_后缀

我已经测试了手动运行查询,既可以从控制台切换出@run_date作为当前_日期,也可以手动安排回填,使用当前日期作为运行日期

安装为 选择 COUNTIFevent\u name=first\u open和app\u info.install\u source=manual\u install AS manualInstalls, COUNTIFevent\u name=first\u open和app\u info.install\u source manual\u安装为appStoreOtherInstalls, COUNTIFevent\u name=first\u作为installsTotal打开, COUNTIFevent\u name=app\u remove和user\u id在卸载时不为空, COUNTIFevent\u name=app\u remove和user\u id为NULL,因为卸载未注册, COUNTIFevent\u name=app\u作为卸载删除总计 来自“project.dataset.events”_*` 其中utable_suffix=CASTFORMAT_日期%Y%m%d,日期_SUB@run_date,间隔1天作为字符串 , 毛斯AS 选择 清点 选择 如果 REGEXP_container_id, 案例 当用户id为+237%时,则r\+23767 | 8[0-3]| 5[0-4] 当用户id喜欢+27%时,r\+2783 | 810 | 60[3-5]| 3[0-5]|[8-9]| 40 | 5[5-7]| 710 |[7-9]| 3 | 8 当用户id喜欢+225%时,则r\+2250 |[4-8][4-6] 当用户id为+242%时,则r\+24206[4-9] 终止 , 用户id, 作为一个网络, countDISTINCT用户标识为mau 来自“project.dataset.events”_*` 其中_table_后缀在日期%Y%m%d,日期之间_SUB@run_date,间隔30天作为字符串 和日期%Y%m%d,日期_SUB@run_date,间隔1天作为字符串 选择 日期%Y%m%d,日期_SUB@run_date,间隔1天作为字符串作为事件日期, 如果installs.manualInstalls不为NULL,installs.manualInstalls,0为manualInstalls, 如果installs.appStoreOtherInstalls不为NULL,则installs.appStoreOtherInstalls,0为appStoreOtherInstalls, IFinstalls.installsTotal不为NULL,installs.installsTotal,0为installsTotal, iInstalls.uninstallRegistered不为NULL,installs.uninstallRegistered,0为uninstallRegistered, iInstalls.UninstallUnregisted不为NULL,installs.UninstallUnregisted,0为uninstallNotRegistered, iInstalls.uninstallsTotal不为NULL,将.uninstallsTotal、0安装为uninstallsTotal, 如果maus.mau不为NULL,则maus.mau,0为mau, 如果maus.mauNetwork不为NULL,则maus.mauNetwork,0为mauNetwork 从安装、注册、DAU、MAU 我希望填充所有列,但它们是零填充的,因为它们是空的。名为maus的子查询块实际上返回结果,但它有一个更长的窗口-我怀疑我以前检索前一天数据的方式可能有逻辑错误


我非常感谢您的任何见解/建议

根本的问题是这些表格在凌晨5点根本不可用。处理BigQualy的FixBasic导出时需要考虑两个因素。 Firebase将当天的数据存储在events_intraday_*表中,当Firebase决定关闭该表时,会将其写入永久events_*表中。这个过程可能需要一些时间,可能需要一整天,尽管这种情况比较少见

然后,根据您在Firebase中的时区设置,这些表甚至会在当天晚些时候关闭


基本上,稍后运行查询,一切都会按预期进行。不幸的是,有时由于处理的运行方式比预期的要晚,这仍然不起作用,因此有两种选择-编写一个具有检查表可用性内部逻辑的自定义计划程序,或者以这样的方式编写查询,以便它们自己先检查数据可用性。

查看查询历史记录,看看使用的日期片段是什么。如果这在日志中不太明显。尝试使用SQL作为日志,将设置的参数插入表中,并查看如何启动查询。@Pentium10感谢您的响应。我已经看过了执行计划,在每个阶段,日期都是正确的。例如:$30:user_id,$31:_TABLE_后缀来自project.dataset.events,其中等于$31,'20190912'是有效的表名和后缀。还有其他建议吗?如果日期正确,那么我建议单独查询installs子查询块,以检查是否可以检索到所需的数据。纵观整件事,我看不出它有什么明显的问题。@pessolato感谢您的检查,我将尝试一下。