Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
SSIS Integration Runtime em Azure Data Factory
O perfilamento e a limpeza de dados não são candidatos a um processo automatizado nas fases iniciais. Nos Serviços de Integração SQL Server, a saída da tarefa de Perfilagem de Dados normalmente requer análise visual e julgamento humano para determinar se as violações reportadas são significativas ou excessivas. Mesmo depois de reconhecer problemas de qualidade dos dados, ainda é necessário um plano cuidadosamente pensado que aborde a melhor abordagem para a limpeza.
No entanto, depois de estabelecidos critérios de qualidade dos dados, poderá querer automatizar uma análise periódica e limpeza da fonte de dados. Considere estes cenários:
Verificar a qualidade dos dados antes de uma carga incremental. Use a tarefa de Perfilagem de Dados para calcular o Perfil de Proporção de Nulos dos novos dados destinados à coluna CustomerName numa tabela Customers. Se a percentagem de valores nulos for superior a 20%, envie uma mensagem de e-mail que contenha o perfil de saída ao operador e termine o pacote. Caso contrário, continue o processo de carga incremental.
Automatizar a limpeza quando as condições especificadas são cumpridas. Use a tarefa de Perfilagem de Dados para calcular o Perfil de Inclusão de Valor da coluna Estado contra uma tabela de consulta de estados, e da coluna ZIP/Código Postal contra uma tabela de consulta de códigos postais. Se a força de inclusão dos valores do estado for inferior a 80%, mas a força de inclusão dos valores do Código Postal for superior a 99%, o que indica duas coisas. Primeiro, os dados estaduais são maus. Em segundo lugar, os dados dos códigos postais são bons. Inicie uma tarefa de Fluxo de Dados que faça a limpeza dos dados do estado, realizando uma correspondência com o valor correto do estado a partir do valor atual do Código Postal.
Depois de ter um fluxo de trabalho no qual pode incorporar a tarefa de Fluxo de Dados, tem de compreender os passos necessários para adicionar esta tarefa. A secção seguinte descreve o processo geral de incorporação da tarefa de Fluxo de Dados. As duas últimas secções descrevem como ligar a tarefa de Fluxo de Dados, seja diretamente a uma fonte de dados ou a dados transformados do Fluxo de Dados.
Definição de um Fluxo de Trabalho Geral para a Tarefa de Fluxo de Dados
O procedimento seguinte descreve a abordagem geral para utilizar a saída da tarefa de Perfil de Dados no fluxo de trabalho de um pacote.
Para usar a saída da tarefa de Perfilagem de Dados programaticamente num pacote
Adicione e configure a tarefa de Perfilagem de Dados num pacote.
Configura variáveis de pacote para conter os valores que queres recuperar dos resultados do perfil.
Adicione e configure uma tarefa de Script. Ligue a tarefa Script à tarefa de Perfilagem de Dados. Na tarefa Script, escreva código que leia os valores desejados do ficheiro de saída da tarefa de Perfil de Dados e preencha as variáveis do pacote.
Nas restrições de precedência que ligam a tarefa Script aos ramos descendentes no fluxo de trabalho, escreva expressões que utilizem os valores das variáveis para direcionar o processo.
Ao incorporar a tarefa de Perfilagem de Dados no fluxo de trabalho de um pacote, tenha em mente estas duas características da tarefa:
Saída da tarefa. A tarefa de Perfil de Dados escreve a sua saída num ficheiro ou variável de pacote em formato XML de acordo com o esquema DataProfile.xsd. Portanto, tens de consultar a saída XML se quiseres usar os resultados do perfil no fluxo de trabalho condicional de um pacote. Pode facilmente usar a linguagem de consulta Xpath para consultar esta saída XML. Para estudar a estrutura desta saída XML, pode abrir um ficheiro de saída de exemplo ou o próprio esquema. Para abrir o ficheiro ou esquema de saída, pode usar o Microsoft Visual Studio, outro editor XML ou um editor de texto, como o Notepad.
Observação
Alguns dos resultados do perfil que são exibidos no Visualizador de Perfis de Dados são valores calculados que não são encontrados diretamente na saída. Por exemplo, a saída do Perfil de Proporção de Valores Nulos da Coluna contém o número total de linhas e o número de linhas que contêm valores nulos. Tem de consultar estes dois valores e depois calcular a percentagem de linhas que contêm valores nulos, para obter a razão nula da coluna.
Entrada de tarefas. A tarefa de Perfil de Dados lê a sua entrada a partir das tabelas do SQL Server. Portanto, tens de guardar os dados que estão em memória em tabelas de staging se quiseres perfilar dados que já foram carregados e transformados no fluxo de dados.
As secções seguintes aplicam este fluxo de trabalho geral ao perfil de dados que provêm diretamente de uma fonte de dados externa ou que são transformados da tarefa Data Flow. Estas secções também mostram como lidar com os requisitos de entrada e saída da tarefa Data Flow.
Ligar a tarefa de perfilagem de dados diretamente a uma fonte de dados externa
A tarefa de Perfilagem de Dados pode perfilar dados que vêm diretamente de uma fonte de dados. Para ilustrar esta capacidade, o exemplo seguinte utiliza a tarefa de Análise de Dados para calcular um Perfil de Proporção de Valores Nulos nas colunas da tabela Person.Address na base de dados AdventureWorks2025. Depois, este exemplo usa uma tarefa Script para recuperar os resultados do ficheiro de saída e preencher variáveis de pacote que podem ser usadas para direcionar o fluxo de trabalho.
Observação
A coluna AddressLine2 foi selecionada para este exemplo simples porque esta coluna contém uma elevada percentagem de valores nulos.
Este exemplo consiste nos seguintes passos:
Configurar os gestores de ligação que se ligam à fonte de dados externa e ao ficheiro de saída que conterá os resultados do perfil.
Configurar as variáveis do pacote que irão armazenar os valores necessários pela Tarefa de Perfilagem de Dados.
Configurar a tarefa de Perfil de Dados para calcular o Perfil de Razão Nula da Coluna.
Configurar a tarefa Script para trabalhar a saída XML da tarefa de Perfilagem de Dados.
Configuração das restrições de precedência que controlarão quais ramificações subsequentes no fluxo de trabalho serão executadas com base nos resultados da tarefa de Perfil de Dados.
Configurar os Gestores de Ligação
Neste exemplo, existem dois gestores de ligação:
Um gestor de ligações ADO.NET que se liga à base de dados AdventureWorks2025.
Um gestor de ligação de ficheiros que cria o ficheiro de saída que irá armazenar os resultados da tarefa de Perfilagem de Dados.
Para configurar os gestores de ligação
No SQL Server Data Tools (SSDT), crie um novo pacote de Serviços de Integração.
Adicione um gestor de ADO.NET de ligações ao pacote. Configure este gestor de ligações para usar o NET Data Provider for SQL Server (SqlClient) e para se ligar a uma instância disponível da base de dados AdventureWorks2025.
Por defeito, o gestor de ligação tem o seguinte nome: <nome> do servidor. AdventureWorks1.
Adicione um gestor de ligações de ficheiros ao pacote. Configure este gestor de ligação para criar o ficheiro de saída da tarefa de Perfilagem de Dados.
Este exemplo utiliza o nome do ficheiro, DataProfile1.xml. Por defeito, o gestor de ligação tem o mesmo nome do ficheiro.
Configurar as variáveis do pacote
Este exemplo utiliza duas variáveis de pacote:
A variável ProfileConnectionName passa o nome do gestor de ligação de ficheiros para a tarefa Script.
A variável AddressLine2NullRatio passa a razão nula calculada para esta coluna da tarefa Script para o pacote.
Para configurar as variáveis do pacote que irão armazenar os resultados do perfil
Na janela de Variáveis , adicione e configure as seguintes duas variáveis de pacote:
Introduza o nome, ProfileConnectionName, para uma das variáveis e defina o tipo dessa variável para String.
Insira o nome, AddressLine2NullRatio, para a outra variável e defina o tipo dessa variável para Double.
Configurar a Tarefa de Perfilagem de Dados
A tarefa de Perfilagem de Dados tem de ser configurada da seguinte forma:
Para usar os dados fornecidos pelo gestor de ADO.NET de conexões como entrada.
Para realizar um perfil de Razão Nula de Coluna nos dados de entrada.
Para guardar os resultados do perfil no ficheiro associado ao gestor de ligação de ficheiros.
Para configurar a tarefa de Perfilagem de Dados
Ao Fluxo de Controlo, adicione uma tarefa de Perfilagem de Dados.
Abra o Editor de Tarefas de Perfil de Dados para configurar a tarefa.
Na página Geral do editor, para Destino, selecione o nome do gestor de ligação de ficheiros que configurou anteriormente.
Na página Pedidos de Perfil do editor, crie um novo Perfil de Proporção Nula de Coluna.
No painel de propriedades de Pedidos, para o ConnectionManager, selecione o gestor de ADO.NET de conexões que configurou anteriormente. Depois, para TableOrView, selecione Person.Address.
Feche o editor de tarefas de perfilagem de dados.
Configurar a tarefa do script
A tarefa Script tem de ser configurada para recuperar os resultados do ficheiro de saída e preencher as variáveis do pacote que estavam previamente configuradas.
Para configurar a tarefa Script
Ao Fluxo de Controlo, adiciona uma tarefa de Script.
Ligue a tarefa Script à tarefa de Perfilagem de Dados.
Abra o Editor de Tarefas de Scripts para configurar a tarefa.
Na página Script , selecione a sua linguagem de programação preferida. Depois, disponibilize as duas variáveis de pacote ao script:
Para ReadOnlyVariables, selecione ProfileConnectionName.
Para ReadWriteVariables, selecione AddressLine2NullRatio.
Selecione Editar Script para abrir o ambiente de desenvolvimento de scripts.
Adicione uma referência ao espaço de nomes System.Xml.
Introduza o código de exemplo que corresponde à sua linguagem de programação:
Imports System Imports Microsoft.SqlServer.Dts.Runtime Imports System.Xml Public Class ScriptMain Private FILENAME As String = "C:\ TEMP\DataProfile1.xml" Private PROFILE_NAMESPACE_URI As String = "https://schemas.microsoft.com/DataDebugger/" Private NULLCOUNT_XPATH As String = _ "/default:DataProfile/default:DataProfileOutput/default:Profiles" & _ "/default:ColumnNullRatioProfile[default:Column[@Name='AddressLine2']]/default:NullCount/text()" Private TABLE_XPATH As String = _ "/default:DataProfile/default:DataProfileOutput/default:Profiles" & _ "/default:ColumnNullRatioProfile[default:Column[@Name='AddressLine2']]/default:Table" Public Sub Main() Dim profileConnectionName As String Dim profilePath As String Dim profileOutput As New XmlDocument Dim profileNSM As XmlNamespaceManager Dim nullCountNode As XmlNode Dim nullCount As Integer Dim tableNode As XmlNode Dim rowCount As Integer Dim nullRatio As Double ' Open output file. profileConnectionName = Dts.Variables("ProfileConnectionName").Value.ToString() profilePath = Dts.Connections(profileConnectionName).ConnectionString profileOutput.Load(profilePath) profileNSM = New XmlNamespaceManager(profileOutput.NameTable) profileNSM.AddNamespace("default", PROFILE_NAMESPACE_URI) ' Get null count for column. nullCountNode = profileOutput.SelectSingleNode(NULLCOUNT_XPATH, profileNSM) nullCount = CType(nullCountNode.Value, Integer) ' Get row count for table. tableNode = profileOutput.SelectSingleNode(TABLE_XPATH, profileNSM) rowCount = CType(tableNode.Attributes("RowCount").Value, Integer) ' Compute and return null ratio. nullRatio = nullCount / rowCount Dts.Variables("AddressLine2NullRatio").Value = nullRatio Dts.TaskResult = Dts.Results.Success End Sub End Classusing System; using Microsoft.SqlServer.Dts.Runtime; using System.Xml; public class ScriptMain { private string FILENAME = "C:\\ TEMP\\DataProfile1.xml"; private string PROFILE_NAMESPACE_URI = "https://schemas.microsoft.com/DataDebugger/"; private string NULLCOUNT_XPATH = "/default:DataProfile/default:DataProfileOutput/default:Profiles" + "/default:ColumnNullRatioProfile[default:Column[@Name='AddressLine2']]/default:NullCount/text()"; private string TABLE_XPATH = "/default:DataProfile/default:DataProfileOutput/default:Profiles" + "/default:ColumnNullRatioProfile[default:Column[@Name='AddressLine2']]/default:Table"; public void Main() { string profileConnectionName; string profilePath; XmlDocument profileOutput = new XmlDocument(); XmlNamespaceManager profileNSM; XmlNode nullCountNode; int nullCount; XmlNode tableNode; int rowCount; double nullRatio; // Open output file. profileConnectionName = Dts.Variables["ProfileConnectionName"].Value.ToString(); profilePath = Dts.Connections[profileConnectionName].ConnectionString; profileOutput.Load(profilePath); profileNSM = new XmlNamespaceManager(profileOutput.NameTable); profileNSM.AddNamespace("default", PROFILE_NAMESPACE_URI); // Get null count for column. nullCountNode = profileOutput.SelectSingleNode(NULLCOUNT_XPATH, profileNSM); nullCount = (int)nullCountNode.Value; // Get row count for table. tableNode = profileOutput.SelectSingleNode(TABLE_XPATH, profileNSM); rowCount = (int)tableNode.Attributes["RowCount"].Value; // Compute and return null ratio. nullRatio = nullCount / rowCount; Dts.Variables["AddressLine2NullRatio"].Value = nullRatio; Dts.TaskResult = Dts.Results.Success; } }Observação
O código de exemplo mostrado neste procedimento demonstra como carregar a saída da tarefa de Perfilagem de Dados a partir de um ficheiro. Para carregar a saída da tarefa de Perfil de Dados a partir de uma variável de pacote, consulte o código de exemplo alternativo que segue este procedimento.
Fecha o ambiente de desenvolvimento de scripts e depois fecha o Script Task Editor.
Alternativa Code-Reading a saída do perfil a partir de uma variável
O procedimento anterior mostra como carregar a saída da tarefa de Perfilagem de Dados a partir de um ficheiro. No entanto, um método alternativo seria carregar esta saída a partir de uma variável de pacote. Para carregar a saída de uma variável, tem de fazer as seguintes alterações ao código de exemplo:
Chame o método LoadXml da classe XmlDocument em vez do método Load .
No Editor de Tarefas de Script, adicione o nome da variável package que contém a saída do perfil à lista ReadOnlyVariables da tarefa.
Passe o valor da string da variável para o método LoadXML , como mostrado no seguinte exemplo de código. (Este exemplo usa "ProfileOutput" como nome da variável package que contém a saída do perfil.)
Dim outputString As String outputString = Dts.Variables("ProfileOutput").Value.ToString() ... profileOutput.LoadXml(outputString)string outputString; outputString = Dts.Variables["ProfileOutput"].Value.ToString(); ... profileOutput.LoadXml(outputString);
Configurar as Restrições de Precedência
As restrições de precedência têm de ser configuradas para controlar quais ramificações a jusante no fluxo de trabalho são executadas com base nos resultados da tarefa de Perfilagem de Dados.
Para configurar as restrições de precedência
Nas restrições de precedência que ligam a tarefa de Script aos ramos seguintes no fluxo de trabalho, escreva expressões que usem os valores das variáveis para direcionar o fluxo de trabalho.
Por exemplo, pode definir a operação Avaliação da restrição de precedência para Expressão e Restrição. Depois, pode usar
@AddressLine2NullRatio < .90como valor da expressão. Isto faz com que o fluxo de trabalho siga o caminho selecionado quando as tarefas anteriores têm sucesso, e quando a percentagem de valores nulos na coluna selecionada é inferior a 90%.
Ligar a Tarefa de Perfilagem de Dados aos Dados Transformados do Fluxo de Dados
Em vez de perfilar dados diretamente de uma fonte de dados, pode perfilar dados que já foram carregados e transformados no fluxo de dados. No entanto, a tarefa de Perfilagem de Dados funciona apenas contra dados persistentes, não contra dados em memória. Por isso, deve primeiro usar um componente de destino para guardar os dados transformados numa tabela de staging.
Observação
Quando configura a tarefa de Perfilagem de Dados, tem de selecionar tabelas e colunas existentes. Por isso, deve criar a tabela de staging durante a fase de design antes de poder configurar a tarefa. Ou seja, este cenário não permite usar uma tabela temporária criada em tempo de execução.
Depois de guardar os dados numa tabela de staging, pode realizar as seguintes ações:
Use a tarefa de Perfil de Dados para perfilar os dados.
Use uma tarefa Script para ler os resultados conforme descrito anteriormente neste tópico.
Use esses resultados para direcionar o fluxo de trabalho subsequente do pacote.
O procedimento seguinte fornece a abordagem geral para utilizar a tarefa de Perfilagem de Dados para perfilar dados que foram transformados pelo fluxo de dados. Muitos destes passos são semelhantes aos descritos anteriormente para perfilar dados provenientes diretamente de uma fonte externa. Pode querer rever esses passos anteriores para mais informações sobre como configurar os vários componentes.
Para usar a tarefa de Perfilagem de Dados no fluxo de dados
No SQL Server Data Tools (SSDT), crie um pacote.
No Fluxo de Dados, adicione, configure e ligue as fontes e transformações apropriadas.
No Fluxo de Dados, adicione, configure e ligue um componente de destino que guarde os dados transformados numa tabela de staging.
No Fluxo de Controlo, adicione e configure uma tarefa de Perfil de Dados que calcule os perfis desejados em relação aos dados transformados na tabela de staging. Ligue a tarefa de Perfil de Dados à tarefa de Fluxo de Dados.
Configura variáveis de pacote para conter os valores que queres recuperar dos resultados do perfil.
Adicione e configure uma tarefa de Script. Ligue a tarefa Script à tarefa de Perfilagem de Dados. Na tarefa Script, escreva código que leia os valores desejados a partir da saída da tarefa de Perfil de Dados e preencha as variáveis do pacote.
Nas restrições de precedência que ligam a tarefa Script aos ramos posteriores no fluxo de trabalho, escreva expressões que utilizem os valores das variáveis para direcionar o fluxo de trabalho.
Ver também
Configuração da Tarefa de Perfilagem de Dados
Visualizador de Perfil de Dados