Tworzenie synchroniczne transformacji przy użyciu składnik skryptów
Używanie składnika transformacja w przepływ danych Integration Services pakiet do modyfikowania i analizować dane, jak przekazaniem ze źródło do obiekt docelowy.transformacja z synchronicznej wyjść przetwarza każdego wiersza wejściowego, jak przechodziła przez składnik.transformacja z wyjść asynchronicznego czeka, aż po odebraniu wszystkich wierszy danych wejściowych do zakończenia jego przetwarzania.W tym temacie omówiono synchroniczne transformacja.Informacji o transformacjach asynchronicznych, zobacz Tworzenie asynchronicznego transformacji przy użyciu składnik skryptów.Aby uzyskać więcej informacji o różnicach między składnikami synchroniczne i asynchroniczne, zobacz Opis przekształcenia synchroniczne i asynchroniczne.
Aby uzyskać omówienie składnik skryptów, zobacz Rozszerzanie przepływu danych ze składnikiem skryptu.
Składnik skryptów i kodu infrastruktury, generujący można znacznie uprościć proces opracowywania niestandardowego składnik przepływ danych.Jednak aby zrozumieć, jak działa składnik skryptów, użytkownik może być przydatne odczytać kroki, które należy wykonać w tworzeniu niestandardowego składnik przepływ danych w sekcji Opracowywanie danych niestandardowy składnik przepływu, a w szczególności Rozwijanie składnika przekształcenie niestandardowe wyjść synchroniczne.
Wprowadzenie do składnika transformacji synchroniczne
Po dodaniu składnika skryptów do okienka przepływu danych SSIS Projektant, Wybieranie typu składnika skryptu otwiera okno dialogowe i monituje o wybranie typu źródła, miejsca przeznaczenia lub przekształcenie składnika.W tym oknie dialogowym Wybierz transformacji.
Konfigurowanie składnika synchroniczne transformacji w trybie projektowania metadanych
Po wybraniu opcji tworzenia składnika transformacja składnika można skonfigurować za pomocą Script Editor transformacja.Aby uzyskać więcej informacji, zobacz Konfigurowanie składnik skryptów w programie Script Editor składnika.
Do zestaw języka skryptów dla części skryptu jest zestaw ScriptLanguage właściwość skryptu strona Script Editor transformacji.
Ostrzeżenie
Aby zestaw domyślny język wykonywanie skryptów dla składnika wykonywanie skryptów, użyj język skryptowy opcji na Ogólne strona Opcje okno dialogowe.Aby uzyskać więcej informacji, zobacz Strony głównej.
Składnik transformacja przepływ danych ma jedno wejście i obsługuje jeden lub więcej wyjść.Konfigurowanie wejściowe i wyjściowe składnika jest jedną z czynności, które należy wykonać w trybie projektowania metadane za pomocą Script Editor transformacji, zanim napisać niestandardowy skrypt.
Konfigurowanie kolumn danych wejściowych
Składnik transformacja ma jedno wejście.
Na kolumna wprowadzania strona Script Editor transformacji, lista kolumna pokazuje dostępne kolumna z danych wyjściowych składnik nadrzędny przepływ danych.Zaznacz kolumny, które chcesz przekształcić lub przechodzić.Oznacz wszystkie kolumny, które chcesz przekształcić w miejscu, w trybie odczytu i zapisu.
Więcej informacji o Kolumny wprowadzania strona Script Editor transformacji, zobacz Edytor skryptów transformacji (strona kolumn danych wejściowych).
Konfigurowanie nakładów, wyników oraz kolumn wyjściowych
Składnik transformacja obsługuje jeden lub więcej wyjść.
Na wejść i wyjść strona Script Editor transformacji, można zobaczyć, że utworzono wyjściowe jednego, ale dane wyjściowe nie ma kolumn.W tym strona edytora, może potrzebne, należy skonfigurować następujące elementy.
Utwórz jedną lub więcej dodatkowych wyjść, takie jak wiersze zawierające wartości nieoczekiwane dane wyjściowe symulowanego błędu.Użyj Dodać dane wyjściowe i Usunąć wyjściowego przyciski do zarządzania wyjść składnik synchroniczne transformacja.Wszystkie wiersze danych wejściowych są kierowane do wyjść wszystkie dostępne, chyba że wskazują, zamierzają przekierować każdego wiersza do produkcji jednego lub drugiego.Wskazać, zamierzają przekierować wierszy, określając wartość niezerową liczbą całkowitą dla ExclusionGroup Właściwość wyjść.Wprowadzona wartość określoną liczbę całkowitą w ExclusionGroup do identyfikowania wyjść jest nie są znaczące, ale musi użyć tej samej liczby całkowitej konsekwentnie dla określonej grupy wyjść.
Ostrzeżenie
Można również użyć innych niż zero ExclusionGroup wartości właściwość z pojedynczym pliku nie można wyprowadzić wszystkie wiersze.Jednakże w takim przypadek należy jawnie wywołać DirectRowTo<outputbuffer> metoda dla każdego wiersza, który chcesz wysłać dane wyjściowe.
Przypisz nazwę bardziej opisową wejście i wyjście.Składnik skryptów używa tych nazw do generowania właściwości metoda dostępu maszynowy, które będą używane do odwoływania się do danych wejściowych i wyprowadza w skrypcie.
Pozostaw kolumn jak synchroniczne przekształceń.Zazwyczaj synchroniczne transformacja nie dodawać kolumny przepływ danych.Danych zostanie zmodyfikowany w miejsce w buforze i bufor jest przekazywane do następnego składnika w przepływ danych.Jeśli przypadek nie trzeba dodać i skonfigurować kolumn wyjściowych jawnie transformacja wyjść.W edytorze bez żadnych kolumn jawnie zdefiniowane są wyświetlane wyjść.
Dodać kolumny do wyjść symulowanego błędu dla błędów poziom wiersza.Zwykle wiele wyprowadza w tym samym ExclusionGroup mają ten sam zestaw kolumn wyjściowych.Jednak jeśli tworzysz wyjścia symulowanego błędu można dodać więcej kolumn, które zawierają informacje o błędzie.Aby uzyskać informacje dotyczące sposobu aparat przepływu danych procesów wierszy błędów, zobacz Użycie wyjść błąd w składniku przepływu danych.Należy zauważyć, że w składniku skrypt musi napisać własny kod do wypełnienia kolumn dodatkowe informacje odpowiednie błąd.Aby uzyskać więcej informacji, zobacz Symulowanie wyjściowe błąd składnika skryptów.
Więcej informacji o wejść i wyjść strona Script Editor transformacji, zobacz Skrypt transformacji edytora (wejść i wyjść strony).
Dodawanie zmiennych
Jeśli chcesz użyć istniejących zmiennych w skrypcie, można dodać je w ReadOnlyVariables i ReadWriteVariables właściwość pola na skryptu strona Script Editor transformacji.
Po dodaniu wielu zmiennych w polach właściwość Zmienna nazwy należy oddzielić przecinkami.Wiele zmiennych można również wybrać, klikając przycisk wielokropka (…) przycisk Dalej, aby ReadOnlyVariables i ReadWriteVariables pola właściwość, a następnie wybierając zmiennych w wybierz zmienne okno dialogowe.
Aby uzyskać ogólne informacje dotyczące zmiennych składnika skryptów, zobacz Korzystanie ze zmiennych składnik skryptów.
Więcej informacji o skryptu strona Script Editor transformacji, zobacz Edytor skryptów transformacji (skrypt strony).
Składnik synchroniczne transformacji w trybie projektowania kodu skryptów
Po skonfigurowaniu metadane dla składnika można napisać niestandardowy skrypt.In the Script Transformation Editor, on the Script page, click Edit Script to open the Microsoft Visual Studio Tools for Applications (VSTA) IDE where you can add your custom script.The scripting language that you use depends on whether you selected Microsoft Visual Basic 2008 or Microsoft Visual C# 2008 as the script language for the ScriptLanguage property on the Script page.
Ważne informacje dotyczą wszystkich rodzajów składników utworzone przy użyciu składnik skryptów, zobacz Kodowanie i debugowanie składnika skryptów.
Opis automatycznie wygenerowany kod
Po otwarciu IDE VSTA po utworzeniu i konfigurowanie składnika transformacja, edytowalne ScriptMain klasy pojawi się w edytorze kodu z stub dla ProcessInputRow metoda.ScriptMain Klasa jest gdzie napisać kod niestandardowy i ProcessInputRow jest metoda najważniejszych składników transformacja.
Jeśli otworzysz Eksplorator projektu okna w VSTA widać składnik skryptów również został wygenerowany tylko do odczytu, BufferWrapper i ComponentWrapper elementów projektu.ScriptMain Klasa dziedziczy z UserComponent klasy w ComponentWrapper element projektu.
Przy uruchomieniu czas, aparat przepływ danych wywołuje ProcessInput metoda w UserComponent klasy, które zastępuje ProcessInput metoda ScriptComponent Klasa nadrzędnaProcessInput z kolei pętli wierszy w buforze wejściowym i wywołania metoda ProcessInputRow jedną metodę czas dla każdego wiersza.
Pisanie kodu niestandardowego
Składnik transformacja z synchronicznej wyjść jest najprostszą ze wszystkich składników przepływ danych do zapisu.Na przykład dane wyjściowe jednego przykładu w dalszej części tego tematu składa się z następujących kodu niestandardowego:
Row.City = UCase(Row.City)
Row.City = (Row.City).ToUpper();
Aby zakończyć tworzenie składnika niestandardowego synchroniczne transformacja, należy użyć zastąpiona ProcessInputRow metoda do przekształcania danych w każdym wierszu buforu wejściowego.aparat przepływ danych Przekazuje buforu, gdy pełna do następnego składnika przepływem danych.
W zależności od wymagań, można również napisać skrypt PreExecute i PostExecute metod dostępnych w ScriptMain klasy, aby wykonać wstępne lub ostateczne przetwarzanie.
Praca z wiele wyjść
Kierowanie wprowadzania wierszy do jednego z dwóch lub więcej możliwe wyjście nie wymaga niestandardowego kodu znacznie więcej niż scenariuszu dane wyjściowe jednego omówionych wcześniej.Na przykład dwa wyjścia przykładu w dalszej części tego tematu składa się z następującego kodu niestandardowego:
Row.City = UCase(Row.City)
If Row.City = "REDMOND" Then
Row.DirectRowToMyRedmondAddresses()
Else
Row.DirectRowToMyOtherAddresses()
End If
Row.City = (Row.City).ToUpper();
if (Row.City=="REDMOND")
{
Row.DirectRowToMyRedmondAddresses();
}
else
{
Row.DirectRowToMyOtherAddresses();
}
W tym przykładzie składnik skryptów generuje DirectRowTo<OutputBufferX> metody, oparte na nazwach wyjść, które skonfigurowano.Można użyć kodu podobnego bezpośrednich wierszy błędów do wyjścia symulowanego błędu.
Przykłady
Tu przykładach pokazano kod niestandardowy, który jest wymagany w ScriptMain klasy, aby utworzyć składnik synchroniczne transformacja.
Ostrzeżenie
These examples use the Person.Address table in the AdventureWorks2008R2 sample database and pass its first and fourth columns, the int AddressID and nvarchar(30) City columns, through the data flow.Te same dane są używane w źródło, transformacja i przeznaczenia próbek w tej sekcji.Dodatkowe wymagania wstępne i założenia są udokumentowane na przykład każdy.
Jeden przykład transformacji synchroniczne wyjścia
Ten przykład demonstruje składnik synchroniczne transformacja z pojedynczego wyjściowego.Wynikiem tej transformacja przechodzi przez AddressID kolumna i konwertuje City kolumna na wielkie litery.
Jeśli chcesz uruchamiać ten kod przykładowy, należy skonfigurować pakiet i składnik w następujący sposób:
Dodaj nowy składnik skryptów do powierzchni projektanta przepływu danych i skonfiguruj ją jako transformacja.
Połączyć dane wyjściowe źródło lub innego transformacja nowy składnik transformacja w SSIS projektanta.Te dane wyjściowe powinny dostarczyć danych z Person.Address tabela AdventureWorks2008R2 przykładowej bazy danych, która zawiera AddressID i City kolumny.
Otwórz Script Editor transformacji.Na Kolumny wprowadzania strona, zaznacz AddressID i City kolumny.Znak City kolumna jako odczytu / zapisu.
Na wejść i wyjść strona, zmiana nazwy wejściowe i wyjściowe z bardziej opisowe nazwy, takie jak MyAddressInput i MyAddressOutput.Należy zauważyć, że SynchronousInputID danych wyjściowych odpowiada ID dane wejściowe.Dlatego nie trzeba dodać i skonfigurować kolumn wyjściowych.
Na skryptu strona, kliknij przycisk Edytowanie skryptu i wprowadź następujący skrypt.Następnie zamknij środowiska programistycznego skryptu i Script Editor transformacji.
Tworzenie i konfigurowanie obiekt docelowy składnik, który oczekuje AddressID i City kolumny, takie jak SQL Server obiekt docelowy, lub próbki obiekt docelowy składnika wykazane w Tworzenie obiekt docelowy ze składnikiem skryptu.Następnie podłącz wyjście transformacja do obiekt docelowy składnika.Można utworzyć obiekt docelowy tabela, uruchamiając następujące Transact-SQL w AdventureWorks2008R2 bazy danych:
CREATE TABLE [Person].[Address2]( [AddressID] [int] NOT NULL, [City] [nvarchar](30) NOT NULL )
Uruchom próbki.
Public Class ScriptMain
Inherits UserComponent
Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)
Row.City = UCase(Row.City)
End Sub
End Class
public class ScriptMain:
UserComponent
{
public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
{
Row.City = (Row.City).ToUpper();
}
}
Przykład transformacji synchroniczne dwa wyjścia
Ten przykład demonstruje synchronicznego transformacja składnika z dwóch wyjść.Wynikiem tej transformacja przechodzi przez AddressID kolumna i konwertuje City kolumna na wielkie litery.Nazwa miasta jest Redmond, kieruje on wiersza do jednego wyjścia; kieruje on wszystkie wiersze do innego wyjścia.
Jeśli chcesz uruchamiać ten kod przykładowy, należy skonfigurować pakiet i składnik w następujący sposób:
Dodaj nowy składnik skryptów do powierzchni projektanta przepływu danych i skonfiguruj ją jako transformacja.
Połączyć dane wyjściowe źródło lub innego transformacja nowy składnik transformacja w SSIS projektanta.To wyjście powinno dostarczyć danych z Person.Address tabela AdventureWorks2008R2 przykładowej bazy danych, zawierający co najmniej AddressID i City kolumny.
Otwórz Script Editor transformacji.Na Kolumny wprowadzania strona, zaznacz AddressID i City kolumny.Znak City kolumna jako odczytu / zapisu.
Na wejść i wyjść strona, utworzyć drugi wyjściowego.Po dodaniu nowych danych wyjściowych, upewnij się, że możesz zestaw jego SynchronousInputID do ID dane wejściowe.Ta właściwość jest już zestaw pierwsze wyjście, która jest tworzona domyślnie.Dla każdego wyjścia zestaw ExclusionGroup właściwość na wartość niezerowa oznacza podzieli wprowadzania wierszy między dwa wzajemnie wykluczających wyjść.Nie trzeba dodawać żadnych kolumn wyjściowych do wyjść.
Zmień nazwę wejścia i wyjścia z bardziej opisowe nazwy, takie jak MyAddressInput, MyRedmondAddresses i MyOtherAddresses.
Na skryptu strona, kliknij przycisk Edytowanie skryptu i wprowadź następujący skrypt.Następnie zamknij środowiska programistycznego skryptu i Script Editor transformacji.
Utworzyć i skonfigurować dwa składniki docelowe, które oczekują, że AddressID i City kolumny, takie jak SQL Server przeznaczenia, obiekt obiekt docelowy pliku prostego lub składnika docelowego próbki wykazane w Tworzenie docelowych ze składnikiem skryptu.Podłącz każdy wyjść transformacja do jednego z obiekt docelowy składników.Można utworzyć obiekt docelowy tabel, uruchamiając Transact-SQL polecenie podobne do następującego (z tabela unikatowej nazwy) w AdventureWorks2008R2 bazy danych:
CREATE TABLE [Person].[Address2]( [AddressID] [int] NOT NULL, [City] [nvarchar](30) NOT NULL
Uruchom próbki.
Public Class ScriptMain
Inherits UserComponent
Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)
Row.City = UCase(Row.City)
If Row.City = "REDMOND" Then
Row.DirectRowToMyRedmondAddresses()
Else
Row.DirectRowToMyOtherAddresses()
End If
End Sub
End Class
public class ScriptMain:
UserComponent
public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
{
Row.City = (Row.City).ToUpper();
if (Row.City == "REDMOND")
{
Row.DirectRowToMyRedmondAddresses();
}
else
{
Row.DirectRowToMyOtherAddresses();
}
}
}
|