Um nó de atribuição executa um script curto (ODPS SQL, Python 2 ou Shell) e transmite a saída diretamente como parâmetro para os nós subsequentes. Use esse recurso para compartilhar valores dinâmicos, como resultados de consultas ou strings calculadas, entre nós de um fluxo de trabalho sem precisar de uma tabela intermediária.
Principais restrições: O parâmetro outputs não pode exceder 2 MB. A transmissão dos parâmetros ocorre apenas para os nós imediatamente subsequentes.
Pré-requisitos
Antes de começar, verifique se você tem:
Um workspace do DataWorks com Standard Edition ou superior
Um usuário RAM adicionado ao workspace com permissões de desenvolvedor
Como funciona
O nó de atribuição transfere dados por meio de um parâmetro de saída gerado pelo sistema chamado outputs.
Nó de atribuição (produtor): O DataWorks captura a última saída do script e a atribui a
outputs.-
Nó subsequente (consumidor): Crie um parâmetro de entrada no nó subsequente, mapeie-o para
outputse referencie-o no script usando a sintaxe${param}.
O formato de saída de outputs varia conforme a linguagem do script:
|
Linguagem |
Source |
Formato de saída |
|
ODPS SQL |
Última instrução |
Array bidimensional |
|
Python 2 |
Última instrução |
Array unidimensional (separado por |
|
Shell |
Última instrução |
Array unidimensional (separado por |
Configure um nó de atribuição e passar a saída para um nó Shell
O exemplo a seguir demonstra o fluxo de trabalho completo: configure um nó de atribuição ODPS SQL, conectá-lo a um nó Shell subsequente e referenciar o valor transmitido no script Shell.
Etapa 1: Configure o nó de atribuição
Faça login no console do DataWorks. No painel de navegação à esquerda, clique em Data Development & O&M > Data Development.
-
No fluxo de trabalho, crie e abra um nó de atribuição. Na página de configuração, selecione ODPS SQL como linguagem e escreva a consulta.
select * from xc_dpe_e2.xc_rpt_user_info_d where dt='20191008' limit 10; (Opcional) Clique em Properties no painel direito e selecione a aba Input and Output Parameters para confirme que o DataWorks criou automaticamente um parâmetro de saída chamado
outputs.
Etapa 2: Configure o nó Shell
Crie um nó Shell. Na tela do fluxo de trabalho, arraste uma conexão do nó de atribuição para o nó Shell para defini-lo como subsequente.
Na página de configuração do nó Shell, clique em Properties no painel direito e selecione a aba Input and Output Parameters.
Na seção Input Parameters, clique em Create.
-
Na caixa de diálogo, selecione o parâmetro
outputsdo nó de atribuição e defina um nome para o parâmetro de entrada do nó atual, comoparam.Esta etapa cria uma dependência entre o nó Shell e o nó de atribuição.
-
Referencie o valor no script do nó Shell usando a sintaxe
${param}:${param},${param[0]}e${param[0][1]}são sintaxes de variável do DataWorks, não Shell padrão. O DataWorks substitui estaticamente esses espaços reservados pelos valores reais antes de enviar o script para execução.echo '${param}'; echo 'First row: '${param[0]}; echo 'Second field of the first row: '${param[0][1]};
Etapa 3: Execute e verifique
Abra o fluxo de negócios e clique em Run na barra de ferramentas para execute o fluxo de trabalho. A saída esperada é semelhante à seguinte:
Full result set: value1,value2
value3,value4
First row: value1,value2
Second field of the first row: value2
Para testar em um ambiente agendado, envie o nó para o ambiente de desenvolvimento, acesse o Operation Center e use o backfill de dados para validar a execução.
Exemplos por linguagem
Os exemplos a seguir mostram o código do nó de atribuição, o script de referência do nó Shell subsequente e a saída esperada para cada linguagem compatível.
Transmitir um resultado ODPS SQL
O resultado de um SELECT SQL é transmitido como um array bidimensional.
Nó de atribuição
select * from xc_dpe_e2.xc_rpt_user_info_d where dt='20191008' limit 2;
Nó Shell (parâmetro de entrada param mapeado para outputs)
# Full 2D array
echo "Full result set: ${param}"
# First row (1D array)
echo "First row: ${param[0]}"
# Second field of the first row
echo "Second field of the first row: ${param[0][1]}"
Saída esperada
Full result set: value1,value2
value3,value4
First row: value1,value2
Second field of the first row: value2
Transmitir uma saída Python 2
A saída da última instrução print é dividida por vírgulas e transmitida como um array unidimensional.
Nó de atribuição
print "hello,dataworks";
Nó Shell (parâmetro de entrada param mapeado para outputs)
# Full 1D array
echo "Full result set: ${param}"
# Elements by index
echo "First element: ${param[0]}"
echo "Second element: ${param[1]}"
Saída esperada
Full result set: "hello","dataworks"
First element: hello
Second element: dataworks
Transmitir uma saída Shell
A saída da última instrução echo é dividida por vírgulas e transmitida como um array unidimensional.
Nó de atribuição
echo "hello,dataworks";
Nó Shell (parâmetro de entrada param mapeado para outputs)
# Full 1D array
echo "Full result set: ${param}"
# Elements by index
echo "First element: ${param[0]}"
echo "Second element: ${param[1]}"
Saída esperada
Full result set: "hello","dataworks"
First element: hello
Second element: dataworks
Limitações
|
Restrição |
Detalhe |
|
Escopo |
A transmissão dos parâmetros ocorre apenas para os nós imediatamente subsequentes; não é possível pular nós na cadeia de dependências. |
|
Tamanho |
O parâmetro |
|
Sem comentários |
Não inclua comentários no código do nó de atribuição. Comentários interferem na análise da saída e podem causar falha no nó ou gerar valores incorretos. |
|
Sem cláusula |
A cláusula |
Próximos passos
Nós de loop: Para transmitir a saída de um nó de atribuição para um nó
for-eachoudo-while, consulte Configure um nó for-each e Configure um nó do-while.Atribuição de parâmetros integrada: Vários tipos de nós oferecem suporte à atribuição de parâmetros integrada e podem alcançar o mesmo resultado sem um nó de atribuição separado, incluindo: EMR Hive, Hologres SQL, EMR Spark SQL, AnalyticDB for PostgreSQL, ClickHouse SQL e MySQL.