Share via


Transformação Pivô

A transformação Dinâmica transforma um conjunto de dados normalizado em um conjunto menos normalizado, em uma versão mais compacta, tornando dinâmicos os dados de entrada em um valor de coluna. Por exemplo, um conjunto de dados Orders normalizado que lista nome de cliente, produto e quantidade adquirida normalmente tem várias linhas para qualquer cliente que tenha comprado diversos produtos, sendo que cada linha daquele cliente apresenta detalhes do pedido para um produto diferente. Tornando dinâmico o conjunto de dados na coluna de produto, a transformação Pivô pode produzir um conjunto de dados com uma única linha por cliente. Aquela única linha lista todas as compras realizadas pelo cliente, com os nomes de produto mostrados como nomes de coluna, e a quantidade exibida como um valor na coluna de produto. Como nem todo cliente compra todos os produtos, muitas colunas podem conter valores nulos.

Quando um conjunto de dados é dinamizado, as colunas de entrada executam funções diferentes no processo de dinamização. Uma coluna pode participar dos seguintes modos:

  • A coluna é passada inalterada até a saída. Como muitas linhas de entrada só podem resultar em uma linha de saída, a transformação copia só o primeiro valor de entrada para a coluna.

  • A coluna age como a chave ou parte da chave que identifica um conjunto de registros.

  • A coluna define a dinamização. Os valores nesta coluna são associados com colunas no conjunto de dados dinâmicos.

  • A coluna contém valores que são colocados nas colunas que ficaram dinâmicas.

O diagrama a seguir mostra um conjunto de dados antes de os dados ficarem dinâmicos na coluna Product.

Conjunto de dados após ser dinamizado

O diagrama a seguir mostra um conjunto de dados depois de os dados ficarem dinâmicos na coluna Product.

Conjunto de dados antes de ser dinamizado

Para tornar os dados dinâmicos com eficiência, o que significa criar o mínimo possível de registros no conjunto de dados de saída, os dados de entrada devem ser classificados na coluna dinâmica. Se os dados não fossem classificados, a transformação Dinâmica poderia gerar vários registros para cada valor na chave definida, que é a coluna que define a associação de conjunto. Por exemplo, se o conjunto de dados fosse dinâmico em uma coluna Name, mas os nomes não fossem classificados, o conjunto de dados de saída poderia ter mais de uma linha para cada cliente, porque um dado dinâmico ocorre toda vez que o valor Name é alterado.

Os dados de entrada poderiam conter linhas duplicadas que farão a transformação Dinâmica falhar. "Linhas duplicadas" significam linhas que têm os mesmos valores nas colunas de chave definidas e as colunas dinâmicas. Por exemplo, se você usasse o conjunto de dados antes de os dados ficarem dinâmicos na coluna Product, como mostrado no diagrama, e adicionasse uma linha com Kate à coluna Cust e Soda à coluna Product, esses valores duplicados fariam a transformação Dinâmica falhar, independentemente da quantidade na coluna Qty. Para evitar uma falha, você pode configurar a transformação para redirecionar linhas de erro para uma saída de erro ou pode pré-agregar valores para ter certeza de que não existem linhas duplicadas. Por exemplo, no conjunto de dados de amostra, você poderia somar os valores na coluna Qty por cliente e produto.

A transformação Dinâmica usa as propriedades em suas colunas de entrada e saída para definir a operação dinâmica.

A transformação Dinâmica inclui a propriedade personalizada PivotKeyValue. Essa propriedade pode ser atualizada por uma expressão de propriedade quando o pacote é carregado. Para obter mais informações, consulte Referência de Expressão do Integration Services, Usando expressões de propriedade em pacotes e Propriedades personalizadas de Transformação.

Essa informação tem uma entrada, uma saída comum e uma saída de erro.

Configurando o conjunto de dados de exemplo

O conjunto de dados de exemplo exibido no diagrama foi configurado da seguinte forma: a propriedade PivotUsage da coluna Cust foi definida como 1, para indicar que é uma coluna de chave definida; a propriedade PivotUsage da coluna de entrada Product foi definida como 2, para indicar que uma coluna deve ser criada para cada produto; a propriedade PivotUsage da coluna de entrada Qty foi definida como 3, para indicar que os valores de quantidade são colocados na coluna dinâmica.

A saída de transformação foi configurada para incluir seis colunas. As colunas, que podem ser adicionadas usando a caixa de diálogo Editor Avançado, foram nomeadas Cust, Ham, Soda, Milk, Beer e Chips. A propriedade PivotKeyValue da coluna Ham foi definida como Ham, para indicar que a transformação deveria procurar aquele valor na coluna de entrada. Da mesma maneira, a propriedade PivotKeyValue da coluna Soda foi definida como Soda, e assim por diante.

As colunas na entrada de transformação foram então mapeadas para as colunas na saída.

A propriedade SourceColumn da coluna Cust foi configurada para usar o identificador de linhagem da coluna de entrada Cust. As propriedades SourceColumn das colunas Ham, Soda, Milk, Beer e Chips foram configuradas para usar o identificador de linhagem da coluna de entrada Qty. Outro modo de configurar isso seria definir a propriedade SourceColumn das colunas Ham, Soda, Milk, Beer e Chips como -1, que inseririam o valor True em vez do valor de dados. Por exemplo, em vez dos valores 12 e 24, a coluna Beer conteria o valor True, para indicar que o cliente havia comprado só o produto, em vez de mostrar a quantidade comprada.

As linhas na saída de transformação contêm os valores das colunas de entrada Cust e Qty.

Opções dinâmicas

Você define a propriedade PivotUsage das colunas de entrada para especificar a função que cada coluna executa no processo de dinamização. Os valores válidos de PivotUsage são 0, 1, 2 e 3.

A tabela a seguir descreve as opções PivotUsage.

Opção

Descrição

0

A coluna não dinâmica e os valores de coluna são passados para a saída de transformação.

1

A coluna faz parte da chave definida que identifica uma ou mais linhas como parte de um conjunto. Todas as linhas de entrada com a mesma chave definida são combinadas em uma linha de saída.

2

A coluna é dinâmica. Pelo menos uma coluna é criada de cada valor de coluna.

3

Os valores desta coluna são colocados em colunas que são criadas como resultado da dinamização.

Configurando a transformação Dinâmica

Você pode definir propriedades pelo Designer SSIS ou programaticamente.

Para obter mais informações sobre as propriedades que podem ser definidas na caixa de diálogo Editor Avançado ou programaticamente, clique em um dos seguintes tópicos:

Para obter mais informações sobre como definir as propriedades, consulte Como definir as propriedades de um componente de fluxo de dados.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os mais recentes downloads, artigos, exemplos e vídeos da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN ou TechNet:

Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.