有人可以解释猪身上的这个奇怪错误吗
Can somebody explain this weird error in pig
我在 pig 中使用宏,但是它抛出一个错误提示:未定义的别名 'result_1'.
我正在使用的宏:
define macro_result (source , metric_name , metric_value) returns result_metric
{
result_1= foreach $source generate
timestamp,
member_sk as id,
'$metric_name' as minor_metric,
'Lts_seo' as major_metric,
$metric_value as value;
$result_metric = result_1;
};
我将宏调用为:
page_views_to_jserp_from_job_detail = macro_result(metadata_final,'PAGE_VIEWS_TO_JSERP_FROM_JOB_DETAIL', PV_to_jserp_from_job_detail );
我将宏更改为此,错误似乎已解决(更改为粗体):
define macro_result (source , metric_name , metric_value) returns result_metric
{
***$result_metric***= foreach $source generate
timestamp,
member_sk as id,
'$metric_name' as minor_metric,
'Lts_seo' as major_metric,
$metric_value as value;
***-- $result_metric = result_1;***
};
最初导致错误的原因是什么?为什么我不能使用 result_1 作为中间步骤并将其存储在宏内的 result_metric 中?
我们不能将一个别名直接分配给另一个。
我们可以从一个别名投影所需的字段,return相同。
对于共享的用例:
$result_metric = FOREACH result_1 GENERATE *;
除非这两个别名之间的投影字段发生变化,否则不需要此步骤。
我在 pig 中使用宏,但是它抛出一个错误提示:未定义的别名 'result_1'.
我正在使用的宏:
define macro_result (source , metric_name , metric_value) returns result_metric
{
result_1= foreach $source generate
timestamp,
member_sk as id,
'$metric_name' as minor_metric,
'Lts_seo' as major_metric,
$metric_value as value;
$result_metric = result_1;
};
我将宏调用为:
page_views_to_jserp_from_job_detail = macro_result(metadata_final,'PAGE_VIEWS_TO_JSERP_FROM_JOB_DETAIL', PV_to_jserp_from_job_detail );
我将宏更改为此,错误似乎已解决(更改为粗体):
define macro_result (source , metric_name , metric_value) returns result_metric
{
***$result_metric***= foreach $source generate
timestamp,
member_sk as id,
'$metric_name' as minor_metric,
'Lts_seo' as major_metric,
$metric_value as value;
***-- $result_metric = result_1;***
};
最初导致错误的原因是什么?为什么我不能使用 result_1 作为中间步骤并将其存储在宏内的 result_metric 中?
我们不能将一个别名直接分配给另一个。
我们可以从一个别名投影所需的字段,return相同。
对于共享的用例:
$result_metric = FOREACH result_1 GENERATE *;
除非这两个别名之间的投影字段发生变化,否则不需要此步骤。