Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
SSIS Integration Runtime w ramach usługi Azure Data Factory
Profilowanie i czyszczenie danych nie są kandydatami do zautomatyzowanego procesu we wczesnych etapach. W usługach SQL Server Integration Services dane wyjściowe zadania profilowania danych zwykle wymagają analizy wizualnej i oceny człowieka w celu ustalenia, czy zgłoszone naruszenia są znaczące, czy nadmierne. Nawet po rozpoznaniu problemów z jakością danych nadal musi istnieć starannie przemyślany plan, który rozwiązuje najlepsze podejście do oczyszczania.
Jednak po ustaleniu kryteriów jakości danych warto zautomatyzować okresową analizę i oczyszczanie źródła danych. Rozważ następujące scenariusze:
Sprawdzanie jakości danych przed obciążeniem przyrostowym. Użyj zadania profilowania danych, aby obliczyć profil współczynnika pustych wartości kolumny dla nowych danych przeznaczonych dla kolumny CustomerName w tabeli Customers. Jeśli wartość procentowa wartości null jest większa niż 20%, wyślij wiadomość e-mail zawierającą dane wyjściowe profilu do operatora i zakończ pakiet. W przeciwnym razie kontynuuj obciążenie przyrostowe.
Automatyzowanie czyszczenia po spełnieniu określonych warunków. Za pomocą zadania Profilowanie danych oblicz profil uwzględnienia wartości dla kolumny Stan względem tabeli odnośników stanów oraz dla kolumny Kod pocztowy w tabeli odnośników kodów pocztowych. Jeśli siła dołączania wartości dla stanu jest mniejsza niż 80%, ale siła dołączania wartości dla Kodu pocztowego/Kodeksu pocztowego jest większa niż 99%, oznacza to dwie rzeczy. Po pierwsze, dane stanu są złe. Po drugie, dane kodu pocztowego są dobre. Uruchom zadanie przepływu danych, które czyści dane stanu, wykonując wyszukiwanie poprawnej wartości stanu z bieżącej wartości kodu pocztowego.
Po utworzeniu przepływu pracy, w którym można uwzględnić zadanie przepływu danych, musisz zrozumieć kroki wymagane do dodania tego zadania. W następnej sekcji opisano ogólny proces dołączania zadania przepływu danych. W dwóch ostatnich sekcjach opisano sposób łączenia zadania przepływu danych bezpośrednio ze źródłem danych lub do przekształconych danych z przepływu danych.
Definiowanie ogólnego przepływu pracy dla zadania przepływu danych
Poniższa procedura przedstawia ogólne podejście do używania danych wyjściowych zadania profilowania danych w przepływie pracy pakietu.
Aby użyć wyników zadania profilowania danych w pakiecie w sposób programowy
Dodaj i skonfiguruj zadanie Profilowanie danych w pakiecie.
Skonfiguruj zmienne pakietu, aby przechowywać wartości, które mają zostać pobrane z wyników profilu.
Dodaj i skonfiguruj zadanie Skrypt. Połącz zadanie Skryptu z zadaniem Profilowania danych. W zadaniu Skrypt napisz kod, który odczytuje żądane wartości z pliku wyjściowego zadania Profilowanie danych i wypełnia zmienne pakietu.
W ograniczeniach pierwszeństwa, które łączą zadanie skryptu z gałęziami podrzędnymi w przepływie pracy, zapisują wyrażenia, które używają wartości zmiennych do kierowania przepływu pracy.
Podczas dołączania zadania profilowania danych do przepływu pracy pakietu należy pamiętać o tych dwóch funkcjach zadania:
Wynik zadania. Zadanie Profilowanie danych zapisuje dane wyjściowe w pliku lub zmiennej pakietu w formacie XML zgodnie ze schematem DataProfile.xsd. W związku z tym należy wykonać zapytanie dotyczące danych wyjściowych XML, jeśli chcesz użyć wyników profilu w warunkowym przepływie pracy pakietu. Możesz łatwo użyć języka zapytań Xpath do wykonywania zapytań względem tych danych wyjściowych XML. Aby przeanalizować strukturę tych danych wyjściowych XML, możesz otworzyć przykładowy plik wyjściowy lub sam schemat. Aby otworzyć plik wyjściowy lub schemat, możesz użyć programu Microsoft Visual Studio, innego edytora XML lub edytora tekstów, takiego jak Notatnik.
Uwaga / Notatka
Niektóre wyniki profilu wyświetlane w Podglądzie profilu danych to wartości obliczeniowe, których nie można znaleźć bezpośrednio w danych wyjściowych. Na przykład dane wyjściowe profilu współczynnika wartości null w kolumnie zawierają całkowitą liczbę wierszy oraz liczbę wierszy zawierających wartości null. Należy wykonać zapytanie dotyczące tych dwóch wartości, a następnie obliczyć wartość procentową wierszy zawierających wartości null, aby uzyskać stosunek wartości null kolumny.
Dane wejściowe zadania. Zadanie Profilowanie danych odczytuje dane wejściowe z tabel programu SQL Server. W związku z tym musisz zapisać dane, które są w pamięci w tabelach przejściowych, jeśli chcesz profilować dane, które zostały już załadowane i przekształcone w przepływie danych.
W poniższych sekcjach zastosowano ten ogólny przepływ pracy do profilowania danych, które pochodzą bezpośrednio ze źródła danych zewnętrznych lub które są przekształcane z zadania przepływu danych. W tych sekcjach przedstawiono również sposób obsługi wymagań wejściowych i wyjściowych zadania przepływu danych.
Łączenie zadania profilowania danych bezpośrednio z zewnętrznym źródłem danych
Zadanie profilowania danych może profilować dane pochodzące bezpośrednio ze źródła danych. Aby zilustrować tę funkcję, w poniższym przykładzie użyto zadania Profilowanie danych, aby obliczyć profil współczynnika null dla kolumn tabeli Person.Address w bazie danych AdventureWorks2025. Następnie w tym przykładzie użyto zadania Skrypt w celu pobrania wyników z pliku wyjściowego i wypełnienia zmiennych pakietu, których można użyć do kierowania przepływu pracy.
Uwaga / Notatka
Dla tego prostego przykładu wybrano kolumnę AddressLine2, ponieważ ta kolumna zawiera wysoki procent wartości null.
Ten przykład składa się z następujących kroków:
Konfigurowanie menedżerów połączeń łączących się z zewnętrznym źródłem danych i z plikiem wyjściowym, który będzie zawierać wyniki profilu.
Konfigurowanie zmiennych pakietu, które będą zawierać wartości wymagane przez zadanie profilowania danych.
Konfigurowanie zadania Profilowania Danych w celu obliczenia profilu udziału wartości null w kolumnie.
Skonfigurowanie zadania Skryptowego w celu obsługi danych wyjściowych XML z zadania Profilowania danych.
Konfigurowanie ograniczeń pierwszeństwa, które będą kontrolować, które gałęzie podrzędne w przepływie pracy są uruchamiane na podstawie wyników zadania profilowania danych.
Konfigurowanie menedżerów połączeń
W tym przykładzie istnieją dwa menedżery połączeń:
Menedżer połączeń ADO.NET, który łączy się z bazą danych AdventureWorks2025.
Menedżer połączeń plików, który tworzy plik wyjściowy, który będzie przechowywać wyniki zadania profilowania danych.
Aby skonfigurować menedżerów połączeń
W narzędziu SQL Server Data Tools (SSDT) utwórz nowy pakiet usług Integration Services.
Dodaj menedżera połączeń ADO.NET do pakietu. Skonfiguruj tego menedżera połączeń, aby korzystał z dostawcy danych NET dla SQL Server (SqlClient) i aby połączyć się z dostępnym wystąpieniem bazy danych AdventureWorks2025.
Domyślnie menedżer połączeń ma następującą nazwę: <nazwa> serwera. AdventureWorks1.
Dodaj menedżera połączeń plików do pakietu. Skonfiguruj tego menedżera połączeń, aby utworzyć plik wyjściowy zadania profilowania danych.
W tym przykładzie użyto nazwy pliku DataProfile1.xml. Domyślnie menedżer połączeń ma taką samą nazwę jak plik.
Konfigurowanie zmiennych pakietu
W tym przykładzie użyto dwóch zmiennych pakietu:
Zmienna ProfileConnectionName przekazuje nazwę menedżera połączeń plików do zadania Skrypt.
Zmienna AddressLine2NullRatio przekazuje obliczony stosunek wartości null dla tej kolumny z zadania Skrypt do pakietu.
Aby skonfigurować zmienne pakietu, które będą przechowywać wyniki profilu
W oknie Zmienne dodaj i skonfiguruj następujące dwie zmienne pakietu:
Wprowadź nazwę ProfileConnectionName dla jednej ze zmiennych i ustaw typ tej zmiennej na Ciąg.
Wprowadź nazwę AddressLine2NullRatio dla innej zmiennej i ustaw typ tej zmiennej na Double.
Konfigurowanie zadania profilowania danych
Zadanie profilowania danych musi być skonfigurowane w następujący sposób:
Aby użyć danych, które menedżer połączeń ADO.NET dostarcza jako dane wejściowe.
Aby przeprowadzić profilowanie stosunku wartości null w kolumnie na danych wejściowych.
Aby zapisać wyniki profilu w pliku skojarzonym z menedżerem połączeń plików.
Aby skonfigurować zadanie profilowania danych
W przepływie sterowania dodaj zadanie Profilowanie danych.
Otwórz Edytor zadań profilowania danych , aby skonfigurować zadanie.
Na stronie Ogólne edytora w polu Miejsce docelowe wybierz nazwę menedżera połączeń plików, który został wcześniej skonfigurowany.
Na stronie edytora Żądania profilów utwórz nowy profil współczynnika pustych wartości w kolumnie.
W okienku Właściwości żądania dla pozycji ConnectionManager wybierz wcześniej skonfigurowany menedżer połączeń ADO.NET. Następnie w polu TableOrView wybierz pozycję Person.Address.
Zamknij Edytor zadań profilowania danych.
Konfigurowanie zadania skryptu
Zadanie Skrypt musi zostać skonfigurowane w celu pobrania wyników z pliku wyjściowego i wypełnienia wcześniej skonfigurowanych zmiennych pakietu.
Aby skonfigurować zadanie skryptowe
W przepływie sterowania dodaj zadanie Skrypt.
Połącz zadanie Skryptu z zadaniem Profilowania danych.
Otwórz Edytor zadań skryptu , aby skonfigurować zadanie.
Na stronie Skrypt wybierz preferowany język programowania. Następnie udostępnij dwa zmienne pakietu skryptowi:
W obszarze ReadOnlyVariables wybierz pozycję ProfileConnectionName.
W polu ReadWriteVariables wybierz pozycję AddressLine2NullRatio.
Wybierz pozycję Edytuj skrypt , aby otworzyć środowisko programistyczne skryptu.
Dodaj odwołanie do przestrzeni nazw System.Xml.
Wprowadź przykładowy kod odpowiadający językowi programowania:
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; } }Uwaga / Notatka
Przykładowy kod pokazany w tej procedurze przedstawia sposób ładowania danych wyjściowych zadania profilowania danych z pliku. Aby załadować dane wyjściowe zadania profilowania danych ze zmiennej pakietu, zobacz alternatywny przykładowy kod, który jest zgodny z tą procedurą.
Zamknij środowisko programistyczne skryptu, a następnie zamknij Edytor zadań skryptu.
Alternatywne czytanie kodu z danych wyjściowych profilu zmiennej
W poprzedniej procedurze pokazano, jak załadować dane wyjściowe zadania profilowania danych z pliku. Alternatywną metodą jest jednak załadowanie tych danych wyjściowych ze zmiennej pakietu. Aby załadować dane wyjściowe ze zmiennej, należy wprowadzić następujące zmiany w przykładowym kodzie:
Wywołaj metodę LoadXml klasy XmlDocument zamiast metody Load .
W Edytorze zadań skryptu dodaj nazwę zmiennej pakietu zawierającej dane wyjściowe profilu do listy ReadOnlyVariables zadania.
Przekaż wartość ciągu zmiennej do metody LoadXML , jak pokazano w poniższym przykładzie kodu. (W tym przykładzie użyto nazwy "ProfileOutput" jako nazwy zmiennej pakietu zawierającej dane wyjściowe profilu).
Dim outputString As String outputString = Dts.Variables("ProfileOutput").Value.ToString() ... profileOutput.LoadXml(outputString)string outputString; outputString = Dts.Variables["ProfileOutput"].Value.ToString(); ... profileOutput.LoadXml(outputString);
Konfigurowanie ograniczeń pierwszeństwa
Ograniczenia pierwszeństwa należy skonfigurować tak, aby kontrolować, które gałęzie podrzędne w przepływie pracy są uruchamiane na podstawie wyników zadania profilowania danych.
Aby skonfigurować ograniczenia pierwszeństwa
W ograniczeniach pierwszeństwa, które łączą zadanie skryptu z gałęziami podrzędnymi w przepływie pracy, zapisują wyrażenia, które używają wartości zmiennych do kierowania przepływu pracy.
Na przykład można ustawić operację Ewaluacja ograniczenia pierwszeństwa na Wyrażenie i Ograniczenie. Następnie możesz użyć
@AddressLine2NullRatio < .90jako wartości wyrażenia. Powoduje to, że przepływ pracy podąża za wybraną ścieżką, gdy poprzednie zadania kończą się powodzeniem, a wartość procentowa wartości null w wybranej kolumnie jest mniejsza niż 90%.
Łączenie zadania profilowania danych z przekształconymi danymi z przepływu danych
Zamiast profilowania danych bezpośrednio ze źródła danych można profilować dane, które zostały już załadowane i przekształcone w przepływie danych. Jednak zadanie profilowania danych działa tylko na utrwalone dane, a nie względem danych w pamięci. W związku z tym należy najpierw użyć składnika docelowego, aby zapisać przekształcone dane w tabeli przejściowej.
Uwaga / Notatka
Podczas konfigurowania zadania Profilowanie danych należy wybrać istniejące tabele i kolumny. Dlatego przed skonfigurowaniem zadania należy utworzyć tabelę przemieszczania w czasie projektowania. Innymi słowy, w tym scenariuszu nie można użyć tymczasowej tabeli utworzonej w czasie wykonywania.
Po zapisaniu danych w tabeli przejściowej można wykonać następujące czynności:
Użyj zadania Profilowanie danych, aby profilować dane.
Użyj zadania Skrypt, aby odczytać wyniki zgodnie z opisem we wcześniejszej części tego tematu.
Użyj tych wyników, aby skierować kolejny przepływ pracy pakietu.
Poniższa procedura zawiera ogólne podejście do używania zadania Profilowanie danych w celu profilowania danych, które zostały przekształcone przez przepływ danych. Wiele z tych kroków jest podobnych do opisanych wcześniej w celu profilowania danych pochodzących bezpośrednio ze źródła danych zewnętrznych. Możesz przejrzeć te wcześniejsze kroki, aby uzyskać więcej informacji na temat konfigurowania różnych składników.
Aby użyć zadania Profilowanie Danych w przepływie danych
W narzędziu SQL Server Data Tools (SSDT) utwórz pakiet.
W przepływie danych dodaj, skonfiguruj i połącz odpowiednie źródła i przekształcenia.
W przepływie danych dodaj, skonfiguruj i połącz składnik docelowy, który zapisuje przekształcone dane w tabeli przejściowej.
W przepływie sterowania dodaj i skonfiguruj zadanie profilowania danych, które oblicza żądane profile względem przekształconych danych w tabeli przejściowej. Połącz zadanie Profilowanie danych z zadaniem Przepływu danych.
Skonfiguruj zmienne pakietu, aby przechowywać wartości, które mają zostać pobrane z wyników profilu.
Dodaj i skonfiguruj zadanie Skrypt. Połącz zadanie Skrypt z zadaniem Profilowanie danych. W zadaniu Skrypt napisz kod, który odczytuje żądane wartości z danych wyjściowych zadania Profilowanie danych i wypełnia zmienne pakietu.
W ograniczeniach pierwszeństwa, które łączą zadanie skryptu z gałęziami podrzędnymi w przepływie pracy, zapisują wyrażenia, które używają wartości zmiennych do kierowania przepływu pracy.
Zobacz też
Konfigurowanie zadania profilowania danych
Podgląd profilu danych