Udostępnij za pośrednictwem


Rozdzielany format tekstu w usługach Azure Data Factory i Azure Synapse Analytics

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

Postępuj zgodnie z tym artykułem, gdy chcesz przeanalizować rozdzielane pliki tekstowe lub zapisać dane w formacie tekstu rozdzielanego.

Format tekstu rozdzielanego jest obsługiwany w przypadku następujących łączników:

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 artykuł Zestawy danych. Ta sekcja zawiera listę właściwości obsługiwanych przez rozdzielany zestaw danych tekstowych.

Właściwości Opis Wymagania
type Właściwość type zestawu danych musi być ustawiona na wartość RozdzielanyTekst. Tak
lokalizacja Ustawienia lokalizacji plików. Każdy łącznik oparty na plikach ma własny typ lokalizacji i obsługiwane właściwości w obszarze location. Tak
columnDelimiter Znaki używane do oddzielania kolumn w pliku.
Wartość domyślna to przecinek ,. Gdy ogranicznik kolumny jest zdefiniowany jako pusty ciąg, co oznacza, że nie ma ogranicznika, cały wiersz jest traktowany jako pojedyncza kolumna.
Obecnie ogranicznik kolumn jako pusty ciąg jest obsługiwany tylko w przypadku przepływu danych mapowania, ale nie działanie Kopiuj.
Nie.
rowDelimiter W przypadku działanie Kopiuj pojedynczy znak lub "\r\n" używany do oddzielania wierszy w pliku. Wartość domyślna to dowolna z następujących wartości podczas odczytu: ["\r\n", "\r", "\n"]; na zapis: "\r\n". Polecenie "\r\n" jest obsługiwane tylko w poleceniu kopiowania.
W przypadku przepływu danych mapowania jeden lub dwa znaki używane do oddzielania wierszy w pliku. Wartość domyślna to dowolna z następujących wartości podczas odczytu: ["\r\n", "\r", "\n"]; na zapis: "\n".
Gdy ogranicznik wiersza jest ustawiony na bez ogranicznika (pusty ciąg), ogranicznik kolumny musi być ustawiony jako żaden ogranicznik (pusty ciąg), co oznacza traktowanie całej zawartości jako pojedynczej wartości.
Obecnie ogranicznik wierszy jako pusty ciąg jest obsługiwany tylko w przypadku przepływu danych mapowania, ale nie działanie Kopiuj.
Nie.
quoteChar Pojedynczy znak cudzysłowu wartości kolumn, jeśli zawiera ogranicznik kolumn.
Wartość domyślna to podwójne cudzysłowy ".
Jeśli quoteChar parametr jest zdefiniowany jako pusty ciąg, oznacza to, że nie ma cudzysłowu, a wartość kolumny nie jest cytowana i escapeChar jest używana do ucieczki ogranicznika kolumny i samego siebie.
Nie.
escapeChar Pojedynczy znak ucieczki cudzysłowów wewnątrz cytowanej wartości.
Wartość domyślna to ukośnik \odwrotny.
Jeśli escapeChar parametr jest zdefiniowany jako pusty ciąg, quoteChar należy również ustawić jako pusty ciąg, w którym przypadku upewnij się, że wszystkie wartości kolumn nie zawierają ograniczników.
Nie.
firstRowAsHeader Określa, czy należy traktować/tworzyć pierwszy wiersz jako wiersz nagłówka z nazwami kolumn.
Dozwolone wartości to true i false (wartość domyślna).
Gdy pierwszy wiersz jako nagłówek ma wartość false, zwróć uwagę, że podgląd danych interfejsu użytkownika i dane wyjściowe działania wyszukiwania automatycznie generują nazwy kolumn jako Prop_{n} (począwszy od 0), działanie kopiowania wymaga jawnego mapowania ze źródła na ujście i lokalizuje kolumny według porządkowych (począwszy od 1) oraz wyświetla listy przepływów danych mapowania i lokalizuje kolumny o nazwie jako Column_{n} (począwszy od 1).
Nie.
nullValue Określa ciąg reprezentujący wartość null.
Wartość domyślna to pusty ciąg.
Nie.
encodingName Typ kodowania używany do odczytu/zapisu plików testowych.
Dozwolone wartości są następujące: "UTF-8","UTF-8 bez BOM", "UTF-16", "UTF-16BE", "UTF-32", "UTF-32BE", "US-ASCII", "UTF-7", "BIG5", "EUC-JP", "EUC-KR", "GB2312", "GB18030", "JOHAB", "SHIFT-JIS", "CP875", "CP866", "IBM00858", "IBM037", "IBM273", "IBM437", "IBM500", "IBM737", "IBM737", "IBM775", "IBM850", "IBM852", "IBM855", "IBM857", "IBM860", "IBM861", "IBM863", "IBM864", "IBM865", "IBM865", "IBM869", "IBM870", "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144", "IBM01145", "IBM01146", "IBM01147", "IBM01148", "IBM01149", "ISO-2022-JP", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-13", "ISO-8859-15", "WINDOWS-874", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1255"2", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255", "WINDOWS-1256", "WINDOWS-1257", "WINDOWS-1258".
Przepływ mapowania danych nie obsługuje kodowania UTF-7.
Przepływ danych mapowania notatek nie obsługuje kodowania UTF-8 za pomocą znacznika kolejności bajtów (BOM).
Nie.
compressionCodec Koder koder kompresji używany do odczytu/zapisu plików tekstowych.
Dozwolone wartości to bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, Snappy lub lz4. Wartość domyślna nie jest kompresowana.
Uwaga obecnie działanie Kopiuj nie obsługuje "snappy" i "lz4", a przepływ danych mapowania nie obsługuje "ZipDeflate", "TarGzip" i "Tar".
Uwaga podczas używania działania kopiowania do dekompresowania plików TarDeflate/TarGzip/ i zapisu w magazynie danych ujścia opartego na plikach pliki domyślnie pliki są wyodrębniane do folderu:<path specified in dataset>/<folder named as source compressed file>/ użyj/preserveCompressionFileNameAsFolder preserveZipFileNameAsFolderźródła działania kopiowania, aby kontrolować, czy zachować nazwę skompresowanych plików jako struktury folderów.
Nie.
compressionLevel Współczynnik kompresji.
Dozwolone wartości są optymalne lub najszybsze.
- Najszybsza: operacja kompresji powinna zostać ukończona tak szybko, jak to możliwe, nawet jeśli wynikowy plik nie jest optymalnie skompresowany.
- Optymalna: operacja kompresji powinna być optymalnie skompresowana, nawet jeśli operacja trwa dłużej. Aby uzyskać więcej informacji, zobacz Temat Poziom kompresji.
Nie.

Poniżej przedstawiono przykład rozdzielanego zestawu danych tekstowych w usłudze Azure Blob Storage:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "escapeChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

Właściwości działania kopiowania

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz artykuł Pipelines (Potoki ). Ta sekcja zawiera listę właściwości obsługiwanych przez rozdzielane źródło tekstu i ujście.

Rozdzielany tekst jako źródło

Następujące właściwości są obsługiwane w sekcji działanie kopiowania *źródło* .

Właściwości Opis Wymagania
type Właściwość type źródła działania kopiowania musi być ustawiona na wartość DelimitedTextSource. Tak
formatUstawienia Grupa właściwości. Zapoznaj się z tabelą ustawień odczytu tekstu rozdzielanego tekstem poniżej. Nie.
storeSettings Grupa właściwości dotyczących odczytywania danych z magazynu danych. Każdy łącznik oparty na plikach ma własne obsługiwane ustawienia odczytu w obszarze storeSettings. Nie.

Obsługiwane ustawienia odczytu tekstu rozdzielanego w obszarze formatSettings:

Właściwości Opis Wymagania
type Typ formatUstawienia musi być ustawiony na delimitedTextReadSettings. Tak
skipLineCount Wskazuje liczbę niepustych wierszy do pominięcia podczas odczytywania danych z plików wejściowych.
Jeśli określono zarówno właściwość skipLineCount, jak i firstRowAsHeader, najpierw zostaną pominięte wiersze, a następnie zostaną odczytane informacje nagłówka z pliku wejściowego.
Nie.
compressionProperties Grupa właściwości dotyczących dekompresowania danych dla danego koder-dekodera kompresji. Nie.
preserveZipFileNameAsFolder
(pod compressionProperties->type jako ZipDeflateReadSettings)
Dotyczy konfiguracji wejściowego zestawu danych z kompresją ZipDeflate . Wskazuje, czy podczas kopiowania zachować nazwę źródłowego pliku zip jako strukturę folderów.
— W przypadku ustawienia wartości true (wartość domyślna) usługa zapisuje rozpakowane pliki na wartość <path specified in dataset>/<folder named as source zip file>/.
— Po ustawieniu wartości false usługa zapisuje rozpakowane pliki bezpośrednio do .<path specified in dataset> Upewnij się, że nie masz zduplikowanych nazw plików w różnych źródłowych plikach zip, aby uniknąć wyścigów ani nieoczekiwanych zachowań.
Nie.
preserveCompressionFileNameAsFolder
(w obszarze compressionProperties->type jako TarGZipReadSettings lub TarReadSettings)
Ma zastosowanie w przypadku skonfigurowania wejściowego zestawu danych z kompresją TarGzip/Tar. Wskazuje, czy podczas kopiowania zachować nazwę skompresowanego pliku źródłowego jako strukturę folderów.
— W przypadku ustawienia wartości true (wartość domyślna) usługa zapisuje dekompresowane pliki na wartość <path specified in dataset>/<folder named as source compressed file>/.
- W przypadku ustawienia wartości false usługa zapisuje dekompresowane pliki bezpośrednio do <path specified in dataset>. Upewnij się, że nie masz zduplikowanych nazw plików w różnych plikach źródłowych, aby uniknąć wyścigów ani nieoczekiwanych zachowań.
Nie.
"activities": [
    {
        "name": "CopyFromDelimitedText",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "storeSettings": {
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                },
                "formatSettings": {
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 3,
                    "compressionProperties": {
                        "type": "ZipDeflateReadSettings",
                        "preserveZipFileNameAsFolder": false
                    }
                }
            },
            ...
        }
        ...
    }
]

Rozdzielany tekst jako ujście

Następujące właściwości są obsługiwane w sekcji działanie kopiowania *ujście*.

Właściwości Opis Wymagania
type Właściwość type źródła działania kopiowania musi być ustawiona na wartość DelimitedTextSink. Tak
formatUstawienia Grupa właściwości. Zapoznaj się z poniższą tabelą ustawień zapisu tekstu rozdzielanego tekstem. Nie.
storeSettings Grupa właściwości dotyczących sposobu zapisywania danych w magazynie danych. Każdy łącznik oparty na plikach ma własne obsługiwane ustawienia zapisu w obszarze storeSettings. Nie.

Obsługiwane ustawienia zapisu tekstu rozdzielanego w obszarze formatSettings:

Właściwości Opis Wymagania
type Typ formatUstawienia musi być ustawiony na delimitedTextWriteSettings. Tak
fileExtension Rozszerzenie pliku używane do nazywania plików wyjściowych, na przykład .csv, .txt. Należy go określić, gdy fileName parametr nie jest określony w wyjściowym zestawie danych RozdzielanyTekst. Gdy nazwa pliku jest skonfigurowana w wyjściowym zestawie danych, będzie używana jako nazwa pliku ujścia, a ustawienie rozszerzenia pliku zostanie zignorowane. Tak, gdy nazwa pliku nie jest określona w wyjściowym zestawie danych
maxRowsPerFile Podczas zapisywania danych w folderze można wybrać zapisywanie w wielu plikach i określić maksymalną liczbę wierszy na plik. Nie.
fileNamePrefix Dotyczy konfiguracji maxRowsPerFile .
Określ prefiks nazwy pliku podczas zapisywania danych w wielu plikach, co spowodowało następujący wzorzec: <fileNamePrefix>_00000.<fileExtension>. Jeśli nie zostanie określony, prefiks nazwy pliku zostanie wygenerowany automatycznie. Ta właściwość nie ma zastosowania, gdy źródło jest magazynem opartym na plikach lub magazynem danych z włączoną opcją partycji.
Nie.

Właściwości przepływu mapowania danych

W przepływach danych mapowania można odczytywać i zapisywać w formacie tekstu rozdzielanego w następujących magazynach danych: Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 i SFTP, a format tekstu rozdzielanego w usłudze Amazon S3.

Wbudowany zestaw danych

Przepływy danych mapowania obsługują "wbudowane zestawy danych" jako opcję definiowania źródła i ujścia. Wbudowany rozdzielany zestaw danych jest definiowany bezpośrednio wewnątrz przekształceń źródła i ujścia i nie jest udostępniany poza zdefiniowanym przepływem danych. Jest to przydatne w przypadku parametryzacji właściwości zestawu danych bezpośrednio wewnątrz przepływu danych i może korzystać z lepszej wydajności udostępnionych zestawów danych usługi ADF.

Podczas odczytywania dużej liczby folderów źródłowych i plików można zwiększyć wydajność odnajdywania plików przepływu danych, ustawiając opcję "Projektowany schemat użytkownika" wewnątrz projekcji | Okno dialogowe Opcje schematu. Ta opcja powoduje wyłączenie domyślnego automatycznego odnajdywania schematu usługi ADF i znacznie poprawi wydajność odnajdywania plików. Przed ustawieniem tej opcji zaimportuj projekcję, aby usługa ADF ma istniejący schemat do projekcji. Ta opcja nie działa z dryfem schematu.

Właściwości źródła

W poniższej tabeli wymieniono właściwości obsługiwane przez rozdzielane źródło tekstu. Te właściwości można edytować na karcie Opcje źródła.

Nazwa/nazwisko opis Wymagania Dozwolone wartości Właściwość skryptu przepływu danych
Ścieżki z symbolami wieloznacznymi Wszystkie pliki pasujące do ścieżki wieloznacznej zostaną przetworzone. Zastępuje folder i ścieżkę pliku ustawioną w zestawie danych. nie Ciąg[] symbole wieloznacznePaths
Ścieżka główna partycji W przypadku danych plików podzielonych na partycje można wprowadzić ścieżkę katalogu głównego partycji, aby odczytywać foldery podzielone na partycje jako kolumny nie String partitionRootPath
Lista plików Czy źródło wskazuje plik tekstowy, który wyświetla listę plików do przetworzenia nie true lub false fileList
Wiersze wielowierszowe Czy plik źródłowy zawiera wiersze obejmujące wiele wierszy. Wartości wielowierszowe muszą być w cudzysłowie. nie true lub false multiLineRow
Kolumna do przechowywania nazwy pliku Utwórz nową kolumnę z nazwą pliku źródłowego i ścieżką nie String rowUrlColumn
Po zakończeniu Usuń lub przenieś pliki po przetworzeniu. Ścieżka pliku rozpoczyna się od katalogu głównego kontenera nie Usuń: true lub false
Ruszać: ['<from>', '<to>']
przeczyszczanie plików
moveFiles
Filtruj według ostatniej modyfikacji Wybierz filtrowanie plików w oparciu o czas ich ostatniej zmiany nie Sygnatura czasowa modifiedAfter
modifiedBefore
Zezwalaj na brak znalezionych plików Jeśli wartość true, błąd nie jest zgłaszany, jeśli nie znaleziono żadnych plików nie true lub false ignoreNoFilesFound
Maksymalna liczba kolumn Wartość domyślna to 20480. Dostosuj tę wartość, gdy numer kolumny wynosi ponad 20480 nie Integer maxColumns

Uwaga

Obsługa źródeł przepływu danych dla listy plików jest ograniczona do 1024 wpisów w pliku. Aby dołączyć więcej plików, użyj symboli wieloznacznych na liście plików.

Przykład źródła

Na poniższej ilustracji przedstawiono przykład konfiguracji rozdzielanego źródła tekstu w przepływach danych mapowania.

Źródło delimitedText

Skojarzony skrypt przepływu danych to:

source(
    allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: false,
	multiLineRow: true,
	wildcardPaths:['*.csv']) ~> CSVSource

Uwaga

Źródła przepływu danych obsługują ograniczony zestaw globbing systemu Linux obsługiwany przez systemy plików Hadoop

Właściwości ujścia

W poniższej tabeli wymieniono właściwości obsługiwane przez rozdzielany ujście tekstu. Te właściwości można edytować na karcie Ustawienia .

Nazwa/nazwisko opis Wymagania Dozwolone wartości Właściwość skryptu przepływu danych
Wyczyść folder Jeśli folder docelowy zostanie wyczyszczone przed zapisem nie true lub false truncate
Opcja Nazwa pliku Format nazewnictwa zapisanych danych. Domyślnie jeden plik na partycję w formacie part-#####-tid-<guid> nie Wzorzec: ciąg
Na partycję: Ciąg[]
Nazwa pliku jako dane kolumny: Ciąg
Dane wyjściowe do pojedynczego pliku: ['<fileName>']
Nazwa folderu jako dane kolumny: Ciąg
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
rowFolderUrlColumn
Cudzysłowuj wszystko Ujęć wszystkie wartości w cudzysłowie nie true lub false quoteAll
Nagłówek Dodawanie nagłówków klienta do plików wyjściowych nie [<string array>] nagłówek

Przykład ujścia

Na poniższej ilustracji przedstawiono przykład konfiguracji rozdzielanego ujścia tekstu w przepływach danych mapowania.

Ujście tekstu rozdzielanego

Skojarzony skrypt przepływu danych to:

CSVSource sink(allowSchemaDrift: true,
    validateSchema: false,
    truncate: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> CSVSink

Poniżej przedstawiono niektóre typowe łączniki i formaty związane z rozdzielonym formatem tekstu: