SqlTransformCommandText
<SqlTransformCommandText></SqlTransformCommandText> służy do pisania zapytań SQL, które są wykonywane podczas importu danych. W przypadku użytkowania bardziej niż wskazane jest posiadanie zainstalowanego SQL Management Studio lub podobnego oprogramowania w celu debugowania kwerendy. Zasadniczo działa to w ten sposób, że pobiera dane z wejścia, ładuje je do beforeTashaIOSqlEditTable w bazie danych Tashi, wykonuje kwerendę i zapisuje ją do afterTashaIOSqlEditTable, gdzie następnie przechodzi przez scenarioimporter.
SqlTransformCommandText uruchamia się po połączeniu z bazą danych dystrybucji, GlobalCharReplace, GlobalReplace i ColumnsRename, ale przed ColumnsHeader, ColumnsReplace itp.
Użycie
Powiedzmy, że plik importu (na przykład .xlsx) ma następującą strukturę:
Zamówienie | NazwaKlienta | Ulica | KodPocztowy | Miasto | Ziemia | Telefon | WagaKG | Dobra |
Obj123 | Zakaznik1 | Veselá 52 | 75651 | Zašová | CZ | +420603123456 | 40,00 | 42100 |
Obj456 | Zakaznik2 | Náměstí 5/3 | 75701 | Valašské Meziříčí | CZ | +420603987654 | 29 | 10352 |
Jeśli chcemy wykonać SQL querry podczas importu, musimy zacząć od:
<SqlTransformCommandText><![CDATA[
SELECT * INTO [afterTashaIOSqlEditTable] --tabela z danymi wyjściowymi FROM [beforeTashaIOSqlEditTable] --tabela z danymi wejściowymi]]>
</SqlTransformCommandText>
W bazie danych Tasha tworzone są dwie tabele: beforeTashaIOSqlEditTable i afterTashaIOSqlEditTable. Jeśli zrzucimy dane z beforeTashaIOSqlEditTable, możemy zobaczyć, co trafia do Tashy
nazwy kolumn są zmieniane w SQL na col0_Customer, col1_CustomerName... Przedrostek "colX_" jest usuwany przez Tashę i nie trzeba go zauważać.
Gdy znamy strukturę danych wejściowych, możliwe jest modyfikowanie zapytań (podobnie jak w przypadku odczytywania danych z bazy SQL.)
<SqlTransformCommandText> <![CDATA[
SELECT [col0_Zakazka] AS id ,[col1_NazevZakaznika] AS name ,CONCAT([col2_Ulice],', ',[col3_PSC],' ',[col4_Mesto]) as address ,0 AS x ,0 AS y ,[col6_Telefon] AS mobile ,CASE WHEN [col7_HmotnostKG] IS NULL THEN 0 ELSE [col7_HmotnostKG] END AS demand1 ,5 as duration ,'0600' as start1 ,'1800' as end1 ,2 as precedence ,'delivery' as stoptype ,[col5_Zeme] ,[col8_Dobirka] , specialcodes INTO [afterTashaIOSqlEditTable] --tabulka s výstupními daty FROM [beforeTashaIOSqlEditTable] --tabulka se vstupními daty
]]> </SqlTransformCommandText> Ve scenarioimporteru pak je pak možné pracovat standardním způsobem:
<ColumnsCalculated>
<string>dynamic;dobirka;dynamic;dobirka;;dynamicdobirka==?0:dynamicdobirka</string> <string>job;specialcodes;job;specialcodes;dynamic;dobirka;;dynamicdobirka>0?hotovost:jobspecialcodes</string>
</ColumnsCalculated>
SqlTransformCommandText obsługuje zwykłe polecenia SQL, ale nie może na przykład odczytywać danych do tabel tymczasowych.