Transformace dat pomocí aktivity skriptu ve službě Azure Data Factory nebo Synapse Analytics

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Aktivity transformace dat v kanálu Data Factory nebo Synapse slouží k transformaci a zpracování nezpracovaných dat do předpovědí a přehledů. Aktivita Skript je jednou z transformačních aktivit, které kanály podporují. Tento článek vychází z článku o transformovaných datech, který představuje obecný přehled transformace dat a podporovaných aktivit transformace.

Pomocí aktivity skriptu můžete spouštět běžné operace pomocí jazyka DML (Data Manipulation Language) a DDL (Data Definition Language). Příkazy DML, jako jsou INSERT, UPDATE, DELETE a SELECT, umožňují uživatelům vkládat, upravovat, odstraňovat a načítat data v databázi. Příkazy DDL, jako jsou CREATE, ALTER a DROP, umožňují správci databáze vytvářet, upravovat a odebírat databázové objekty, jako jsou tabulky, indexy a uživatelé.

Pomocí aktivity Skript můžete vyvolat skript SQL v jednom z následujících úložišť dat ve vašem podniku nebo na virtuálním počítači Azure:

  • Azure SQL Database
  • Azure Synapse Analytics
  • Databáze SQL Serveru. Pokud používáte SQL Server, nainstalujte místní prostředí Integration Runtime na stejný počítač, který je hostitelem databáze nebo na samostatný počítač s přístupem k databázi. Místní prostředí Integration Runtime je komponenta, která propojuje zdroje dat místně nebo na virtuálním počítači Azure s cloudovými službami zabezpečeným a spravovaným způsobem. Podrobnosti najdete v článku o místním prostředí Integration Runtime .
  • Oracle
  • Snowflake

Skript může obsahovat jeden příkaz SQL nebo více příkazů SQL, které se spouštějí postupně. Úlohu Skript můžete použít pro následující účely:

  • Ořízte tabulku při přípravě na vkládání dat.
  • Umožňuje vytvářet, měnit a odstraňovat databázové objekty, jako jsou tabulky a zobrazení.
  • Před načtením dat do nich znovu vytvořte tabulky faktů a dimenzí.
  • Spusťte uložené procedury. Pokud příkaz SQL vyvolá uloženou proceduru, která vrací výsledky z dočasné tabulky, použijte možnost WITH RESULT SETS k definování metadat pro sadu výsledků.
  • Uložte sadu řádků vrácenou z dotazu jako výstup aktivity pro příjem dat.

Podrobnosti o syntaxi

Tady je formát JSON pro definování aktivity skriptu:

{ 
   "name": "<activity name>", 
   "type": "Script", 
   "linkedServiceName": { 
      "referenceName": "<name>", 
      "type": "LinkedServiceReference" 
    }, 
   "typeProperties": { 
      "scripts" : [ 
         { 
            "text": "<Script Block>", 
            "type": "<Query> or <NonQuery>", 
            "parameters":[ 
               { 
                  "name": "<name>", 
                  "value": "<value>", 
                  "type": "<type>", 
                  "direction": "<Input> or <Output> or <InputOutput>", 
                  "size": 256 
               }, 
               ... 
            ] 
         }, 
         ... 
      ],     
         ... 
         ] 
      }, 
      "scriptBlockExecutionTimeout": "<time>",  
      "logSettings": { 
         "logDestination": "<ActivityOutput> or <ExternalStore>", 
         "logLocationSettings":{ 
            "linkedServiceName":{ 
               "referenceName": "<name>", 
               "type": "<LinkedServiceReference>" 
            }, 
            "path": "<folder path>" 
         } 
      } 
    } 
} 

Následující tabulka popisuje tyto vlastnosti JSON:

Název vlastnosti Popis Povinní účastníci
name Název aktivity. Ano
type Typ aktivity, nastavený na "Script". Ano
typeProperties Zadejte vlastnosti pro konfiguraci aktivity skriptu. Ano
linkedServiceName Cílová databáze, na které skript běží. Měl by to být odkaz na propojenou službu. Ano
skripty Pole objektů, které představují skript. No
scripts.text Prostý text bloku dotazů. No
scripts.type Typ bloku dotazů. Může to být Dotaz nebo NonQuery. Výchozí: Dotaz. No
scripts.parameter Pole parametrů skriptu. No
scripts.parameter.name Název parametru No
scripts.parameter.value Hodnota parametru. No
scripts.parameter.type Datový typ parametru. Typ je logický typ a řídí se mapováním typů jednotlivých spojnic. No
scripts.parameter.direction Směr parametru. Může to být Vstup, Výstup, InputOutput. Pokud je směr výstupem, hodnota se ignoruje. Typ ReturnValue není podporován. Nastavte návratovou hodnotu sp na výstupní parametr, který ho načte. No
scripts.parameter.size Maximální velikost parametru. Platí pouze pro parametr směru Output/InputOutput typu string/byte[]. No
scriptBlockExecutionTimeout Doba čekání na dokončení operace spuštění bloku skriptu před vypršením časového limitu. No
log Nastavení Nastavení pro ukládání výstupních protokolů. Pokud není zadaný, protokol skriptu je zakázaný. No
log Nastavení.logDestination Cíl výstupu protokolu. Může to být ActivityOutput nebo ExternalStore. Výchozí: ActivityOutput. No
log Nastavení.logLocation Nastavení Nastavení cílového umístění, pokud je logDestination ExternalStore. No
logSettiongs.logLocation Nastavení.linkedServiceName Propojená služba cílového umístění. Podporuje se jenom úložiště objektů blob. No
log Nastavení.logLocation Nastavení.path Cesta ke složce, pod kterou se budou ukládat protokoly. No

Výstup aktivity

Ukázkový výstup:

{ 
    "resultSetCount": 2, 
    "resultSets": [ 
        { 
            "rowCount": 10, 
            "rows":[ 
                { 
                    "<columnName1>": "<value1>", 
                    "<columnName2>": "<value2>", 
                    ... 
                } 
            ] 
        }, 
        ... 
    ], 
    "recordsAffected": 123, 
    "outputParameters":{ 
        "<parameterName1>": "<value1>", 
        "<parameterName2>": "<value2>" 
    }, 
    "outputLogs": "<logs>", 
    "outputLogsLocation": "<folder path>", 
    "outputTruncated": true, 
    ... 
} 
Název vlastnosti Popis Podmínka
resultSetCount Počet sad výsledků vrácených skriptem Always
resultSets Pole, které obsahuje všechny sady výsledků. Always
resultSets.rowCount Celkový počet řádků v sadě výsledků Always
resultSets.rows Matice řádků v sadě výsledků. Always
záznamy Ovlivněné záznamy Počet řádků ovlivněných řádky skriptem Pokud je scriptType NonQuery.
outputParameters Výstupní parametry skriptu. Pokud je typ parametru Output nebo InputOutput.
outputLogs Protokoly napsané skriptem, například příkaz print. Pokud konektor podporuje příkaz protokolu a enableScriptLogs je true a logLocation Nastavení není k dispozici.
outputLogsPath Úplná cesta k souboru protokolu. Pokud je enableScriptLogs true a logLocation Nastavení je k dispozici.
OutputTruncated Ukazatel toho, jestli výstup překročí limity a zkrátí se. Pokud výstup překročí limity.

Poznámka:

  • Výstup se shromažďuje při každém spuštění bloku skriptu. Konečným výstupem je sloučený výsledek všech výstupů bloku skriptu. Výstupní parametr se stejným názvem v jiném bloku skriptu se přepíše.
  • Vzhledem k tomu, že výstup má omezení velikosti nebo řádků, výstup se zkrátí v následujícím pořadí: protokoly –> parametry –> řádky. Poznámka: To platí pro jeden blok skriptu, což znamená, že výstupní řádky dalšího bloku skriptu nevyřadí předchozí protokoly.
  • Jakákoli chyba způsobená protokolem neprojde aktivitou.
  • Informace o využívání výstupních sad výsledků aktivity v aktivitě down streamu najdete v dokumentaci k výsledkům aktivity vyhledávání.
  • Výstupní protokoly použijte, pokud pro účely protokolování používáte příkazy PRINT. Pokud dotaz vrátí sady výsledků, bude dostupný ve výstupu aktivity a bude omezen na 5 000 řádků nebo 4 MB limitu velikosti.

Konfigurace aktivity skriptu pomocí uživatelského rozhraní

Vložený skript

Screenshot showing the UI to configure an inline script.

Vložené skripty se dobře integrují s CI/CD kanálu, protože je skript uložený jako součást metadat kanálu.

Protokolování

Screenshot showing the UI for the logging settings for a script.

Možnosti protokolování:

  • Zákaz – Není zaprotokolován žádný výstup spuštění.
  • Výstup aktivity – Výstup spuštění skriptu se připojí k výstupu aktivity. Je možné ho využívat podřízenými aktivitami. Velikost výstupu je omezená na 4 MB.
  • Externí úložiště – zachová výstup do úložiště. Tuto možnost použijte, pokud je velikost výstupu větší než 2 MB nebo chcete výstup explicitně zachovat v účtu úložiště.

Poznámka:

Fakturace – Aktivita skriptu se bude účtovat jako aktivity kanálu.

Podívejte se na následující články, které vysvětlují, jak transformovat data jinými způsoby: