2016-06-19 3 views
0

Ich habe 2 Tabellen Bestellungen und order_itemsPig - Wie referenzieren Sie Spalten in einem FOREACH nach einem JOIN, wenn Sie Positionsnotation verwenden?

Auftragstabelle enthält (order_id, order_date, order_customer_id, order_status, order_month) order_items enthält (order_item_id, order_item_order_id, order_item_product_id, order_item_quantity, order_item_subtotal, order_item_product_price)

die Tische gefügt von orders.order_id und order_items.order_item_order_id
Der Datentyp wird nicht angegeben, daher wird die Positionsnotation verwendet.

orders = LOAD '/user/horton/orders' USING PigStorage(','); 
order_items = LOAD '/user/horton/orders' USING PigStorage(','); 
ordersjoin = JOIN orders BY $0, order_items BY $1 ; 
orderrevenuebydate = FOREACH ordersjoin GENERATE orders::$1,  order_items::$4; 

bekomme ich folgende Fehlermeldung, wenn der foreach für orderrevenuebydate

Unerwartetes Zeichen zu erzeugen versuchen, '$' 2016.06.19 19: 17: 22.757 [main] ERROR org.apache. pig.tools.grunt.Grunt - ERROR 1200: unerwartetes Zeichen '$' Details bei Logfile: /home/6301dd50e3fac19f7c90fbf9898496/pig_1466356957630.log

Antwort

0

Sie müssen direkt die Stellenschreibweise fr Referenz om die Beziehung.

Zum Beispiel, wenn Sie order_date und order_item_subtotal Felder aus ordersjoin Beziehung zu erzeugen, verwenden Sie die unten Aussage.

orderrevenuebydate = FOREACH ordersjoin GENERATE $1, $9; 

Beachten Sie, dass nach der Operation kommen, ordersjoin Beziehung alle Attribute aus zwei Beziehungen enthalten.

+0

Das hat funktioniert. Ich danke dir sehr. –

Verwandte Themen