Menggabungkan Tugas Pembuatan Profil Data dalam Alur Kerja Paket

Berlaku untuk: Integration Runtime SSIS SQL Server di Azure Data Factory

Pembuatan profil dan pembersihan data bukan kandidat untuk proses otomatis pada tahap awal mereka. Dalam SQL Server Integration Services, output tugas Pembuatan Profil Data biasanya memerlukan analisis visual dan penilaian manusia untuk menentukan apakah pelanggaran yang dilaporkan bermakna atau berlebihan. Bahkan setelah mengenali masalah kualitas data, masih harus ada rencana yang dipikirkan dengan cermat yang membahas pendekatan terbaik untuk pembersihan.

Namun, setelah kriteria untuk kualitas data ditetapkan, Anda mungkin ingin mengotomatiskan analisis berkala dan pembersihan sumber data. Pertimbangkan skenario ini:

  • Memeriksa kualitas data sebelum beban inkremental. Gunakan tugas Pembuatan Profil Data untuk menghitung Profil Rasio Null Kolom dari data baru yang ditujukan untuk kolom CustomerName dalam tabel Pelanggan. Jika persentase nilai null lebih besar dari 20%, kirim pesan email yang berisi output profil ke operator dan akhiri paket. Jika tidak, lanjutkan beban inkremental.

  • Mengotomatiskan pembersihan ketika kondisi yang ditentukan terpenuhi. Gunakan tugas Pembuatan Profil Data untuk menghitung Profil Penyertaan Nilai kolom Status terhadap tabel status pencarian, dan kolom Kode Pos/Kode Pos terhadap tabel pencarian kode pos. Jika kekuatan penyertaan nilai status kurang dari 80%, tetapi kekuatan penyertaan nilai Kode Pos/Kode Pos lebih besar dari 99%, ini menunjukkan dua hal. Pertama, data status buruk. Kedua, data Kode Pos/Kode Pos bagus. Luncurkan tugas Aliran Data yang membersihkan data status dengan melakukan pencarian nilai status yang benar dari nilai Kode Pos/Kode Pos saat ini.

Setelah Anda memiliki alur kerja tempat Anda dapat menggabungkan tugas Aliran Data, Anda harus memahami langkah-langkah yang diperlukan untuk menambahkan tugas ini. Bagian berikutnya menjelaskan proses umum penggabungan tugas Aliran Data. Dua bagian terakhir menjelaskan cara menyambungkan tugas Aliran Data baik langsung ke sumber data atau untuk mengubah data dari Aliran Data.

Menentukan Alur Kerja Umum untuk Tugas Aliran Data

Prosedur berikut menguraikan pendekatan umum untuk menggunakan output tugas Pembuatan Profil Data dalam alur kerja paket.

Untuk menggunakan output tugas Pembuatan Profil Data secara terprogram dalam paket

  1. Menambahkan dan mengonfigurasi tugas Pembuatan Profil Data dalam paket.

  2. Konfigurasikan variabel paket untuk menyimpan nilai yang ingin Anda ambil dari hasil profil.

  3. Menambahkan dan mengonfigurasi tugas Skrip. Sambungkan tugas Skrip ke tugas Pembuatan Profil Data. Dalam tugas Skrip, tulis kode yang membaca nilai yang diinginkan dari file output tugas Pembuatan Profil Data dan mengisi variabel paket.

  4. Dalam batasan prioritas yang menyambungkan tugas Skrip ke cabang hilir dalam alur kerja, tulis ekspresi yang menggunakan nilai variabel untuk mengarahkan alur kerja.

Saat memasukkan tugas Pembuatan Profil Data ke dalam alur kerja paket, ingatlah kedua fitur tugas ini:

  • Output tugas. Tugas Pembuatan Profil Data menulis outputnya ke file atau variabel paket dalam format XML sesuai dengan skema DataProfile.xsd. Oleh karena itu, Anda harus mengkueri output XML jika Anda ingin menggunakan hasil profil dalam alur kerja bersyarah dari paket. Anda dapat dengan mudah menggunakan bahasa kueri JalurX untuk mengkueri output XML ini. Untuk mempelajari struktur output XML ini, Anda dapat membuka file output sampel atau skema itu sendiri. Untuk membuka file output atau skema, Anda dapat menggunakan Microsoft Visual Studio, editor XML lain, atau editor teks, seperti Notepad.

    Catatan

    Beberapa hasil profil yang ditampilkan di Penampil Profil Data adalah nilai terhitung yang tidak ditemukan secara langsung dalam output. Misalnya, output Profil Rasio Null Kolom berisi jumlah total baris dan jumlah baris yang berisi nilai null. Anda harus mengkueri kedua nilai ini, lalu menghitung persentase baris yang berisi nilai null, untuk mendapatkan rasio null kolom.

  • Input tugas. Tugas Pembuatan Profil Data membaca inputnya dari tabel SQL Server. Oleh karena itu, Anda harus menyimpan data yang ada dalam memori ke tabel penahapan jika Anda ingin memprofilkan data yang telah dimuat dan diubah dalam aliran data.

Bagian berikut menerapkan alur kerja umum ini ke data pembuatan profil yang berasal langsung dari sumber data eksternal atau yang diubah dari tugas Aliran Data. Bagian ini juga menunjukkan cara menangani persyaratan input dan output tugas Aliran Data.

Menyambungkan Tugas Pembuatan Profil Data Langsung ke Sumber Data Eksternal

Tugas Pembuatan Profil Data dapat memprofilkan data yang berasal langsung dari sumber data. Untuk mengilustrasikan kemampuan ini, contoh berikut menggunakan tugas Pembuatan Profil Data untuk menghitung Profil Rasio Null Kolom pada kolom tabel Person.Address dalam database AdventureWorks2022. Kemudian, contoh ini menggunakan tugas Skrip untuk mengambil hasil dari file output dan mengisi variabel paket yang dapat digunakan untuk mengarahkan alur kerja.

Catatan

Kolom AddressLine2 dipilih untuk contoh sederhana ini karena kolom ini berisi persentase nilai null yang tinggi.

Contoh ini terdiri dari langkah-langkah berikut:

  • Mengonfigurasi manajer koneksi yang terhubung ke sumber data eksternal dan ke file output yang akan berisi hasil profil.

  • Mengonfigurasi variabel paket yang akan menyimpan nilai yang diperlukan oleh tugas Pembuatan Profil Data.

  • Mengonfigurasi tugas Pembuatan Profil Data untuk menghitung Profil Rasio Null Kolom.

  • Mengonfigurasi tugas Skrip untuk mengerjakan output XML dari tugas Pembuatan Profil Data.

  • Mengonfigurasi batasan prioritas yang akan mengontrol cabang hilir mana dalam alur kerja yang dijalankan berdasarkan hasil tugas Pembuatan Profil Data.

Mengonfigurasi Pengelola Koneksi

Untuk contoh ini, ada dua manajer koneksi:

  • Pengelola koneksi ADO.NET yang tersambung ke database AdventureWorks2022.

  • Manajer koneksi File yang membuat file output yang akan menyimpan hasil tugas Pembuatan Profil Data.

Untuk mengonfigurasi pengelola koneksi
  1. Di SQL Server Data Tools (SSDT), buat paket Layanan Integrasi baru.

  2. Tambahkan pengelola koneksi ADO.NET ke paket. Konfigurasikan pengelola koneksi ini untuk menggunakan Penyedia Data NET untuk SQL Server (SqlClient) dan untuk menyambungkan ke instans database AdventureWorks2022 yang tersedia.

    Secara default, pengelola koneksi memiliki nama berikut: <nama> server. AdventureWorks1.

  3. Tambahkan manajer koneksi File ke paket. Konfigurasikan pengelola koneksi ini untuk membuat file output untuk tugas Pembuatan Profil Data.

    Contoh ini menggunakan nama file, DataProfile1.xml. Secara default, pengelola koneksi memiliki nama yang sama dengan file.

Mengonfigurasi Variabel Paket

Contoh ini menggunakan dua variabel paket:

  • Variabel ProfileConnectionName meneruskan nama manajer koneksi File ke tugas Skrip.

  • Variabel AddressLine2NullRatio melewati rasio null terhitung untuk kolom ini dari tugas Skrip ke paket.

Untuk mengonfigurasi variabel paket yang akan menyimpan hasil profil
  • Di jendela Variabel , tambahkan dan konfigurasikan dua variabel paket berikut:

    • Masukkan nama, ProfileConnectionName, untuk salah satu variabel dan atur jenis variabel ini ke String.

    • Masukkan nama, AddressLine2NullRatio, untuk variabel lain dan atur jenis variabel ini ke Ganda.

Mengonfigurasi Tugas Pembuatan Profil Data

Tugas Pembuatan Profil Data harus dikonfigurasi dengan cara berikut:

  • Untuk menggunakan data yang disediakan manajer koneksi ADO.NET sebagai input.

  • Untuk melakukan profil Rasio Null Kolom pada data input.

  • Untuk menyimpan hasil profil ke file yang terkait dengan manajer koneksi File.

Untuk mengonfigurasi tugas Pembuatan Profil Data
  1. Ke Alur Kontrol, tambahkan tugas Pembuatan Profil Data.

  2. Buka Editor Tugas Pembuatan Profil Data untuk mengonfigurasi tugas.

  3. Pada halaman Umum editor, untuk Tujuan, pilih nama pengelola koneksi File yang telah Anda konfigurasi sebelumnya.

  4. Pada halaman Permintaan Profil editor, buat Profil Rasio Null Kolom baru.

  5. Di panel Properti permintaan , untuk ConnectionManager, pilih pengelola koneksi ADO.NET yang telah Anda konfigurasi sebelumnya. Kemudian, untuk TableOrView, pilih Person.Address.

  6. Tutup Editor Tugas Pembuatan Profil Data.

Mengonfigurasi Tugas Skrip

Tugas Skrip harus dikonfigurasi untuk mengambil hasil dari file output dan mengisi variabel paket yang sebelumnya dikonfigurasi.

Untuk mengonfigurasi tugas Skrip
  1. Ke Alur Kontrol, tambahkan tugas Skrip.

  2. Sambungkan tugas Skrip ke tugas Pembuatan Profil Data.

  3. Buka Editor Tugas Skrip untuk mengonfigurasi tugas.

  4. Pada halaman Skrip , pilih bahasa pemrograman pilihan Anda. Kemudian, buat dua variabel paket tersedia untuk skrip:

    1. Untuk ReadOnlyVariables, pilih ProfileConnectionName.

    2. Untuk ReadWriteVariables, pilih AddressLine2NullRatio.

  5. Pilih Edit Skrip untuk membuka lingkungan pengembangan skrip.

  6. Tambahkan referensi ke namespace System.Xml.

  7. Masukkan kode sampel yang sesuai dengan bahasa pemrograman Anda:

    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 Class  
    
    using 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;  
    
      }  
    
    }  
    

    Catatan

    Kode sampel yang ditunjukkan dalam prosedur ini menunjukkan cara memuat output tugas Pembuatan Profil Data dari file. Untuk memuat output tugas Pembuatan Profil Data dari variabel paket sebagai gantinya, lihat kode sampel alternatif yang mengikuti prosedur ini.

  8. Tutup lingkungan pengembangan skrip, lalu tutup Editor Tugas Skrip.

Alternatif Code-Reading Output Profil dari Variabel

Prosedur sebelumnya menunjukkan cara memuat output tugas Pembuatan Profil Data dari file. Namun, metode alternatif adalah memuat output ini dari variabel paket. Untuk memuat output dari variabel, Anda harus membuat perubahan berikut pada kode sampel:

  • Panggil metode LoadXml dari kelas XmlDocument alih-alih metode Muat .

  • Di Editor Tugas Skrip, tambahkan nama variabel paket yang berisi output profil ke daftar ReadOnlyVariables tugas.

  • Teruskan nilai string variabel ke metode LoadXML , seperti yang ditunjukkan dalam contoh kode berikut. (Contoh ini menggunakan "ProfileOutput" sebagai nama variabel paket yang berisi output profil.)

    Dim outputString As String  
    outputString = Dts.Variables("ProfileOutput").Value.ToString()  
    ...  
    profileOutput.LoadXml(outputString)  
    
    string outputString;  
    outputString = Dts.Variables["ProfileOutput"].Value.ToString();  
    ...  
    profileOutput.LoadXml(outputString);  
    

Mengonfigurasi Batasan Prioritas

Batasan prioritas harus dikonfigurasi untuk mengontrol cabang hilir mana dalam alur kerja yang dijalankan berdasarkan hasil tugas Pembuatan Profil Data.

Untuk mengonfigurasi batasan prioritas
  • Dalam batasan prioritas yang menyambungkan tugas Skrip ke cabang hilir dalam alur kerja, tulis ekspresi yang menggunakan nilai variabel untuk mengarahkan alur kerja.

    Misalnya, Anda dapat mengatur operasi Evaluasi dari batasan prioritas ke Ekspresi dan Batasan. Kemudian, Anda dapat menggunakan @AddressLine2NullRatio < .90 sebagai nilai ekspresi. Ini menyebabkan alur kerja mengikuti jalur yang dipilih ketika tugas sebelumnya berhasil, dan ketika persentase nilai null di kolom yang dipilih kurang dari 90%.

Menyambungkan Tugas Pembuatan Profil Data ke Data yang Diubah dari Aliran Data

Alih-alih membuat profil data langsung dari sumber data, Anda dapat memprofilkan data yang telah dimuat dan diubah dalam aliran data. Namun, tugas Pembuatan Profil Data hanya berfungsi terhadap data yang bertahan, bukan terhadap data dalam memori. Oleh karena itu, Anda harus terlebih dahulu menggunakan komponen tujuan untuk menyimpan data yang diubah ke tabel penahapan.

Catatan

Saat mengonfigurasi tugas Pembuatan Profil Data, Anda harus memilih tabel dan kolom yang sudah ada. Oleh karena itu, Anda harus membuat tabel penahapan pada waktu desain sebelum Anda dapat mengonfigurasi tugas. Dengan kata lain, skenario ini tidak memungkinkan Anda menggunakan tabel sementara yang dibuat pada durasi.

Setelah menyimpan data ke tabel penahapan, Anda bisa melakukan tindakan berikut:

  • Gunakan tugas Pembuatan Profil Data untuk membuat profil data.

  • Gunakan tugas Skrip untuk membaca hasil seperti yang dijelaskan sebelumnya dalam topik ini.

  • Gunakan hasil tersebut untuk mengarahkan alur kerja paket berikutnya.

Prosedur berikut ini menyediakan pendekatan umum untuk menggunakan tugas Pembuatan Profil Data untuk memprofilkan data yang telah diubah oleh aliran data. Banyak dari langkah-langkah ini mirip dengan yang dijelaskan sebelumnya untuk pembuatan profil data yang berasal langsung dari sumber data eksternal. Anda mungkin ingin meninjau langkah-langkah sebelumnya untuk informasi selengkapnya tentang cara mengonfigurasi berbagai komponen.

Untuk menggunakan tugas Pembuatan Profil Data dalam aliran data

  1. Di SQL Server Data Tools (SSDT), buat paket.

  2. Di Aliran Data, tambahkan, konfigurasikan, dan sambungkan sumber dan transformasi yang sesuai.

  3. Di Aliran Data, tambahkan, konfigurasikan, dan sambungkan komponen tujuan yang menyimpan data yang diubah ke tabel penahapan.

  4. Di Alur Kontrol, tambahkan dan konfigurasikan tugas Pembuatan Profil Data yang menghitung profil yang diinginkan terhadap data yang diubah dalam tabel penahapan. Sambungkan tugas Pembuatan Profil Data ke tugas Aliran Data.

  5. Konfigurasikan variabel paket untuk menyimpan nilai yang ingin Anda ambil dari hasil profil.

  6. Menambahkan dan mengonfigurasi tugas Skrip. Sambungkan tugas Skrip ke tugas Pembuatan Profil Data. Dalam tugas Skrip, tulis kode yang membaca nilai yang diinginkan dari output tugas Pembuatan Profil Data dan mengisi variabel paket.

  7. Dalam batasan prioritas yang menyambungkan tugas Skrip ke cabang hilir dalam alur kerja, tulis ekspresi yang menggunakan nilai variabel untuk mengarahkan alur kerja.

Lihat juga

Penyiapan Tugas Pembuatan Profil Data
Penampil Profil Data