2016-11-03 5 views
0

Ich habe die folgende Abfrage:BigQuery Fehler: nicht wiederholt Feld Partition auf hits.product.sku

SELECT 
    a.fv fv, 
    a.v v, 
    a.sku asku 
    b.sku bsku from(
    SELECT 
    fv, 
    v, 
    sku from(FLATTEN((
     SELECT 
      fullvisitorid fv, 
      visitid v, 
      hits.product.productsku sku, 
      hits.product.isclick click 
     FROM (TABLE_DATE_RANGE([dataset_id], DATE_ADD(CURRENT_DATE(), -5, 'day'), DATE_ADD(CURRENT_DATE(), -0, 'day'))), 
      (TABLE_DATE_RANGE([dataset_id_intraday_], DATE_ADD(CURRENT_DATE(), -2, 'day'), DATE_ADD(CURRENT_DATE(), 0, 'day')))), hits.product)) 
    WHERE 
    1 = 1 
    AND click IS NOT NULL 
    GROUP EACH BY 
    fv, 
    v, 
    sku) a 
LEFT JOIN EACH (
    SELECT 
    fv, 
    v, 
    sku from(FLATTEN((
     SELECT 
      fullvisitorid fv, 
      visitid v, 
      hits.product.productsku sku, 
      hits.ecommerceaction.action_type act 
     FROM (TABLE_DATE_RANGE([dataset_id], DATE_ADD(CURRENT_DATE(), -5, 'day'), DATE_ADD(CURRENT_DATE(), -0, 'day'))), 
      (TABLE_DATE_RANGE([dataset_id._intraday_], DATE_ADD(CURRENT_DATE(), -2, 'day'), DATE_ADD(CURRENT_DATE(), 0, 'day')))), hits.product)) 
    WHERE 
    1 = 1 
    AND act = '6') b 
ON 
    a.fv = b.fv 
    AND a.v = b.v 
    AND a.sku = b.sku 

Diese Abfrage ist nur ein Beispiel für das Problem, das wir hier haben, werden. Wenn wir versuchen, es zu laufen, bekommen wir den Fehler:

Error: Cannot partition on repeated field hits.product.sku 

Aber wir konnten nicht herausfinden, was los ist.

Grundsätzlich gibt es zwei Gruppen: a die Gruppe ist, wo wir skus bringen und wenn sie alle Klicks hatte. Gruppe b wir beobachten nur, ob der angegebene SKU gekauft wurde oder nicht.

Dann passen wir left join an fullvisitors, ihre session id und jede sku.

Aber auch wenn wir versucht, die FLATTEN Funktion wenden wir immer noch die gleiche Fehlermeldung haben.

Wir wissen, dass wir etwas falsch machen, konnte aber nicht so weit finden, was es ist.

Gibt es einen Fehler in der Abfrage?

Vielen Dank im Voraus,

+0

Beachten Sie, dass Sie weniger wahrscheinlich diese Art von Problemen zu treffen, wenn [Standard-SQL] (https: // cloud.google.com/bigquery/docs/reference/standard-sql/) in BigQuery. Für Unterschiede zwischen herkömmlichen und Standard-SQL, werfen Sie einen Blick auf die [Migrationsleitfaden] (https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql). –

+0

Wir werden jetzt alle Abfragen auf die Standardversion migrieren. Die Vorteile sind auch ziemlich gut, also werden wir hoffentlich mehrere Probleme damit lösen. Danke für den Tipp! –

Antwort

0

Bitte überprüfen Sie die meisten inneren SELECTs
ich glaube, es könnte ein Problem mit „falschen Schreibweise“ die Feldnamen sein.

ich Ihre ganze Abfrage gerade versucht, und es funktionierte für mich - wenn ich geändert hits.product.sku zu hits.item.productsku

+0

Danke für die Hilfe Mikhail. Ich habe versucht, die inneren Selektionen auszuführen und sie arbeiten individuell normal. Nur wenn ich beides in der "Gruppen" -Operation kombiniere, bekomme ich diesen Fehler. Auch versucht, die Feldnamen zu ändern, aber keinen Erfolg. Ich werde versuchen, es mit einer anderen Art von Abfrage zu beheben –