Kopiowanie danych do i z lokalnego systemu plików przy użyciu Azure Data Factory

Uwaga

Ten artykuł dotyczy wersji 1 usługi Data Factory. Jeśli używasz bieżącej wersji usługi Data Factory, zobacz Łącznik systemu plików w wersji 2.

W tym artykule wyjaśniono, jak używać działania kopiowania w Azure Data Factory do kopiowania danych do/z lokalnego systemu plików. Jest on oparty na artykule Działania przenoszenia danych , który przedstawia ogólny przegląd przenoszenia danych za pomocą działania kopiowania.

Uwaga

Aby korzystać z platformy Azure, zalecany jest moduł Azure Az programu PowerShell. Zobacz Instalowanie Azure PowerShell, aby rozpocząć pracę. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Obsługiwane scenariusze

Dane z lokalnego systemu plików można skopiować do następujących magazynów danych:

Kategoria Magazyn danych
Azure Azure Blob Storage
Usługa Azure Data Lake Storage 1. generacji
Azure Cosmos DB (interfejs API SQL)
Azure SQL Database
Azure Synapse Analytics
indeks Azure Cognitive Search
Azure Table storage
Bazy danych SQL Server
Oracle
Plik System plików

Dane z następujących magazynów danych można skopiować do lokalnego systemu plików:

Kategoria Magazyn danych
Azure Azure Blob Storage
Azure Cosmos DB (interfejs API SQL)
Usługa Azure Data Lake Storage 1. generacji
Azure SQL Database
Azure Synapse Analytics
Azure Table storage
Bazy danych Amazon Redshift
DB2
MySQL
Oracle
PostgreSQL
SAP Business Warehouse
SAP HANA
SQL Server
Sybase
Teradata
NoSQL Cassandra
MongoDB
Plik Amazon S3
System plików
FTP
HDFS
SFTP
Inne Ogólne HTTP
Ogólne OData
Ogólne ODBC
Salesforce
Tabela internetowa (tabela z kodu HTML)

Uwaga

Działanie kopiowania nie usuwa pliku źródłowego po pomyślnym skopiowaniu go do miejsca docelowego. Jeśli musisz usunąć plik źródłowy po pomyślnej kopii, utwórz działanie niestandardowe, aby usunąć plik i użyć działania w potoku.

Włączanie łączności

Usługa Data Factory obsługuje nawiązywanie połączeń z lokalnym systemem plików i z systemu plików za pośrednictwem usługi Zarządzanie danymi Gateway. Bramę Zarządzanie danymi należy zainstalować w środowisku lokalnym, aby usługa Data Factory łączyła się z dowolnym obsługiwanym lokalnym magazynem danych, w tym z systemem plików. Aby dowiedzieć się więcej na temat Zarządzanie danymi Gateway i instrukcji krok po kroku dotyczących konfigurowania bramy, zobacz Przenoszenie danych między źródłami lokalnymi a chmurą przy użyciu usługi Zarządzanie danymi Gateway. Oprócz Zarządzanie danymi Gateway nie trzeba instalować żadnych innych plików binarnych, aby komunikować się z lokalnym systemem plików i z systemu plików. Należy zainstalować bramę Zarządzanie danymi i używać jej nawet wtedy, gdy system plików znajduje się na maszynie wirtualnej IaaS platformy Azure. Aby uzyskać szczegółowe informacje o bramie, zobacz Zarządzanie danymi Gateway.

Aby użyć udziału plików systemu Linux, zainstaluj protokół Samba na serwerze z systemem Linux i zainstaluj bramę Zarządzanie danymi na serwerze z systemem Windows. Instalowanie bramy Zarządzanie danymi na serwerze z systemem Linux nie jest obsługiwane.

Wprowadzenie

Potok można utworzyć za pomocą działania kopiowania, które przenosi dane do/z systemu plików przy użyciu różnych narzędzi/interfejsów API.

Najprostszym sposobem utworzenia potoku jest użycie Kreatora kopiowania. Zobacz Samouczek: tworzenie potoku przy użyciu Kreatora kopiowania , aby zapoznać się z szybkim przewodnikiem dotyczącym tworzenia potoku przy użyciu kreatora kopiowania danych.

Do utworzenia potoku można również użyć następujących narzędzi: Program Visual Studio, Azure PowerShell, szablon usługi Azure Resource Manager, interfejs API platformy .NET i interfejs API REST. Zobacz samouczek działanie Kopiuj, aby uzyskać instrukcje krok po kroku dotyczące tworzenia potoku za pomocą działania kopiowania.

Niezależnie od tego, czy używasz narzędzi, czy interfejsów API, należy wykonać następujące kroki, aby utworzyć potok, który przenosi dane z magazynu danych źródłowych do magazynu danych ujścia:

  1. Tworzenie fabryki danych. Fabryka danych może zawierać co najmniej jeden potok.
  2. Utwórz połączone usługi , aby połączyć wejściowe i wyjściowe magazyny danych z fabryką danych. Jeśli na przykład kopiujesz dane z usługi Azure Blob Storage do lokalnego systemu plików, utworzysz dwie połączone usługi, aby połączyć lokalny system plików i konto usługi Azure Storage z fabryką danych. Aby uzyskać informacje o właściwościach usługi połączonej, które są specyficzne dla lokalnego systemu plików, zobacz sekcję właściwości połączonej usługi .
  3. Utwórz zestawy danych do reprezentowania danych wejściowych i wyjściowych dla operacji kopiowania. W przykładzie wymienionym w ostatnim kroku utworzysz zestaw danych w celu określenia kontenera obiektów blob i folderu zawierającego dane wejściowe. Utworzysz inny zestaw danych, aby określić folder i nazwę pliku (opcjonalnie) w systemie plików. Aby uzyskać informacje o właściwościach zestawu danych specyficznych dla lokalnego systemu plików, zobacz sekcję właściwości zestawu danych .
  4. Utwórz potok z działaniem kopiowania, które pobiera zestaw danych jako dane wejściowe i zestaw danych jako dane wyjściowe. W podanym wcześniej przykładzie jako źródło i system plikówSink jako ujście działania kopiowania należy użyć obiektu BlobSource. Podobnie, jeśli kopiujesz z lokalnego systemu plików do Azure Blob Storage, w działaniu kopiowania użyjesz polecenia FileSystemSource i BlobSink. Aby uzyskać informacje o właściwościach działania kopiowania specyficznych dla lokalnego systemu plików, zobacz sekcję właściwości działania kopiowania . Aby uzyskać szczegółowe informacje na temat używania magazynu danych jako źródła lub ujścia, kliknij link w poprzedniej sekcji dla magazynu danych.

Podczas korzystania z kreatora definicje JSON dla tych jednostek usługi Data Factory (połączone usługi, zestawy danych i potok) są tworzone automatycznie. W przypadku korzystania z narzędzi/interfejsów API (z wyjątkiem interfejsu API platformy .NET) należy zdefiniować te jednostki usługi Data Factory przy użyciu formatu JSON. Przykłady z definicjami JSON dla jednostek usługi Data Factory, które są używane do kopiowania danych do/z systemu plików, zobacz sekcję przykłady JSON w tym artykule.

W poniższych sekcjach przedstawiono szczegółowe informacje o właściwościach JSON używanych do definiowania jednostek usługi Data Factory specyficznych dla systemu plików:

Właściwości połączonej usługi

Lokalny system plików można połączyć z fabryką danych platformy Azure za pomocą połączonej usługi On-Premises File Server . Poniższa tabela zawiera opisy elementów JSON specyficznych dla połączonej usługi On-Premises File Server.

Właściwość Opis Wymagane
typ Upewnij się, że właściwość typu jest ustawiona na OnPremisesFileServer. Tak
host Określa ścieżkę główną folderu, który chcesz skopiować. Użyj znaku ucieczki " \ " dla znaków specjalnych w ciągu. Zobacz Przykładowe połączone definicje usług i zestawów danych . Tak
userid Określ identyfikator użytkownika, który ma dostęp do serwera. Nie (jeśli wybierzesz pozycję encryptedCredential)
hasło Określ hasło użytkownika (userid). Nie (jeśli wybierzesz pozycję encryptedCredential)
encryptedCredential Określ zaszyfrowane poświadczenia, które można uzyskać, uruchamiając polecenie cmdlet New-AzDataFactoryEncryptValue. Nie (jeśli zdecydujesz się określić identyfikator użytkownika i hasło w postaci zwykłego tekstu)
gatewayName Określa nazwę bramy, która powinna być używana przez usługę Data Factory do nawiązywania połączenia z lokalnym serwerem plików. Tak

Przykładowe połączone definicje usług i zestawów danych

Scenariusz Host w definicji połączonej usługi folderPath w definicji zestawu danych
Folder lokalny na maszynie Zarządzanie danymi Gateway:

Przykłady: D:\* lub D:\folder\podfolder\*
D:\\ (w przypadku Zarządzanie danymi Gateway 2.0 i nowszych wersji)

localhost (w przypadku starszych wersji niż Zarządzanie danymi Gateway 2.0)
.\\ or folder\\subfolder (dla Zarządzanie danymi Gateway 2.0 i nowszych wersji)

D:\\ lub D:\\folder\\subfolder (w przypadku bramy w wersji poniżej 2.0)
Zdalny folder udostępniony:

Przykłady: \\myserver\share\* lub \\myserver\share\folder\subfolder\*
\\\\myserver\\share .\\ or folder\\podfolder

Uwaga

Podczas tworzenia za pośrednictwem interfejsu użytkownika nie trzeba wprowadzać podwójnego ukośnika odwrotnego (\\), aby uniknąć takiego jak w przypadku JSON, określ pojedynczy ukośnik odwrotny.

Przykład: używanie nazwy użytkownika i hasła w postaci zwykłego tekstu

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Przykład: Korzystanie z zaszyfrowanego obiektucredential

{
  "Name": " OnPremisesFileServerLinkedService ",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "D:\\",
      "encryptedCredential": "WFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5xxxxxxxxxxxxxxxxx",
      "gatewayName": "mygateway"
    }
  }
}

Właściwości zestawu danych

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania zestawów danych, zobacz Tworzenie zestawów danych. Sekcje, takie jak struktura, dostępność i zasady kodu JSON zestawu danych, są podobne dla wszystkich typów zestawów danych.

Sekcja typeProperties jest inna dla każdego typu zestawu danych. Zawiera on informacje, takie jak lokalizacja i format danych w magazynie danych. Sekcja typeProperties dla zestawu danych typu FileShare ma następujące właściwości:

Właściwość Opis Wymagane
folderPath Określa ścieżkę podrzędną do folderu. Użyj znaku ucieczki "" dla znaków specjalnych w ciągu. Filtr wieloznaczny nie jest obsługiwany. Zobacz Przykładowe połączone definicje usług i zestawów danych .

Tę właściwość można połączyć z partycjąBy , aby mieć ścieżki folderów na podstawie daty rozpoczęcia/zakończenia wycinka.
Tak
fileName Określ nazwę pliku w folderPath , jeśli chcesz, aby tabela odwołyła się do określonego pliku w folderze. Jeśli nie określisz żadnej wartości dla tej właściwości, tabela wskazuje wszystkie pliki w folderze.

Jeśli parametr fileName nie jest określony dla wyjściowego zestawu danych i parametr preserveHierarchy nie jest określony w ujściu działania, nazwa wygenerowanego pliku ma następujący format:

Data.<Guid>.txt (Przykład: Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt)
Nie
Filefilter Określ filtr, który ma być używany do wybierania podzestawu plików w folderPath, a nie wszystkich plików.

Dozwolone wartości to: * (wiele znaków) i ? (pojedynczy znak).

Przykład 1: "fileFilter": "*.log"
Przykład 2: "fileFilter": 2014-1-?.txt"

Należy pamiętać, że parametr fileFilter ma zastosowanie do wejściowego zestawu danych FileShare.
Nie
partitionedBy Można użyć partycjiBy, aby określić dynamiczny folderPath/fileName dla danych szeregów czasowych. Przykładem jest folderPath sparametryzowany dla każdej godziny danych. Nie
format Obsługiwane są następujące typy formatów: TextFormat, JsonFormat, AvroFormat, OrcFormat, ParquetFormat. Ustaw właściwość type w formacie na jedną z tych wartości. Aby uzyskać więcej informacji, zobacz sekcje Format tekstu, Format Json, Avro Format, Orc Format i Parquet Format .

Jeśli chcesz skopiować pliki zgodnie z rzeczywistym użyciem między magazynami opartymi na plikach (kopiowaniem binarnym), pomiń sekcję formatowania zarówno w definicjach zestawu danych wejściowych, jak i wyjściowych.
Nie
kompresja Określ typ i poziom kompresji danych. Obsługiwane typy to: GZip, Deflate, BZip2 i ZipDeflate. Obsługiwane poziomy to: optymalne i najszybsze. zobacz Formaty plików i kompresji w Azure Data Factory. Nie

Uwaga

Nie można jednocześnie używać fileName i fileFilter.

Używanie właściwości partitionedBy

Jak wspomniano w poprzedniej sekcji, można określić dynamiczny folderPath i nazwę pliku dla danych szeregów czasowych z właściwością partitionedBy , funkcjami usługi Data Factory i zmiennymi systemowymi.

Aby dowiedzieć się więcej na temat zestawów danych szeregów czasowych, planowania i wycinków, zobacz Tworzenie zestawów danych, Planowanie i wykonywanie oraz Tworzenie potoków.

Przykład 1:

"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
    { "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],

W tym przykładzie element {Slice} jest zastępowany wartością zmiennej systemowej usługi Data Factory SliceStart w formacie (RRRRMDDHH). Fragmentator Start odnosi się do godziny rozpoczęcia wycinka. FolderPath jest inny dla każdego wycinka. Na przykład: wikidatagateway/wikisampledataout/2014100103 lub wikidatagateway/wikisampledataout/2014100104.

Przykład 2:

"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
[
    { "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
    { "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
    { "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
    { "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],

W tym przykładzie rok, miesiąc, dzień i godzina fragmentatora Są wyodrębniane do oddzielnych zmiennych używanych przez właściwości folderPath i fileName.

Właściwości działania kopiowania

Aby uzyskać pełną listę właściwości sekcji & dostępnych do definiowania działań, zobacz artykuł Tworzenie potoków . Właściwości, takie jak nazwa, opis, zestawy danych wejściowych i wyjściowych oraz zasady są dostępne dla wszystkich typów działań. Natomiast właściwości dostępne w sekcji typeProperties działania różnią się w zależności od każdego typu działania.

W przypadku działanie Kopiuj różnią się w zależności od typów źródeł i ujściów. W przypadku przenoszenia danych z lokalnego systemu plików należy ustawić typ źródłowy w działaniu kopiowania na FileSystemSource. Podobnie, jeśli przenosisz dane do lokalnego systemu plików, ustawisz typ ujścia w działaniu kopiowania na FileSystemSink. Ta sekcja zawiera listę właściwości obsługiwanych przez usługę FileSystemSource i FileSystemSink.

PlikSystemSource obsługuje następujące właściwości:

Właściwość Opis Dozwolone wartości Wymagane
Cykliczne Wskazuje, czy dane są odczytywane cyklicznie z podfolderów, czy tylko z określonego folderu. Prawda, Fałsz (wartość domyślna) Nie

System plikówSink obsługuje następujące właściwości:

Właściwość Opis Dozwolone wartości Wymagane
copyBehavior Definiuje zachowanie kopiowania, gdy źródłem jest BlobSource lub FileSystem. PreserveHierarchy: Zachowuje hierarchię plików w folderze docelowym. Oznacza to, że ścieżka względna pliku źródłowego do folderu źródłowego jest taka sama jak ścieżka względna pliku docelowego do folderu docelowego.

FlattenHierarchy: Wszystkie pliki z folderu źródłowego są tworzone na pierwszym poziomie folderu docelowego. Pliki docelowe są tworzone z automatycznie wygenerowaną nazwą.

MergeFiles: Scala wszystkie pliki z folderu źródłowego do jednego pliku. Jeśli określono nazwę pliku/nazwę obiektu blob, scalona nazwa pliku jest określoną nazwą. W przeciwnym razie jest to automatycznie wygenerowana nazwa pliku.
Nie

przykłady rekursywne i copyBehavior

W tej sekcji opisano wynikowe zachowanie operacji kopiowania dla różnych kombinacji wartości właściwości cyklicznych i copyBehavior.

wartość rekursywna copyBehavior, wartość Wynikowe działanie
true preserveHierarchy W przypadku folderu źródłowego Folder1 z następującą strukturą,

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z taką samą strukturą jak źródło:

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5
true flattenHierarchy W przypadku folderu źródłowego Folder1 z następującą strukturą,

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

docelowy folder1 jest tworzony z następującą strukturą:

Folder1
    automatycznie wygenerowana nazwa pliku File1
    nazwa wygenerowana automatycznie dla pliku File2
    nazwa wygenerowana automatycznie dla pliku File3
    nazwa wygenerowana automatycznie dla pliku File4
    automatycznie wygenerowana nazwa pliku5
true mergeFiles W przypadku folderu źródłowego Folder1 z następującą strukturą,

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

docelowy folder1 jest tworzony z następującą strukturą:

Folder1
    Plik1 + Plik2 + Plik3 + Plik4 + Plik 5 są scalane w jeden plik z automatycznie wygenerowaną nazwą pliku.
fałsz preserveHierarchy W przypadku folderu źródłowego Folder1 z następującą strukturą,

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z następującą strukturą:

Folder1
    Plik1
    Plik2

Podfolder1 z plikami File3, File4 i File5 nie jest pobierany.
fałsz flattenHierarchy W przypadku folderu źródłowego Folder1 z następującą strukturą,

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z następującą strukturą:

Folder1
    automatycznie wygenerowana nazwa pliku File1
    nazwa wygenerowana automatycznie dla pliku File2

Podfolder1 z plikami File3, File4 i File5 nie jest pobierany.
fałsz mergeFiles W przypadku folderu źródłowego Folder1 z następującą strukturą,

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z następującą strukturą:

Folder1
    Zawartość pliku File1 + File2 jest scalona z jednym plikiem z automatycznie wygenerowaną nazwą pliku.
    Nazwa wygenerowana automatycznie dla pliku File1

Podfolder1 z plikami File3, File4 i File5 nie jest pobierany.

Obsługiwane formaty plików i kompresji

Aby uzyskać szczegółowe informacje, zobacz formaty plików i kompresji w Azure Data Factory artykule.

Przykłady JSON do kopiowania danych do i z systemu plików

W poniższych przykładach przedstawiono przykładowe definicje JSON, których można użyć do utworzenia potoku przy użyciu programu Visual Studio lub Azure PowerShell. Pokazują one, jak kopiować dane do i z lokalnego systemu plików i usługi Azure Blob Storage. Można jednak skopiować dane bezpośrednio z dowolnego źródła do dowolnego ujścia wymienionego w sekcji Obsługiwane źródła i ujścia przy użyciu działania kopiowania w Azure Data Factory.

Przykład: kopiowanie danych z lokalnego systemu plików do usługi Azure Blob Storage

W tym przykładzie pokazano, jak skopiować dane z lokalnego systemu plików do usługi Azure Blob Storage. Przykład zawiera następujące jednostki usługi Data Factory:

Poniższy przykład kopiuje dane szeregów czasowych z lokalnego systemu plików do usługi Azure Blob Storage co godzinę. Właściwości JSON, które są używane w tych przykładach, są opisane w sekcjach po przykładach.

W pierwszym kroku skonfiguruj bramę Zarządzanie danymi zgodnie z instrukcjami w temacie Przenoszenie danych między źródłami lokalnymi a chmurą przy użyciu bramy Zarządzanie danymi Gateway.

Połączona usługa lokalnego serwera plików:

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia.<region>.corp.<company>.com",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Zalecamy użycie właściwości encryptedCredential zamiast właściwości userid i password . Aby uzyskać szczegółowe informacje o tej połączonej usłudze, zobacz Połączona usługa serwera plików .

Połączona usługa Azure Storage:

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Lokalny zestaw danych wejściowych systemu plików:

Dane są pobierane z nowego pliku co godzinę. Właściwości folderPath i fileName są określane na podstawie godziny rozpoczęcia wycinka.

Ustawienie "external": "true" informuje usługę Data Factory, że zestaw danych jest zewnętrzny dla fabryki danych i nie jest generowany przez działanie w fabryce danych.

{
  "name": "OnpremisesFileSystemInput",
  "properties": {
    "type": " FileShare",
    "linkedServiceName": " OnPremisesFileServerLinkedService ",
    "typeProperties": {
      "folderPath": "mysharedfolder/yearno={Year}/monthno={Month}/dayno={Day}",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ]
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Wyjściowy zestaw danych usługi Azure Blob Storage:

Dane są zapisywane w nowym obiekcie blob co godzinę (częstotliwość: godzina, interwał: 1). Ścieżka folderu dla obiektu blob jest obliczana dynamicznie na podstawie czasu rozpoczęcia przetwarzanego wycinka. Ścieżka folderu używa części roku, miesiąca, dnia i godziny czasu rozpoczęcia.

{
  "name": "AzureBlobOutput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": "\t",
        "rowDelimiter": "\n"
      }
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Działanie kopiowania w potoku ze źródłem systemu plików i ujściem obiektu blob:

Potok zawiera działanie kopiowania skonfigurowane do korzystania z wejściowych i wyjściowych zestawów danych i jest zaplanowane do uruchamiania co godzinę. W definicji JSON potoku typ źródła jest ustawiony na FileSystemSource, a typ ujścia jest ustawiony na BlobSink.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2015-06-01T18:00:00",
    "end":"2015-06-01T19:00:00",
    "description":"Pipeline for copy activity",
    "activities":[
      {
        "name": "OnpremisesFileSystemtoBlob",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "OnpremisesFileSystemInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "FileSystemSource"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Przykład: kopiowanie danych z bazy danych Azure SQL do lokalnego systemu plików

W poniższym przykładzie pokazano:

Przykład kopiuje dane szeregów czasowych z tabeli Azure SQL do lokalnego systemu plików co godzinę. Właściwości JSON, które są używane w tych przykładach, są opisane w sekcjach po przykładach.

połączona usługa Azure SQL Database:

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

Połączona usługa lokalnego serwera plików:

{
  "Name": "OnPremisesFileServerLinkedService",
  "properties": {
    "type": "OnPremisesFileServer",
    "typeProperties": {
      "host": "\\\\Contosogame-Asia.<region>.corp.<company>.com",
      "userid": "Admin",
      "password": "123456",
      "gatewayName": "mygateway"
    }
  }
}

Zalecamy używanie właściwości encryptedCredential zamiast używania właściwości userid i password . Aby uzyskać szczegółowe informacje o tej połączonej usłudze, zobacz Połączona usługa systemu plików .

Azure SQL wejściowy zestaw danych:

W przykładzie założono, że utworzono tabelę "MyTable" w Azure SQL i zawiera ona kolumnę o nazwie "timestampcolumn" dla danych szeregów czasowych.

Ustawienie "external": "true" informuje usługę Data Factory, że zestaw danych jest zewnętrzny dla fabryki danych i nie jest generowany przez działanie w fabryce danych.

{
  "name": "AzureSqlInput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyTable"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Lokalny zestaw danych wyjściowych systemu plików:

Dane są kopiowane do nowego pliku co godzinę. FolderPath i fileName dla obiektu blob są określane na podstawie czasu rozpoczęcia wycinka.

{
  "name": "OnpremisesFileSystemOutput",
  "properties": {
    "type": "FileShare",
    "linkedServiceName": " OnPremisesFileServerLinkedService ",
    "typeProperties": {
      "folderPath": "mysharedfolder/yearno={Year}/monthno={Month}/dayno={Day}",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ]
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Działanie kopiowania w potoku ze źródłem SQL i ujściem systemu plików:

Potok zawiera działanie kopiowania skonfigurowane do korzystania z wejściowych i wyjściowych zestawów danych i jest zaplanowane do uruchamiania co godzinę. W definicji JSON potoku typ źródła jest ustawiony na SqlSource, a typ ujścia jest ustawiony na FileSystemSink. Zapytanie SQL określone dla właściwości SqlReaderQuery wybiera dane w ciągu ostatniej godziny do skopiowania.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2015-06-01T18:00:00",
    "end":"2015-06-01T20:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "AzureSQLtoOnPremisesFile",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureSQLInput"
          }
        ],
        "outputs": [
          {
            "name": "OnpremisesFileSystemOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd}\\'', WindowStart, WindowEnd)"
          },
          "sink": {
            "type": "FileSystemSink"
          }
        },
       "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 3,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Możesz również mapować kolumny ze źródłowego zestawu danych na kolumny z zestawu danych ujścia w definicji działania kopiowania. Aby uzyskać szczegółowe informacje, zobacz Mapowanie kolumn zestawu danych w Azure Data Factory.

Wydajności i dostosowywanie

Aby dowiedzieć się więcej o kluczowych czynnikach wpływających na wydajność przenoszenia danych (działanie kopiowania) w Azure Data Factory i różnych sposobach ich optymalizacji, zobacz przewodnik Dotyczący wydajności i dostrajania działania kopiowania.