2017-06-15 4 views
1

ich von Legacy-SQL-Standard-SQL"enthält" in BigQuery Standard-SQL-

ich migrieren wollen hatte den folgenden Code in Legacy-SQL

SELECT 
    hits.page.pageTitle 
FROM [mytable] 
WHERE hits.page.pageTitle contains '%' 

Und ich versuchte, diese in Standard-SQL:

SELECT 
    hits.page.pageTitle 
FROM `mytable` 
WHERE STRPOS(hits.page.pageTitle, "%") 

Aber es gibt mir diese Fehlermeldung:

Error: Cannot access field page on a value with type ARRAY> at [4:21]

Antwort

2

Versuchen Sie dieses:

SELECT 
    hits.page.pageTitle 
FROM `table`, 
UNNEST(hits) hits 
WHERE REGEXP_CONTAINS(hits.page.pageTitle, r'%') 
LIMIT 1000 

In ga_sessions Schema, "Hits" ist ein ARRAY (das heißt, WIEDERHOLTEN-Modus). Sie müssen die Operation UNNEST anwenden, um mit Arrays in BigQuery zu arbeiten.

+0

Hallo @Will Danke. Aber es gibt mir nicht das gleiche Ergebnis wie Legacy. Wieso ist es so? – MFR

+0

Was unterscheidet sich vom Legacy-Ergebnis? Sie sollten in der Tat beide gleich sein. –

+0

Es gibt mir nur eine Reihe von Daten. – MFR