2017-03-22 6 views
0

BigQueryの標準SQLでこのクエリを変換してください。このエラーが発生しましたhits.page.hostname LIKE 'website.fr'でARRAYタイプの値のフィールドページにアクセスできません。その問題に対処するよう教えてください。クエリでBigQuery:テーブルをクエリするための標準SQLでエラーが発生しましたか?

#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 

答えて

1

、あなたはUNNEST(hits)によって返される要素へのエイリアスhitを与え、そしてUNNEST(customDimensions)によって返される要素へのエイリアスcustomDimension。配列ではなく特定のヒットを参照する場合は、代わりに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) 
+0

エリオット私はchnageしようとしたが、私は次の問題に直面している:「列名customDimensions曖昧である」私は私のhostame -for特定のヒットにフィルタリングする)と私のカスタム次元 – sPujade

+0

用アレイ上の後私はクエリを修正しようとしました:WHERE _TABLE_SUFFIX BETWEEN '20161025' AND '20161026' AND hit.page.hostname LIKE '%website.fr%' とhits.customDimension.valueはNULLではありません AND hit.page.pagePath LIKE ' %poiu% ' AND hit.type =' PAGE 'AND customDimension.index IN(1,11,14,27)しかし、次のエラーが表示されます。'タイプARRAYの値にフィールドcustomDimensionにアクセスできません。 ' – sPujade

+0

あなたは私の提案に実際に従っていませんでした。 'customDimensions'の代わりに' customDimension'を使います。 –

1

クエリで見つかった間違いがいくつかあります。私は訂正をしました、これがあなたを助けることを願っています。

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 
+0

多くのthks Harrishと私の後半の返事を申し訳ありません – sPujade

関連する問題