Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Dica
Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.
Os fluxos de dados estão disponíveis em os pipelines do Azure Data Factory e os pipelines do Azure Synapse Analytics. Este artigo se aplica ao fluxo de dados de mapeamento. Se você for novo em transformações, consulte o artigo introdutório Transformar dados usando fluxos de dados de mapeamento.
Com a transformação de mesclagem, você utiliza valores de matriz de estruturas hierárquicas, como JSON, expandindo-os em linhas individuais. Esse processo é conhecido como desnormalização.
Configuração
A transformação de achatar contém as seguintes definições de configuração.
Expandir por
Selecione uma matriz para desenrolar. Os dados de saída terão uma linha por item em cada matriz. Se o desdobramento por matriz na linha de entrada for nulo ou vazio, haverá uma linha de saída com os valores desdobrados como nulos. Você tem a opção de cancelar o registro de mais de uma matriz por transformação de Mesclagem. Clique no botão de adição (+) para incluir várias matrizes em uma única transformação de Mesclagem. Você pode usar as metafunções de fluxo de dados do ADF aqui, incluindo name e type, e usar o casamento de padrões para desdobrar matrizes que correspondam a esses critérios. Ao incluir várias matrizes em uma única transformação de Flatten, seus resultados serão um produto cartesiano de todos os valores possíveis das matrizes.
Raiz de expansão
Por padrão, a transformação de mesclagem expande uma matriz na parte superior da hierarquia na qual ela existe. Opcionalmente, você pode selecionar uma matriz como sua raiz de expansão. A raiz de expansão deve ser uma matriz de objetos complexos que seja ou contenha a matriz de expansão. Se uma raiz de desdobramento for selecionada, os dados de saída conterão pelo menos uma linha por item na raiz de desdobramento. Se a linha de entrada não tiver nenhum item na raiz de expansão, ela será descartada dos dados de saída. A escolha de uma raiz de expansão sempre produzirá um número menor ou igual de linhas que o comportamento padrão.
Mapeamento de mesclagem
Semelhante à transformação de seleção, defina a projeção da nova estrutura com base nos campos de entrada e na matriz desnormalizada. Se uma matriz desnormalizada for mapeada, a coluna de saída terá o mesmo tipo de dados da matriz. Se a matriz de expansão for uma matriz de objetos complexos que contém submatrizes, o mapeamento de um item dessas submatrizes produzirá uma matriz.
Consulte a aba de inspeção e a visualização de dados para verificar o resultado do seu mapeamento.
mapeamento baseado em regras
A transformação de achatamento dá suporte ao mapeamento baseado em regras, permitindo que você crie transformações dinâmicas e flexíveis que achatam as matrizes com base em regras e achatam estruturas com base em níveis de hierarquia.
Condição de correspondência
Insira um padrão de condição de correspondência para a coluna ou colunas que você deseja mesclar usando padrões ou correspondências exatas. Exemplo: like(name,'cust%')
Percurso de coluna profunda
Configuração opcional que informa ao serviço para manipular todas as subcolunas de um objeto complexo individualmente, em vez de manipular o objeto complexo como uma coluna inteira.
Nível de hierarquia
Escolha o nível da hierarquia que você deseja expandir.
Correspondências de nome (Regex)
Opcionalmente, escolha expressar sua correspondência de nome como uma expressão regular nesta caixa, em vez de usar a condição de correspondência acima.
Exemplos
Consulte o seguinte objeto JSON para ver os exemplos abaixo da transformação de mesclagem
{
"name":"MSFT","location":"Redmond", "satellites": ["Bay Area", "Shanghai"],
"goods": {
"trade":true, "customers":["government", "distributer", "retail"],
"orders":[
{"orderId":1,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":2}]}},
{"orderId":2,"orderTotal":323.34,"shipped":{"orderItems":[{"itemName":"Mice","itemQty":2},{"itemName":"Keyboard","itemQty":1}]}}
]}}
{"name":"Company1","location":"Seattle", "satellites": ["New York"],
"goods":{"trade":false, "customers":["store1", "store2"],
"orders":[
{"orderId":4,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":3}]}},
{"orderId":5,"orderTotal":343.24,"shipped":{"orderItems":[{"itemName":"Chair","itemQty":4},{"itemName":"Lamp","itemQty":2}]}}
]}}
{"name": "Company2", "location": "Bellevue",
"goods": {"trade": true, "customers":["Bank"], "orders": [{"orderId": 4, "orderTotal": 123.34}]}}
{"name": "Company3", "location": "Kirkland"}
Nenhuma raiz de expansão com a matriz de cadeia de caracteres
| Expandir por | Raiz de expansão | Projeção |
|---|---|---|
| goods.customers | Nenhum | nome customer = goods.customer |
Saída
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Nenhuma raiz de expansão com matriz complexa
| Expandir por | Raiz de expansão | Projeção |
|---|---|---|
| goods.orders.shipped.orderItems | Nenhum | nome orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty location = local |
Saída
{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}
{ 'Company3', null, null, null, 'Kirkland'}
Mesma raiz da matriz de expansão
| Expandir por | Raiz de expansão | Projeção |
|---|---|---|
| pedidos_de_mercadorias | pedidos_de_mercadorias | nome goods.orders.shipped.orderItems.itemName goods.customers local |
Saída
{ 'MSFT', ['Laptop','Charger'], ['government','distributer','retail'], 'Redmond'}
{ 'MSFT', ['Mice', 'Keyboard'], ['government','distributer','retail'], 'Redmond'}
{ 'Company1', ['Laptop','Charger'], ['store', 'store2'], 'Seattle'}
{ 'Company1', ['Chair', 'Lamp'], ['store', 'store2'], 'Seattle'}
{ 'Company2', null, ['Bank'], 'Bellevue'}
Raiz de expansão com matriz complexa
| Expandir por | Raiz de expansão | Projeção |
|---|---|---|
| goods.orders.shipped.orderItem | pedidos_de_mercadorias | nome orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty location = local |
Saída
{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}
Script de fluxo de dados
Sintaxe
<incomingStream>
foldDown(unroll(<unroll cols>),
mapColumn(
name,
each(<array>(type == '<arrayDataType>')),
each(<array>, match(true())),
location
)) ~> <transformationName>
Exemplo
source foldDown(unroll(goods.orders.shipped.orderItems, goods.orders),
mapColumn(
name,
orderId = goods.orders.orderId,
itemName = goods.orders.shipped.orderItems.itemName,
itemQty = goods.orders.shipped.orderItems.itemQty,
location = location
),
skipDuplicateMapInputs: false,
skipDuplicateMapOutputs: false)
Conteúdo relacionado
- Use a Transformação de dinamização para transformar linhas em colunas.
- Use a transformação de anulação de dinamização para transformar colunas em linhas.