Google bigquery 优化查询以避免;查询执行期间超出了资源“;

Google bigquery 优化查询以避免;查询执行期间超出了资源“;,google-bigquery,Google Bigquery,我已将此查询保存为视图: SELECT nth(1,CodAlm) as FirstCode, nth(1,DesAlm) as FirstDescription, last(CodAlm) as LastCode, Last(DesAlm) as LastDescription, max(DATE(DataTic)) as LastVisit, min(DATE(DataTic)) as FirstVisit, DATEDIFF(CURRENT_TIMESTAMP(),TIMEST

我已将此查询保存为视图:

SELECT nth(1,CodAlm) as FirstCode, 
nth(1,DesAlm) as FirstDescription, 
last(CodAlm) as LastCode, 
Last(DesAlm) as LastDescription, 
max(DATE(DataTic)) as LastVisit, 
min(DATE(DataTic)) as FirstVisit, 
DATEDIFF(CURRENT_TIMESTAMP(),TIMESTAMP(max(DATE(DataTic)))) as Diffdays,
count(distinct DATE(DataTic)) as countVisits, 
count(distinct CodAlm) as NumberCodes, 
sum(subtot) as Totalimport, 
TarCli, 
Last(nomcli) as Name, 
Last(cogcli) as LastName, 
Last(emailcli) as email, 
Last(sexcli) as gender 
FROM (SELECT CodAlm, DesAlm, DataTic,SubTot, TarCli, NomCli,CogCli,EmailCli,SexCli FROM [bime.Sales] where Year(DataTic)>2012 AND IsFirstLine="1" ORDER by TarCli, DataTic) 
group each by tarcli

但是,当我在此视图上运行任何查询时,bigquery将返回查询执行期间超出的资源。我认为orderby是我的问题的原因,但是我需要它来正确显示我的结果。如何正确地重写此查询?销售表有18个MILIN行。

一些你应该考虑和尝试的事情(如果你还没有做到这一点):

1) 你真的需要“每个人分组”吗?你试过只使用“分组方式”吗

2) 您是否尝试使用表而不是视图?您可以尝试“具体化”视图,以检查资源消耗是否减少

3) 你能切分数据吗?可能将每年或每月放在不同的表中(使用DataTic)。这将减少每个表的大小,从而减少资源使用


干杯 1) 你真的需要“每个人分组”吗?你试过只使用“分组方式”吗

2) 您是否尝试使用表而不是视图?您可以尝试“具体化”视图,以检查资源消耗是否减少

3) 你能切分数据吗?可能将每年或每月放在不同的表中(使用DataTic)。这将减少每个表的大小,从而减少资源使用


干杯 1) 你真的需要“每个人分组”吗?你试过只使用“分组方式”吗

2) 您是否尝试使用表而不是视图?您可以尝试“具体化”视图,以检查资源消耗是否减少

3) 你能切分数据吗?可能将每年或每月放在不同的表中(使用DataTic)。这将减少每个表的大小,从而减少资源使用


干杯 1) 你真的需要“每个人分组”吗?你试过只使用“分组方式”吗

2) 您是否尝试使用表而不是视图?您可以尝试“具体化”视图,以检查资源消耗是否减少

3) 你能切分数据吗?可能将每年或每月放在不同的表中(使用DataTic)。这将减少每个表的大小,从而减少资源使用


干杯

有关更多信息,请参见此问题:

该错误可能是由GROUP EATH by子句引起的,最可能的原因是密钥的分布不均匀(即,一个密钥具有不成比例的记录数)。你能看看你的数据分布,也许过滤掉任何歪斜的键吗


还请注意,不能保证每个GROUP BY都会保留ORDER BY,因此您需要在每个GROUP BY之后应用排序。如果要获得可靠的排序,您可能会发现使用分析函数(如FIRST_VALUE、NTH_VALUE和LAST_VALUE with OVER)(按tarcli ORDER按DataTic划分)而不是按每个值分组非常有用。

有关详细信息,请参阅此问题:

该错误可能是由GROUP EATH by子句引起的,最可能的原因是密钥的分布不均匀(即,一个密钥具有不成比例的记录数)。你能看看你的数据分布,也许过滤掉任何歪斜的键吗


还请注意,不能保证每个GROUP BY都会保留ORDER BY,因此您需要在每个GROUP BY之后应用排序。如果要获得可靠的排序,您可能会发现使用分析函数(如FIRST_VALUE、NTH_VALUE和LAST_VALUE with OVER)(按tarcli ORDER按DataTic划分)而不是按每个值分组非常有用。

有关详细信息,请参阅此问题:

该错误可能是由GROUP EATH by子句引起的,最可能的原因是密钥的分布不均匀(即,一个密钥具有不成比例的记录数)。你能看看你的数据分布,也许过滤掉任何歪斜的键吗


还请注意,不能保证每个GROUP BY都会保留ORDER BY,因此您需要在每个GROUP BY之后应用排序。如果要获得可靠的排序,您可能会发现使用分析函数(如FIRST_VALUE、NTH_VALUE和LAST_VALUE with OVER)(按tarcli ORDER按DataTic划分)而不是按每个值分组非常有用。

有关详细信息,请参阅此问题:

该错误可能是由GROUP EATH by子句引起的,最可能的原因是密钥的分布不均匀(即,一个密钥具有不成比例的记录数)。你能看看你的数据分布,也许过滤掉任何歪斜的键吗

还请注意,不能保证每个GROUP BY都会保留ORDER BY,因此您需要在每个GROUP BY之后应用排序。如果要获得可靠的排序,您可能会发现使用分析函数(如FIRST_VALUE、NTH_VALUE和LAST_VALUE with OVER)(按tarcli ORDER BY DataTic分区)而不是按分组非常有用。

1)我需要“GROUP EACH BY”,因为tarcli字段包含许多不同的值。2) 我使用视图是因为源表每次都会更改。我试图在表中具体化,但资源消耗并没有减少,那么,我该如何编写查询呢?是否使用UNION查询所有表?当做3) 您可以尝试使用union(将所有表放在FROM子句上)或在上层进行一些业务流程来处理。1)我需要“分组依据”,因为tarcli字段包含许多不同的值。2) 我使用视图是因为源表每次都会更改。我试图在表中具体化,但资源消耗并没有减少,那么,我该如何编写查询呢?是否使用UNION查询所有表?当做3) 您可以尝试使用union(将所有表放在FROM子句上)或在