O DataWorks oferece o nó for-each para iterar sobre um conjunto de resultados de um nó de atribuição. Você também pode personalizar o fluxo de trabalho dentro do nó for-each. Este tópico apresenta um exemplo em que um nó for-each itera duas vezes sobre a saída de um nó de atribuição e imprime a contagem atual do loop em cada iteração, demonstrando sua lógica e configuração.
Pré-requisitos
Antes de configurar o nó, compreenda sua lógica para evitar erros. Para obter mais informações, consulte How for-each nodes work.
Procedimento
O nó for-each é geralmente utilizado em conjunto com um nó de atribuição. O procedimento geral é descrito a seguir.

-
Definir dependências do nó
Um nó for-each deve depender de um nó de atribuição. Para detalhes de configuração, consulte Create and configure a workflow.
-
Passar o conjunto de resultados
Use o parâmetro de saída integrado outputs em Parameters do nó de atribuição como parâmetro de entrada em Parameters do nó for-each. Para detalhes de configuração, consulte Configure an Assignment Node.
-
Recuperar parâmetros nos nós internos
Personalize o fluxo de trabalho interno do nó for-each conforme suas necessidades de negócio. Nos nós internos, utilize variáveis integradas para recuperar valores de parâmetros e executar a tarefa de loop. Para obter mais informações sobre as variáveis integradas, consulte Built-in variables. Para detalhes de configuração, consulte Configure a for-each node.
Criar e configurar um fluxo de trabalho
Crie um fluxo de trabalho onde um nó de atribuição seja o nó upstream e um nó for-each seja o nó downstream.
-
Faça login no DataWorks console. Na região de destino, clique em no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Data Development.
-
Crie um nó for-each.
-
Passe o mouse sobre o ícone
e clique em .Alternativamente, localize o fluxo de trabalho desejado, clique com o botão direito em General e selecione .
Na caixa de diálogo Create Node, defina o nome e o caminho do nó.
Clique em OK.
-
-
Crie um nó de atribuição.
-
Dê um clique duplo no fluxo de trabalho para abrir sua página de configuração. Clique em New Node e arraste para a tela à direita.
Para obter mais informações sobre nós de atribuição, consulte Assignment node.
Na caixa de diálogo Create Node, defina o nome e o caminho do nó. Por padrão, o nó é criado no diretório do fluxo de trabalho atual.
Clique em OK.
-
Arraste uma linha do nó de atribuição até o nó for-each para estabelecer a dependência entre eles.
Configurar um nó de atribuição
Dê um clique duplo no nó de atribuição para abrir sua página de configuração.
Na lista suspensa Language, selecione Shell.
-
Na página de configuração do nó, insira a seguinte instrução:
echo 'this is name,ok'; -
No painel à direita, clique em Scheduling. Na seção .
Clique no ícone Salvar
na barra de ferramentas.-
Clique no ícone Commit
na barra de ferramentas.Na caixa de diálogo Submission, insira uma Change Description e escolha se deseja solicitar uma revisão de código.
ImportanteDefina as propriedades Rerun attribute e Parent Nodes do nó antes de fazer o commit.
A revisão de código ajuda a controlar a qualidade e evita erros causados pela implantação de código incorreto no ambiente de produção sem verificação prévia. Se você ativar a revisão de código, o nó só poderá ser implantado após a aprovação dos revisores. Para obter mais informações, consulte Code review.
Se o seu workspace estiver no modo padrão, clique em Deploy no canto superior direito da página de configuração do nó para implantar a tarefa no ambiente de produção após o commit. Para obter mais informações, consulte Deploy tasks.
Configurar um nó for-each
-
Dê um clique duplo no nó for-each para abrir sua página de configuração. Por padrão, ele contém um nó inicial, um nó Shell e um nó final.
Você pode substituir o nó Shell por outro tipo de nó:
Para usar um nó Shell, configure-o diretamente.
Para usar outro tipo de nó, primeiro exclua o nó Shell padrão e crie o nó necessário.
Este exemplo utiliza um nó Shell.
-
Edite o nó Shell.
Dê um clique duplo no nó Shell para abrir sua página de configuração.
-
Insira o seguinte código:
echo ${dag.loopTimes} # Print the current loop count.NotaA lógica dos nós inicial e final é fixa e não pode ser editada.
Após modificar o código no nó Shell, salve as alterações. O DataWorks não solicita que você salve as mudanças ao fazer o commit do nó. Caso não salve, as alterações não entrarão em vigor.
O nó for-each suporta as quatro variáveis integradas a seguir:
${dag.foreach.current}: A linha de dados atual sendo iterada.
${dag.loopDataArray}: O conjunto de dados de entrada.
${dag.offset}: O deslocamento (offset).
${dag.loopTimes}: A contagem atual do loop. O valor corresponde a ${dag.offset}+1.
Para obter mais informações, consulte Built-in variables e Examples of built-in variable values.
-
Configure o nó for-each.
Na página de configuração do nó for-each, clique em Scheduling no painel à direita.
Na seção , clique em Modify ao lado do nome de parâmetro padrão loopDataArray.
-
Na lista suspensa Value Source, selecione o parâmetro
outputsdo nó de atribuição upstream e clique em Save.NotaDepois de adicionar a dependência do nó de atribuição upstream na aba Properties, especifique manualmente sua origem de valor. Caso contrário, ocorrerá um erro ao fazer o commit do nó.
Clique no ícone Salvar
na barra de ferramentas para salvar o nó for-each.-
Clique no ícone Commit
na barra de ferramentas.ImportanteDefina as propriedades Rerun attribute e Parent Nodes do nó antes de fazer o commit.
Na caixa de diálogo Submission, selecione os nós que deseja enviar e clique em Determine.
Se o seu workspace estiver no modo padrão, clique em Deploy no canto superior direito após fazer o commit do nó com sucesso. Para obter mais informações, consulte Deploy tasks.
Testar o nó e visualizar os resultados
No canto superior direito da página, clique em O&M Personnel para acessar o Operation Center.
No painel de navegação à esquerda, clique em .
-
Localize o nó. No DAG à direita, clique com o botão direito no nó de atribuição e selecione .
Atualize a página Data Backfill Instance. Após a execução bem-sucedida da instância de backfill de dados, clique em View DAG ao lado da instância.
-
Clique com o botão direito no nó de atribuição e selecione View Runtime Log para verificar o resultado.
O log de execução mostra que o nó de atribuição foi executado com sucesso. A saída do Shell é
this is name,ok, e o resultado é analisado como["this is name", "ok"](dois registros de dados). O nó for-each iterará sobre esses dois registros. -
Na página Data Backfill Instance, clique com o botão direito no nó for-each e selecione View Inner Nodes.
-
Na página de nós internos, clique em Loop 1 à esquerda. Em seguida, clique com o botão direito no nó Shell e selecione View Runtime Log.
Na página de log de execução, verifique o log do nó Shell referente à primeira iteração. A saída do Shell é
1, que representa a contagem atual do loop (valor de${dag.loopTimes}). -
Da mesma forma, verifique o log do nó Shell para a segunda iteração.
A saída do Shell é
2, correspondente à contagem do loop na segunda iteração (o valor de${dag.loopTimes}é2). Isso confirma que o nó for-each iterou com sucesso sobre os dois registros de dados no conjunto de resultados da atribuição.