Google bigquery BigQuery:查询表的标准sql出错?
您能帮我在标准sql for BigQuery中转换此查询吗?我遇到此错误,无法访问hits.page.hostname(如“website.fr”)处类型为ARRAY>的值上的字段页。请告诉我如何处理这个问题以纠正它Google bigquery BigQuery:查询表的标准sql出错?,google-bigquery,bigquery-standard-sql,Google Bigquery,Bigquery Standard Sql,您能帮我在标准sql for BigQuery中转换此查询吗?我遇到此错误,无法访问hits.page.hostname(如“website.fr”)处类型为ARRAY>的值上的字段页。请告诉我如何处理这个问题以纠正它 #standardSQL SELECT DATE,MAX(CASE WHEN customDimensions.index = 1 THEN customDimensions.value END) AS CUSTOMDIMENSIONS_VALUE, visitNumber
#standardSQL
SELECT DATE,MAX(CASE
WHEN customDimensions.index = 1 THEN customDimensions.value END) AS CUSTOMDIMENSIONS_VALUE, visitNumber, fullvisitorid, visitStartTime, SEC_TO_TIMESTAMP(visitStartTime) AS humain, TIME (visitStartTime+3600 ) AS Paris_timezone, hits.hour, hits.minute, CONCAT(fullvisitorid, STRING(visitid)) AS sessionid, MAX(CASE
WHEN hits.customDimensions.index = 11 THEN hits.customDimensions.value END) AS localproductname,
device.deviceCategory,
hits.page.pagePath,
IFNULL(hits.page.pagePathLevel2,'') AS HITS_PAGE_PAGEPATHLEVEL2,
IFNULL(hits.page.pagePathLevel3,'') AS HITS_PAGE_PAGEPATHLEVEL3,
MAX(CASE WHEN hits.customDimensions.index = 14 THEN hits.customDimensions.value END) AS assetpurpose,
MAX(CASE WHEN hits.customDimensions.index = 27 THEN hits.customDimensions.value END) AS pathology,
hits.hitNumber
FROM `85801771.ga_sessions*`
CROSS JOIN UNNEST(customDimensions) AS customDimension
CROSS JOIN UNNEST(hits) AS hit
WHERE _TABLE_SUFFIX BETWEEN '20161025' AND '20161026'
AND hits.page.hostname LIKE 'website.fr'
AND customDimensions.value != "null"
AND hits.page.pagePath LIKE 'poiu'
AND hits.type = 'PAGE'
AND (customDimensions.index = 1
OR hits.customDimensions.index = 11
OR hits.customDimensions.index = 14
OR hits.customDimensions.index = 27 )
GROUP BY
DATE,
visitStartTime,
humain,
Paris_timezone,
hits.hour,
hits.minute,
fullVisitorId,
sessionid,
visitNumber,
device.deviceCategory,
hits.page.pagePath,
HITS_PAGE_PAGEPATHLEVEL2,
HITS_PAGE_PAGEPATHLEVEL3,
hits.hitNumber
ORDER BY DATE,
visitStartTime,
device.deviceCategory,
humain,
Paris_timezone,
hits.hour,
hits.minute,
fullVisitorId,
sessionid,
visitNumber,
hits.page.pagePath,
HITS_PAGE_PAGEPATHLEVEL2,
HITS_PAGE_PAGEPATHLEVEL3,
hits.hitNumber DESC
LIMIT 100000
在查询中,将别名
hit
指定给unest(hits)
返回的元素,将别名customDimension
指定给unest(customDimensions)
返回的元素。如果要引用特定命中而不是数组,请改用hit
;如果要引用单个自定义维度,请改用customDimension
。例如,您的筛选器可能类似于:
WHERE _TABLE_SUFFIX BETWEEN '20161025' AND '20161026' AND
hit.page.hostname LIKE '%website.fr%' AND
customDimension.value != "null" AND
hit.page.pagePath LIKE '%poiu%' AND
hit.type = 'PAGE' AND
customDimension.index IN (1, 11, 14, 27)
在查询中,将别名
hit
指定给unest(hits)
返回的元素,将别名customDimension
指定给unest(customDimensions)
返回的元素。如果要引用特定命中而不是数组,请改用hit
;如果要引用单个自定义维度,请改用customDimension
。例如,您的筛选器可能类似于:
WHERE _TABLE_SUFFIX BETWEEN '20161025' AND '20161026' AND
hit.page.hostname LIKE '%website.fr%' AND
customDimension.value != "null" AND
hit.page.pagePath LIKE '%poiu%' AND
hit.type = 'PAGE' AND
customDimension.index IN (1, 11, 14, 27)
我在查询中发现了几个错误。我做了更正,希望这能帮助你
SELECT DATE,MAX(CASE
WHEN customDimensions.index = 1 THEN customDimensions.value END) AS CUSTOMDIMENSIONS_VALUE, visitNumber, fullvisitorid, visitStartTime, TIMESTAMP_SECONDS(visitStartTime) AS humain, EXTRACT(DATE FROM TIMESTAMP_SECONDS(visitStartTime) AT TIME ZONE 'Paris_timezone') AS Paris_timezone,
hits.hour, hits.minute, CONCAT(CAST(fullVisitorId AS string),CAST(visitId AS string)) AS sessionid, MAX(CASE
WHEN customDimensions.index = 11 THEN customDimensions.value END) AS localproductname,
device.deviceCategory,
hits.page.pagePath,
IFNULL(hits.page.pagePathLevel2,'') AS HITS_PAGE_PAGEPATHLEVEL2,
IFNULL(hits.page.pagePathLevel3,'') AS HITS_PAGE_PAGEPATHLEVEL3,
MAX(CASE WHEN customDimensions.index = 14 THEN customDimensions.value END) AS assetpurpose,
MAX(CASE WHEN customDimensions.index = 27 THEN customDimensions.value END) AS pathology,
hits.hitNumber
FROM `85801771.ga_sessions*`
CROSS JOIN UNNEST(customDimensions) AS customDimensions
CROSS JOIN UNNEST(hits) AS hits
WHERE _TABLE_SUFFIX BETWEEN '20161025' AND '20161026'
AND hits.page.hostname LIKE 'website.fr'
AND customDimensions.value != "null"
AND hits.page.pagePath LIKE 'poiu'
AND hits.type = 'PAGE'
AND (customDimensions.index = 1
OR customDimensions.index = 11
OR customDimensions.index = 14
OR customDimensions.index = 27 )
GROUP BY
DATE,
visitStartTime,
humain,
Paris_timezone,
hits.hour,
hits.minute,
fullVisitorId,
sessionid,
visitNumber,
device.deviceCategory,
hits.page.pagePath,
HITS_PAGE_PAGEPATHLEVEL2,
HITS_PAGE_PAGEPATHLEVEL3,
hits.hitNumber
ORDER BY DATE,
visitStartTime,
device.deviceCategory,
humain,
Paris_timezone,
hits.hour,
hits.minute,
fullVisitorId,
sessionid,
visitNumber,
hits.page.pagePath,
HITS_PAGE_PAGEPATHLEVEL2,
HITS_PAGE_PAGEPATHLEVEL3,
hits.hitNumber DESC
LIMIT 100000
我在查询中发现了几个错误。我做了更正,希望这能帮助你
SELECT DATE,MAX(CASE
WHEN customDimensions.index = 1 THEN customDimensions.value END) AS CUSTOMDIMENSIONS_VALUE, visitNumber, fullvisitorid, visitStartTime, TIMESTAMP_SECONDS(visitStartTime) AS humain, EXTRACT(DATE FROM TIMESTAMP_SECONDS(visitStartTime) AT TIME ZONE 'Paris_timezone') AS Paris_timezone,
hits.hour, hits.minute, CONCAT(CAST(fullVisitorId AS string),CAST(visitId AS string)) AS sessionid, MAX(CASE
WHEN customDimensions.index = 11 THEN customDimensions.value END) AS localproductname,
device.deviceCategory,
hits.page.pagePath,
IFNULL(hits.page.pagePathLevel2,'') AS HITS_PAGE_PAGEPATHLEVEL2,
IFNULL(hits.page.pagePathLevel3,'') AS HITS_PAGE_PAGEPATHLEVEL3,
MAX(CASE WHEN customDimensions.index = 14 THEN customDimensions.value END) AS assetpurpose,
MAX(CASE WHEN customDimensions.index = 27 THEN customDimensions.value END) AS pathology,
hits.hitNumber
FROM `85801771.ga_sessions*`
CROSS JOIN UNNEST(customDimensions) AS customDimensions
CROSS JOIN UNNEST(hits) AS hits
WHERE _TABLE_SUFFIX BETWEEN '20161025' AND '20161026'
AND hits.page.hostname LIKE 'website.fr'
AND customDimensions.value != "null"
AND hits.page.pagePath LIKE 'poiu'
AND hits.type = 'PAGE'
AND (customDimensions.index = 1
OR customDimensions.index = 11
OR customDimensions.index = 14
OR customDimensions.index = 27 )
GROUP BY
DATE,
visitStartTime,
humain,
Paris_timezone,
hits.hour,
hits.minute,
fullVisitorId,
sessionid,
visitNumber,
device.deviceCategory,
hits.page.pagePath,
HITS_PAGE_PAGEPATHLEVEL2,
HITS_PAGE_PAGEPATHLEVEL3,
hits.hitNumber
ORDER BY DATE,
visitStartTime,
device.deviceCategory,
humain,
Paris_timezone,
hits.hour,
hits.minute,
fullVisitorId,
sessionid,
visitNumber,
hits.page.pagePath,
HITS_PAGE_PAGEPATHLEVEL2,
HITS_PAGE_PAGEPATHLEVEL3,
hits.hitNumber DESC
LIMIT 100000
Elliot我试图更改,但我面临以下问题:“列名customDimensions不明确”我想筛选特定的命中-对于我的主机名),然后在自定义维度的数组上我尝试修改查询:其中_TABLE_后缀在'20161025'和'20161025'之间“20161026”和hit.page.hostname(如“%website.fr%”和hits.customDimension.value)在(1,11,14,27)中不为NULL,hit.page.pagePath(如“%poiu%”和hit.type=“page”和customDimension.index)不为空,但我遇到以下错误:“无法访问类型为数组的值上的字段customDimension”:-(您实际上没有按照我的建议使用
customDimensions
而不是customDimensions
。很抱歉,Elliott,我将更改它并重新测试customDimensions
hits中的字段。您可能需要:交叉连接未测试(hits)作为交叉连接未测试(hit.customDimensions)作为customDimension
Elliot,我试图更改,但我面临以下问题:“列名称customDimensions不明确”,我想根据特定的命中率进行筛选-针对我的主机名)在为自定义维度创建数组之后,我尝试修改查询:其中_TABLE_后缀介于“20161025”和“20161026”之间,hit.page.hostname(如“%website.fr%”和hits.customDimension.value)不为NULL,hit.page.pagePath(如“%poiu%”和hit.type=”page'和(1,11,14,27)中的customDimension.index,但我遇到以下错误:“无法访问类型为ARRAY的值上的字段customDimension”,很遗憾:-(您实际上没有按照我的建议使用customDimensions
而不是customDimensions
。很抱歉,Elliott,我将更改它并重新测试customDimensions
hits中的字段。您可能需要:交叉连接未测试(hits)作为交叉连接未测试(hit.customDimensions)作为customDimension
许多thks Harrish和抱歉我的答复太晚了许多thks Harrish和抱歉我的答复太晚了