.export naar tabel
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer-
U kunt gegevens exporteren door een externe tabel te definiëren en gegevens ernaar te exporteren. De tabeleigenschappen worden opgegeven wanneer het maken van de externe tabel. De exportopdracht verwijst naar de externe tabel op naam.
Machtigingen
U moet ten minste machtigingen voor tabelbeheerder hebben om deze opdracht uit te voeren.
Syntaxis
.export
[async
] to
table
externalTableName
[with
(
propertyName=
propertyValue [,
...])
] <|
query
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
externalTableName- | string |
✔️ | De naam van de externe tabel waarnaar moet worden geëxporteerd. |
propertyName, propertyValue | string |
Een door komma's gescheiden lijst met optionele eigenschappen. | |
string |
✔️ | De exportquery. |
Ondersteunde eigenschappen
De volgende eigenschappen worden ondersteund als onderdeel van de opdracht Exporteren naar externe tabel.
Eigenschap | Type | Beschrijving | Verstek |
---|---|---|---|
sizeLimit |
long |
De groottelimiet in bytes van één opslagartefact dat vóór compressie is geschreven. Een volledige rijgroep met grootte parquetRowGroupSize wordt geschreven voordat wordt gecontroleerd of deze rijgroep de groottelimiet bereikt en een nieuw artefact moet starten. Geldig bereik: 100 MB (standaard) tot 1 GB. |
|
distributed |
bool |
Gedistribueerde export uitschakelen of inschakelen. Instellen op onwaar is gelijk aan single distributiehint. |
De standaardwaarde is true . |
distribution |
string |
Distributiehint (single , per_node , per_shard ). Zie meer informatie in Distributie-instellingen |
De standaardwaarde is per_node . |
distributionKind |
string |
Schakel desgewenst over naar uniforme distributie wanneer de externe tabel wordt gepartitioneerd op tekenreekspartitie. Geldige waarden zijn uniform of default . Zie meer informatie in Distributie-instellingen |
|
concurrency |
nummer | Geeft aan hoeveel partities parallel moeten worden uitgevoerd. Zie meer informatie in Distributie-instellingen | De standaardwaarde is 16. |
spread |
nummer | Geeft aan hoe het systeem de partities over knooppunten distribueert. Zie meer informatie in Distributie-instellingen | De standaardwaarde is Min(64, number-of-nodes) . |
parquetRowGroupSize |
int |
Alleen relevant wanneer de gegevensindeling Parquet is. Hiermee bepaalt u de grootte van de rijgroep in de geëxporteerde bestanden. Deze waarde heeft voorrang op sizeLimit , wat betekent dat een volledige rijgroep wordt geëxporteerd voordat wordt gecontroleerd of deze rijgroep de groottelimiet bereikt en een nieuw artefact moet starten. |
De standaardgrootte van de rijgroep is 100.000 records. |
Distributie-instellingen
De distributie van een export naar externe tabelbewerking geeft het aantal knooppunten en threads aan dat gelijktijdig naar de opslag wordt geschreven. De standaarddistributie is afhankelijk van de partitie van de externe tabel:
Externe tabelpartitionering | Standaarddistributie |
---|---|
Externe tabel is niet gepartitioneerd of gepartitioneerd door datetime kolom |
Exporteren wordt gedistribueerd per_node : alle knooppunten worden gelijktijdig geëxporteerd. Elk knooppunt schrijft de gegevens die aan dat knooppunt zijn toegewezen. Het aantal bestanden dat door een knooppunt wordt geëxporteerd, is groter dan één, alleen als de grootte van de gegevens van dat knooppunt groter is dan sizeLimit . |
Externe tabel wordt gepartitioneerd door een tekenreekskolom | De te exporteren gegevens worden verplaatst tussen de knooppunten, zodat elk knooppunt een subset van de partitiewaarden schrijft. Eén partitie wordt altijd geschreven door één knooppunt. Het aantal bestanden dat per partitie is geschreven, mag groter zijn dan één bestand als de gegevens groter zijn dan sizeLimit . Als de externe tabel meerdere tekenreekspartities bevat, worden gegevens gepartitioneerd tussen het knooppunt op basis van de eerste partitie. Daarom is het raadzaam om de partitie met de meeste uniforme verdeling te definiëren als de eerste. |
De standaarddistributie-instellingen wijzigen
Het wijzigen van de standaarddistributie-instellingen kan handig zijn in de volgende gevallen:
Use case | Beschrijving | Aanbeveling |
---|---|---|
het aantal geëxporteerde bestanden verminderen | Exporteren maakt te veel kleine bestanden en u wilt dat er een kleiner aantal grotere bestanden wordt gemaakt. | Stel distribution =single of distributed =false (beide zijn gelijkwaardig) in de opdrachteigenschappen in. Slechts één thread voert de export uit. Het nadeel hiervan is dat de exportbewerking langzamer kan zijn, omdat gelijktijdigheid veel lager is. |
de exportduur beperken | Verhoog de gelijktijdigheid van de exportbewerking om de duur ervan te verkorten. | Stel distribution =per_shard in de opdrachteigenschappen in. Dit betekent dat gelijktijdigheid van de schrijfbewerkingen per gegevensshard is, in plaats van per knooppunt. Dit is alleen relevant wanneer u exporteert naar een externe tabel die niet is gepartitioneerd door een tekenreekspartitie. Hierdoor kan de opslag te veel worden belast, wat mogelijk leidt tot beperking. Zie Storage-fouten. |
Verminder de exportduur voor externe tabellen die zijn gepartitioneerd door een tekenreekspartitie | Als de partities niet uniform worden verdeeld tussen de knooppunten, kan het langer duren voordat de export wordt uitgevoerd. Als één partitie veel groter is dan de andere partities, doet het knooppunt dat aan die partitie is toegewezen, het grootste deel van het exportwerk, terwijl de andere knooppunten meestal inactief blijven. Zie Distributie-instellingenvoor meer informatie. | Er zijn verschillende instellingen die u kunt wijzigen: * Als er meer dan één tekenreekspartitie is, definieert u eerst de partitie met de beste distributie. * Stel distributionKind =uniform in de opdrachteigenschappen in. Met deze instelling worden de standaarddistributie-instellingen voor gepartitioneerde externe tabellen met tekenreeksen uitgeschakeld. Export wordt uitgevoerd met per-node distributie en elk knooppunt exporteert de gegevens die aan het knooppunt zijn toegewezen. Eén partitie kan worden geschreven door verschillende knooppunten en het aantal bestanden neemt dienovereenkomstig toe. Als u de gelijktijdigheid nog verder wilt verhogen, stelt u distributionKind =uniform samen met distribution =per_shard in voor de hoogste gelijktijdigheid (tegen de kosten van mogelijk veel meer geschreven bestanden)* Als de oorzaak van trage export geen uitschieters in de gegevens is, vermindert u de duur door gelijktijdigheid te verhogen zonder de partitioneringsinstellingen te wijzigen. Gebruik de eigenschappen hint.spread en hint.concurrency , waarmee de gelijktijdigheid van de partitionering wordt bepaald. Zie partitieoperator. Standaard is het aantal knooppunten dat gelijktijdig wordt geëxporteerd (de spread ) de minimumwaarde tussen 64 en het aantal knooppunten. Als u spread instelt op een hoger aantal dan het aantal knooppunten, neemt de gelijktijdigheid van elk knooppunt toe (de maximumwaarde voor spread is 64). |
Verificatie en autorisatie
Als u wilt exporteren naar een externe tabel, moet u schrijfmachtigingen instellen. Zie de Schrijfmachtigingen voor externe Azure Storage-tabel of externe SQL Server-tabelvoor meer informatie.
Uitvoer
Uitvoerparameter | Type | Beschrijving |
---|---|---|
ExternalTableName | string |
De naam van de externe tabel. |
Pad | string |
Uitvoerpad. |
NumRecords | string |
Het aantal records dat naar het pad is geëxporteerd. |
Notities
Het uitvoerschema voor exportquery's moet overeenkomen met het schema van de externe tabel, inclusief alle kolommen die zijn gedefinieerd door de partities. Als de tabel bijvoorbeeld is gepartitioneerd door DateTime-, moet het queryuitvoerschema een tijdstempelkolom hebben die overeenkomt met de TimestampColumnName-. Deze kolomnaam wordt gedefinieerd in de partitiedefinitie van de externe tabel.
Het is niet mogelijk om de eigenschappen van de externe tabel te overschrijven met behulp van de exportopdracht. U kunt bijvoorbeeld geen gegevens in Parquet-indeling exporteren naar een externe tabel waarvan de gegevensindeling CSV is.
Als de externe tabel is gepartitioneerd, worden geëxporteerde artefacten naar hun respectieve mappen geschreven volgens de partitiedefinities. Zie voorbeeld van een gepartitioneerde externe tabelvoor een voorbeeld.
- Als een partitiewaarde null/leeg is of een ongeldige mapwaarde is, wordt de partitiewaarde volgens de definities van de doelopslag vervangen door een standaardwaarde van
__DEFAULT_PARTITION__
.
- Als een partitiewaarde null/leeg is of een ongeldige mapwaarde is, wordt de partitiewaarde volgens de definities van de doelopslag vervangen door een standaardwaarde van
Zie fouten tijdens exportopdrachtenvoor suggesties voor het oplossen van opslagfouten.
Externe tabelkolommen worden toegewezen aan geschikte gegevenstypen in de doelindeling, volgens toewijzing van gegevenstypen regels.
Systeemeigen Parquet-export is een beter presterend, resource light exportmechanisme. Een geëxporteerde
datetime
kolom wordt momenteel niet ondersteund door Synapse SQLCOPY
.
Aantal bestanden
Het aantal bestanden dat per partitie is geschreven, is afhankelijk van de distributie-instellingen van de exportbewerking:
Als de externe tabel alleen
datetime
partities bevat of helemaal geen partities, moet het aantal bestanden dat is geschreven voor elke partitie die bestaat, vergelijkbaar zijn met het aantal knooppunten (of meer, alssizeLimit
is bereikt). Wanneer de exportbewerking wordt gedistribueerd, exporteren alle knooppunten gelijktijdig. Als u distributie wilt uitschakelen, zodat slechts één knooppunt de schrijfbewerkingen uitvoert, stelt udistributed
in op false. Dit proces maakt minder bestanden, maar vermindert de exportprestaties.Als de externe tabel een partitie met een tekenreekskolom bevat, moet het aantal geëxporteerde bestanden één bestand per partitie zijn (of meer, als
sizeLimit
is bereikt). Alle knooppunten nemen nog steeds deel aan de export (bewerking wordt gedistribueerd), maar elke partitie wordt toegewezen aan een specifiek knooppunt. Als udistributed
instelt op onwaar, zorgt u ervoor dat slechts één knooppunt de export uitvoert, maar blijft het gedrag hetzelfde (één bestand dat per partitie is geschreven).
Voorbeelden
Voorbeeld van niet-gepartitioneerde externe tabel
In het volgende voorbeeld worden gegevens uit tabel T
geëxporteerd naar de ExternalBlob
tabel.
ExternalBlob
is een niet-gepartitioneerde externe tabel.
.export to table ExternalBlob <| T
uitvoer
ExternalTableName | Pad | NumRecords |
---|---|---|
ExternalBlob | http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv | 10 |
Voorbeeld van gepartitioneerde externe tabel
In het volgende voorbeeld wordt eerst een gepartitioneerde externe tabel gemaakt, PartitionedExternalBlob
met een opgegeven blobopslaglocatie. De gegevens worden opgeslagen in CSV-indeling met een padindeling die de gegevens ordent op basis van de naam en datum van de klant.
.create external table PartitionedExternalBlob (Timestamp:datetime, CustomerName:string)
kind=blob
partition by (CustomerName:string=CustomerName, Date:datetime=startofday(Timestamp))
pathformat = ("CustomerName=" CustomerName "/" datetime_pattern("yyyy/MM/dd", Date))
dataformat=csv
(
h@'http://storageaccount.blob.core.windows.net/container1;secretKey'
)
Vervolgens worden gegevens uit tabel T
geëxporteerd naar de PartitionedExternalBlob
externe tabel.
.export to table PartitionedExternalBlob <| T
uitvoer
ExternalTableName | Pad | NumRecords |
---|---|---|
ExternalBlob | http://storageaccount.blob.core.windows.net/container1/CustomerName=customer1/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_1_58017c550b384c0db0fea61a8661333e.csv | 10 |
ExternalBlob | http://storageaccount.blob.core.windows.net/container1/CustomerName=customer2/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_2_b785beec2c004d93b7cd531208424dc9.csv | 10 |
Als de opdracht asynchroon wordt uitgevoerd met behulp van het trefwoord async
, is de uitvoer beschikbaar met behulp van de bewerkingsgegevens weergeven opdracht.