2017-03-22 2 views
0

Pouvez-vous m'aider s'il vous plaît avec cette conversion de cette requête en SQL standard pour BigQuery? J'ai cette erreur Impossible d'accéder à la page de champ sur une valeur de type ARRAY> sur hits.page.hostname LIKE 'website.fr'. S'il vous plaît, dites-moi de régler ce problème pour le corriger.BigQuery: erreur avec standard-SQL pour interroger une table?

#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 

Répondre

1

Dans votre requête, vous donnez l'alias hit aux éléments retournés par UNNEST(hits) et l'alias customDimension aux éléments retournés par UNNEST(customDimensions). Si vous souhaitez faire référence à un hit particulier plutôt qu'au tableau, utilisez à la place hit et si vous souhaitez faire référence à une seule dimension personnalisée, utilisez plutôt customDimension. Par exemple, votre filtre peut être quelque chose comme:

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

Elliot j'ai essayé de chnage mais je suis face à la question suivante: « Nom de la colonne customDimensions est ambiguë: » Je veux filtrer sur un coup particulier -pour mon hostame) et après sur un tableau pour ma dimension personnalisée – sPujade

+0

J'ai essayé de modifier la requête: WHERE _TABLE_SUFFIX ENTRE '20161025' ET '20161026' ET hit.page.hostname LIKE '% website.fr%' ET hits.customDimension.value EST PAS NULL ET hit.page.pagePath LIKE ' % poiu% ' ET hit.type =' PAGE 'et customDimension.index IN (1,11,14,27) mais j'ai eu l'erreur suivante:' Impossible d'accéder au champ customDimension sur une valeur avec le type ARRAY 'Malheureusement :-( – sPujade

+0

Vous n'avez pas suivi ma suggestion de en utilisant 'customDimension' au lieu de' customDimensions'. –

1

Il ya quelques erreurs que j'ai trouvées dans la requête. J'ai fait les corrections, j'espère que cela vous aidera.

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

Beaucoup thich Harrish et désolé pour mon retard de réponse – sPujade