Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google analytics 平展谷歌分析数据(重复字段)不再有效_Google Analytics_Google Bigquery_Standardsql - Fatal编程技术网

Google analytics 平展谷歌分析数据(重复字段)不再有效

Google analytics 平展谷歌分析数据(重复字段)不再有效,google-analytics,google-bigquery,standardsql,Google Analytics,Google Bigquery,Standardsql,我们有一个高级Google Analytics帐户,可以访问行级别的事件数据。这些数据每天都会导出到Google Bigquery,每天都会在数据集中创建一个新表 直到一周前,我们还能够将谷歌分析数据导出到CSV,方法是将其展平到临时暂存表,然后将其导出到CSV。我们使用的查询如下所示: SELECT * FROM flatten([xxxxxxxx.ga_sessions_20140829],hits), flatten([xxxxxxxx.ga_sessions_20140

我们有一个高级Google Analytics帐户,可以访问行级别的事件数据。这些数据每天都会导出到Google Bigquery,每天都会在数据集中创建一个新表

直到一周前,我们还能够将谷歌分析数据导出到CSV,方法是将其展平到临时暂存表,然后将其导出到CSV。我们使用的查询如下所示:

SELECT * FROM 
    flatten([xxxxxxxx.ga_sessions_20140829],hits),
    flatten([xxxxxxxx.ga_sessions_20140828],hits),
    flatten([xxxxxxxx.ga_sessions_20140827],hits),
    flatten([xxxxxxxx.ga_sessions_20140826],hits)
昨天我注意到这个查询现在将抛出一个错误:

Cannot output multiple independently repeated fields at the same time. Found customDimensions_value and hits_product_productSKU
显然,与flatte()函数有关的内容发生了变化,因为hits\u product\u productSKU是hits字段的子项

我还尝试了一些查询历史记录中的旧查询,但它们也被破坏了。 没有发布说明提到任何更改,那么发生了什么


如何再次导出Google Analytics BigQuery导出文件中的所有内容?

我怀疑Google Analytics Premium生成的表已通过添加新列进行了扩充。添加列应该不会有问题,除非您的查询使用*选择器,并且其中一个新列恰好包含嵌套值


建议的解决方案:不要使用*,而是显式地询问您需要的列

如果您使用的是BigQuery Web控制台,请选择一个目标表,单击“允许大结果”,然后取消选中“展平结果”

如果您使用的是bq命令行工具:

bq query --allow_large_results --noflatten --destination_table NAME_OF_TABLE  "SELECT * from FLATTEN( [dataset], hits)"

这实际上是我上周提交的一个错误修复的结果,它可以防止您得到错误的结果

默认情况下,BigQuery会在返回所有查询结果之前将其展平,但我们只希望展平一个独立重复的字段,以避免数据的跨积扩展。错误在于,在某些情况下,我们对多个重复字段的检查没有考虑父记录的重复性,这导致我们无法展平一些独立重复的字段。这意味着我们可以返回平坦的行,其中独立重复的值实际上被“展平”为独立重复的值,而不是生成叉积,这实际上是一个错误的结果

您在这里看到的是更严格检查的结果:在我们尝试展平结果之前,您的输出模式中(至少)有两个重复字段

另一个需要注意的重要事项是,flatte([table value]、[field])函数只会展平指定为第二个参数的字段的重复性。当你说扁平化([xxxxxxxx.ga_sessions_20140829],hits)时,你只是在扁平化“hits”记录。如果您还想展平重复的子项(产品、促销等),则必须明确地为这些字段添加另一个展平,如:

展平(展平([xxxxxxxx.ga_sessions_20140829],点击),点击。产品)

--

您有几个选项可以让您的示例发挥作用:

1) 选择较少的字段。如果您只关心几个字段的平坦输出,那么可以通过显式地只选择您关心的字段,从查询结果中删除独立重复的字段


2) 添加更多平面。您需要在每个重复的字段上展平,这些字段看起来至少包括hits、hits.product和customDimensions。您可能会发现错误消息随后会抱怨不同的重复字段:在架构中的重复字段上添加更多扁平化,直到其工作。

在连接之前,您必须使用扁平化查询。只需选择错误中提到的字段并使用嵌套展平:

SELECT * FROM 
flatten(flatten(flatten([xxxxxxxx.ga_sessions_20140829],hits),customDimensions_value),hits_product_productSKU),
flatten(flatten(flatten([xxxxxxxx.ga_sessions_20140828],hits),customDimensions_value),hits_product_productSKU),
flatten(flatten(flatten([xxxxxxxx.ga_sessions_20140827],hits),customDimensions_value),hits_product_productSKU),    flatten(flatten(flatten([xxxxxxxx.ga_sessions_20140826],hits),customDimensions_value),hits_product_productSKU)

对于那些想要将GA数据导入关系数据库的人:请注意,嵌套模式实际上是将多个关系表放入一个嵌套结构中——它们是等效的,因此简单的扁平化并不是最好的解决方案:您想再次分离表! 这样可以在存储中节省大量空间,并且查询可能会更快

您可以将GA数据视为3个关系表:

  • 会话表
  • 命中表
  • 产品表
要获取会话表,可以使用以下命令

--会话表
挑选
*除了(点击,,
自定义尺寸),
CONCAT(“{”(
挑选
字符串_AGG(CONCAT(强制转换(索引为字符串),':“,值,”))
从…起
t、 customdimensions),“}”)作为customdimensions
从…起
`project.dataset.ga_sessions_20171031`AS t
customDimensions聚合为json字符串

与hits表类似:

——点击表
挑选
全视,
visitid,
访问开始时间,
h、 *除(产品、,
自定义维度、自定义度量、自定义变量、促销、实验),
CONCAT(“{”(
挑选
字符串_AGG(CONCAT(强制转换(索引为字符串),':“,值,”))
从…起
h、 customdimensions),“}”)作为HITSCSTOMDImensions,
CONCAT(“{”(
选择STRING_AGG(CONCAT(转换(索引为字符串),':',转换(值为字符串)))
来自h.custommetrics),“}”)作为hitsCustomMetrics
从…起
`project.dataset.ga_sessions_20171031`AS t,
t、 以h的形式命中
您可以添加促销和实验,就像我使用子选择对customDimensions所做的那样

使用fullvisitorid+VISITSTARTIME/visitid(GA会话包括午夜拆分:使用VISITSTARTIME而不是visitid!如果要忽略午夜拆分,请使用visitid-尽管拆分,它仍然保持不变)

对于产品,您需要将点击号添加到“会话id”以获得唯一标识符:

——产品表
挑选
全视,
visitid,
访问开始时间,
h、 hitNumber,
p、 *除(customdimensions、customMetrics)外,
CONCAT(“{”(
选择字符串_AGG(CONCAT(强制转换(索引为字符串),':“,值,”))
从p.customdimensions中,“}”)作为产品的自定义尺寸,
CONCAT(“{”(
选择STRING_AGG(CONCAT(转换(索引为字符串),':',转换(值为字符串)))
来自p.custommetrics),“}”)作为productsCustomMetrics
从…起
`project.dataset