Adatok másolása és átalakítása REST-végpontról és REST-végpontra az Azure Data Factory használatával
A következőkre vonatkozik: Azure Data Factory
Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Ez a cikk azt ismerteti, hogyan használhatja az Azure Data Factoryban a másolási tevékenységet adatoknak a REST végpontba vagy onnan máshová történő másolásához. A cikk az Azure Data Factoryban történő másolási tevékenységre épül, amely általános áttekintést nyújt a másolási tevékenységről.
Az ezen REST-összekötő, HTTP-összekötő és a webtábla-összekötő közötti különbség a következő:
- A REST-összekötő kifejezetten támogatja az adatok RESTful API-kból való másolását.
- A HTTP-összekötő általánosan használható adatok lekérésére bármely HTTP-végpontról, például fájl letöltéséhez. Ezen REST-összekötő előtt előfordulhat, hogy Ön HTTP-összekötő használatával másol adatokat a RESTful API-kból, amely támogatott, de kevésbé célszerű a REST-összekötőhöz képest.
- A webtábla-összekötő táblatartalmat nyer ki HTML-weblapról.
Támogatott képességek
Ez a REST-összekötő a következő képességekhez támogatott:
Támogatott képességek | IR |
---|---|
Copy tevékenység (forrás/fogadó) | (1) (2) |
Adatfolyam leképezése (forrás/fogadó) | (1) |
(1) Azure-integrációs modul (2) Saját üzemeltetésű integrációs modul
A forrásként/fogadóként támogatott adattárak listáját a Támogatott adattárak című témakörben találja.
Ez az általános REST-összekötő a következőket támogatja:
- Adatok másolása REST-végpontról a GET vagy POST metódusokkal, valamint adatok másolása REST-végpontra a POST, PUT vagy PATCH metódusok használatával.
- Adatok másolása a következő hitelesítések egyikével: Névtelen, Alapszintű, Szolgáltatásnév, OAuth2 ügyfél-hitelesítő adatok, rendszer által hozzárendelt felügyelt identitás és felhasználó által hozzárendelt felügyelt identitás.
- Lapozás a REST API-kban.
- A REST mint forrás esetében másolja a REST JSON-választ, vagy elemezheti sémaleképezéssel. Csak a válasz hasznos adatai támogatottak a JSON-ban.
Tipp.
Ha a REST-összekötő Data Factoryben való konfigurálása előtt szeretné tesztelni az adatlekérési kérelmet, ismerje meg a fejléc- és törzskövetelmények API-specifikációját. Az ellenőrzéshez használhat olyan eszközöket, mint a Visual Studio, a PowerShell Invoke-RestMethod vagy egy webböngésző.
Előfeltételek
Ha az adattár helyszíni hálózaton, Azure-beli virtuális hálózaton vagy Amazon Virtual Private Cloudon belül található, konfigurálnia kell egy saját üzemeltetésű integrációs modult a csatlakozáshoz.
Ha az adattár felügyelt felhőalapú adatszolgáltatás, használhatja az Azure Integration Runtime-ot. Ha a hozzáférés a tűzfalszabályokban jóváhagyott IP-címekre korlátozódik, hozzáadhat azure integration runtime IP-eket az engedélyezési listához.
Az Azure Data Factory felügyelt virtuális hálózati integrációs moduljával is elérheti a helyszíni hálózatot anélkül, hogy saját üzemeltetésű integrációs modult telepítene és konfigurálna.
A Data Factory által támogatott hálózati biztonsági mechanizmusokkal és lehetőségekkel kapcsolatos további információkért lásd az adathozzáférési stratégiákat.
Első lépések
A Copy tevékenység folyamattal való végrehajtásához használja az alábbi eszközök vagy SDK-k egyikét:
- Az Adatok másolása eszköz
- Az Azure Portal
- A .NET SDK
- A Python SDK
- Azure PowerShell
- A REST API
- Az Azure Resource Manager-sablon
REST társított szolgáltatás létrehozása felhasználói felületen
Az alábbi lépések végrehajtásával hozzon létre EGY REST társított szolgáltatást az Azure Portal felhasználói felületén.
Keresse meg az Azure Data Factory vagy a Synapse-munkaterület Kezelés lapját, és válassza a Társított szolgáltatások lehetőséget, majd válassza az Új lehetőséget:
Keresse meg a REST-et, és válassza ki a REST-összekötőt.
Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.
Az összekötő konfigurációjának részletei
Az alábbi szakaszok a REST-összekötőre jellemző Data Factory-entitások meghatározásához használható tulajdonságok részleteit ismertetik.
Társított szolgáltatás tulajdonságai
A REST társított szolgáltatás esetében a következő tulajdonságok támogatottak:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A típustulajdonságot RestService értékre kell állítani. | Igen |
url | A REST szolgáltatás alap URL-címe. | Igen |
enableServerCertificateValidation | A kiszolgálóoldali TLS/SSL-tanúsítvány érvényesítése a végponthoz való csatlakozáskor. | Nem (az alapértelmezett érték igaz) |
authenticationType | A REST szolgáltatáshoz való csatlakozáshoz használt hitelesítés típusa. Az engedélyezett értékek a Névtelen, az Alapszintű, az AadServicePrincipal, az OAuth2ClientCredential és a ManagedServiceIdentity. A hitelesítési fejléceket a tulajdonságban authHeaders is konfigurálhatja. További tulajdonságokat és példákat az alábbi szakaszokban talál. |
Igen |
authHeaders | További HTTP-kérelemfejlécek a hitelesítéshez. Az API-kulcsos hitelesítés használatához például kiválaszthatja a hitelesítési típust "Névtelen" néven, és megadhatja az API-kulcsot a fejlécben. |
Nem |
connectVia | Az adattárhoz való csatlakozáshoz használható integrációs modul . További információ az Előfeltételek szakaszból. Ha nincs megadva, ez a tulajdonság az alapértelmezett Azure Integration Runtime-t használja. | Nem |
A különböző hitelesítési típusok részletes leírását a megfelelő szakaszokban találja.
- Alapszintű hitelesítés
- Egyszerű szolgáltatás hitelesítése
- OAuth2-ügyfél hitelesítő adatainak hitelesítése
- Rendszer által hozzárendelt felügyelt identitás hitelesítése
- Felhasználó által hozzárendelt felügyelt identitás hitelesítése
- Névtelen hitelesítés
Alapszintű hitelesítés használata
Állítsa az authenticationType tulajdonságot Alapszintű értékre. Az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
Felhasználónév | A REST-végpont eléréséhez használandó felhasználónév. | Igen |
jelszó | A felhasználó jelszava (a userName érték). Jelölje meg ezt a mezőt SecureString-típusként, hogy biztonságosan tárolja a Data Factoryben. Hivatkozhat az Azure Key Vaultban tárolt titkos kódokra is. | Igen |
Példa
{
"name": "RESTLinkedService",
"properties": {
"type": "RestService",
"typeProperties": {
"authenticationType": "Basic",
"url" : "<REST endpoint>",
"userName": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Egyszerű szolgáltatáshitelesítés használata
Állítsa be az authenticationType tulajdonságot AadServicePrincipal értékre. Az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
servicePrincipalId | Adja meg a Microsoft Entra-alkalmazás ügyfél-azonosítóját. | Igen |
servicePrincipalCredentialType | Adja meg a szolgáltatásnév-hitelesítéshez használandó hitelesítőadat-típust. Az engedélyezett értékek és ServicePrincipalCert a ServicePrincipalKey . |
Nem |
ServicePrincipalKey esetén | ||
servicePrincipalKey | Adja meg a Microsoft Entra alkalmazás kulcsát. Jelölje meg ezt a mezőt SecureStringként, hogy biztonságosan tárolja a Data Factoryben, vagy hivatkozzon az Azure Key Vaultban tárolt titkos kódra. | Nem |
ServicePrincipalCert esetén | ||
servicePrincipalEmbeddedCert | Adja meg az alkalmazás Alap64 kódolású tanúsítványát, amelyet a Microsoft Entra ID-ban regisztráltak, és győződjön meg arról, hogy a tanúsítvány tartalomtípusa PKCS #12. Jelölje meg ezt a mezőt SecureStringként, hogy biztonságosan tárolja, vagy hivatkozzon az Azure Key Vaultban tárolt titkos kódra. Ebből a szakaszból megtudhatja, hogyan mentheti a tanúsítványt az Azure Key Vaultban. | Nem |
servicePrincipalEmbeddedCertPassword | Adja meg a tanúsítvány jelszavát, ha a tanúsítványt jelszó védi. Jelölje meg ezt a mezőt SecureStringként, hogy biztonságosan tárolja, vagy hivatkozzon az Azure Key Vaultban tárolt titkos kódra. | Nem |
bérlő | Adja meg azt a bérlői információt (tartománynevet vagy bérlőazonosítót), amely alatt az alkalmazás található. A lekéréshez vigye az egérmutatót az Azure Portal jobb felső sarkában. | Igen |
aadResourceId | Adja meg például az engedélyezéshez kért Microsoft Entra-erőforrást https://management.core.windows.net . |
Igen |
azureCloudType | A Szolgáltatásnév hitelesítéséhez adja meg annak az Azure-felhőkörnyezetnek a típusát, amelyre a Microsoft Entra-alkalmazás regisztrálva van. Az engedélyezett értékek az AzurePublic, az AzureChina, az AzureUsGovernment és az AzureGermany. Alapértelmezés szerint a data factory felhőkörnyezetét használja a rendszer. |
Nem |
1. példa: Egyszerű szolgáltatáskulcs-hitelesítés használata
{
"name": "RESTLinkedService",
"properties": {
"type": "RestService",
"typeProperties": {
"url": "<REST endpoint e.g. https://www.example.com/>",
"authenticationType": "AadServicePrincipal",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalKey",
"servicePrincipalKey": {
"value": "<service principal key>",
"type": "SecureString"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
"aadResourceId": "<Azure AD resource URL e.g. https://management.core.windows.net>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
2. példa: Szolgáltatásnév tanúsítványának hitelesítése
{
"name": "RESTLinkedService",
"properties": {
"type": "RestService",
"typeProperties": {
"url": "<REST endpoint e.g. https://www.example.com/>",
"authenticationType": "AadServicePrincipal",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalCert",
"servicePrincipalEmbeddedCert": {
"type": "SecureString",
"value": "<the base64 encoded certificate of your application registered in Microsoft Entra ID>"
},
"servicePrincipalEmbeddedCertPassword": {
"type": "SecureString",
"value": "<password of your certificate>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
"aadResourceId": "<Azure AD resource URL e.g. https://management.core.windows.net>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
A szolgáltatásnév tanúsítványának mentése az Azure Key Vaultban
A szolgáltatásnév tanúsítványának mentésére két lehetősége van az Azure Key Vaultban:
1\. lehetőség
Konvertálja a szolgáltatásnév tanúsítványát egy base64-sztringgé. További információ ebből a cikkből.
Mentse a base64 sztringet titkos kódként az Azure Key Vaultban.
2\. lehetőség
Ha nem tudja letölteni a tanúsítványt az Azure Key Vaultból, ezzel a sablonnal titkos kódként mentheti a konvertált szolgáltatásnév-tanúsítványt az Azure Key Vaultban.
OAuth2-ügyfél hitelesítő adatainak hitelesítése
Állítsa az authenticationType tulajdonságot OAuth2ClientCredential értékre. Az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
tokenEndpoint | Az engedélyezési kiszolgáló jogkivonatvégpontja a hozzáférési jogkivonat beszerzéséhez. | Igen |
clientId | Az alkalmazáshoz társított ügyfélazonosító. | Igen |
clientSecret | Az alkalmazáshoz társított ügyfélkód. Jelölje meg ezt a mezőt SecureString-típusként, hogy biztonságosan tárolja a Data Factoryben. Hivatkozhat az Azure Key Vaultban tárolt titkos kódokra is. | Igen |
hatálya | A szükséges hozzáférés hatóköre. Leírja, hogy milyen típusú hozzáférésre lesz szükség. | Nem |
erőforrás | A célszolgáltatás vagy erőforrás, amelyhez a hozzáférést kérni fogja. | Nem |
Példa
{
"name": "RESTLinkedService",
"properties": {
"type": "RestService",
"typeProperties": {
"url": "<REST endpoint e.g. https://www.example.com/>",
"enableServerCertificateValidation": true,
"authenticationType": "OAuth2ClientCredential",
"clientId": "<client ID>",
"clientSecret": {
"type": "SecureString",
"value": "<client secret>"
},
"tokenEndpoint": "<token endpoint>",
"scope": "<scope>",
"resource": "<resource>"
}
}
}
Rendszer által hozzárendelt felügyelt identitás hitelesítésének használata
Állítsa a authenticationType tulajdonságot ManagedServiceIdentity értékre. Az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
aadResourceId | Adja meg például az engedélyezéshez kért Microsoft Entra-erőforrást https://management.core.windows.net . |
Igen |
Példa
{
"name": "RESTLinkedService",
"properties": {
"type": "RestService",
"typeProperties": {
"url": "<REST endpoint e.g. https://www.example.com/>",
"authenticationType": "ManagedServiceIdentity",
"aadResourceId": "<AAD resource URL e.g. https://management.core.windows.net>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Felhasználó által hozzárendelt felügyelt identitás hitelesítésének használata
Állítsa a authenticationType tulajdonságot ManagedServiceIdentity értékre. Az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
aadResourceId | Adja meg például az engedélyezéshez kért Microsoft Entra-erőforrást https://management.core.windows.net . |
Igen |
hitelesítő adatok | Adja meg a felhasználó által hozzárendelt felügyelt identitást hitelesítő objektumként. | Igen |
Példa
{
"name": "RESTLinkedService",
"properties": {
"type": "RestService",
"typeProperties": {
"url": "<REST endpoint e.g. https://www.example.com/>",
"authenticationType": "ManagedServiceIdentity",
"aadResourceId": "<Azure AD resource URL e.g. https://management.core.windows.net>",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Hitelesítési fejlécek használata
Emellett konfigurálhatja a kérésfejléceket a hitelesítéshez a beépített hitelesítési típusokkal együtt.
Példa: API-kulcs hitelesítése
{
"name": "RESTLinkedService",
"properties": {
"type": "RestService",
"typeProperties": {
"url": "<REST endpoint>",
"authenticationType": "Anonymous",
"authHeaders": {
"x-api-key": {
"type": "SecureString",
"value": "<API key>"
}
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Adathalmaz tulajdonságai
Ez a szakasz a REST-adathalmaz által támogatott tulajdonságok listáját tartalmazza.
Az adathalmazok meghatározásához elérhető szakaszok és tulajdonságok teljes listáját az Adathalmazok és a csatolt szolgáltatások című témakörben találja.
Az adatok REST-ből való másolásához a következő tulajdonságok támogatottak:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | Az adathalmaz típustulajdonságának RestResource értékre kell állítania. | Igen |
relativeUrl | Az adatokat tartalmazó erőforrás relatív URL-címe. Ha ez a tulajdonság nincs megadva, a rendszer csak a társított szolgáltatás definíciójában megadott URL-címet használja. A HTTP-összekötő adatokat másol a kombinált URL-címről: [URL specified in linked service]/[relative URL specified in dataset] . |
Nem |
Ha a beállítást állította requestMethod
be, requestBody
additionalHeaders
és paginationRules
az adathalmazban továbbra is támogatott, miközben a tevékenység továbbhaladásához javasolt az új modell használata.
Példa:
{
"name": "RESTDataset",
"properties": {
"type": "RestResource",
"typeProperties": {
"relativeUrl": "<relative url>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<REST linked service name>",
"type": "LinkedServiceReference"
}
}
}
Másolási tevékenység tulajdonságai
Ez a szakasz a REST-forrás és a fogadó által támogatott tulajdonságok listáját tartalmazza.
A tevékenységek meghatározásához elérhető szakaszok és tulajdonságok teljes listáját a Folyamatok című témakörben találja.
REST mint forrás
A másolási tevékenység forrás szakaszában a következő tulajdonságok támogatottak:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A másolási tevékenység forrásának típustulajdonságát RestSource-ra kell állítani. | Igen |
requestMethod | A HTTP metódus. Az engedélyezett értékek a GET (alapértelmezett) és a POST. | Nem |
additionalHeaders | További HTTP-kérelemfejlécek. | Nem |
requestBody | A HTTP-kérés törzse. | Nem |
paginationRules | A lapozási szabályok a következő oldalkérések írásához. Részletekért tekintse meg a lapszámozás támogatási szakaszát. | Nem |
httpRequestTimeout | A HTTP-kérés időtúllépése (a TimeSpan értéke) a válasz lekéréséhez. Ez az érték a válasz lekéréséhez szükséges időtúllépés, nem pedig a válaszadatok olvasásának időtúllépése. Az alapértelmezett érték 00:01:40. | Nem |
requestInterval | Várakozási idő a következő lapra vonatkozó kérés elküldése előtt. Az alapértelmezett érték 00:00:01 | Nem |
Feljegyzés
A REST-összekötő figyelmen kívül hagyja a megadott "Accept" fejlécet additionalHeaders
. Mivel a REST-összekötő csak a JSON-ban támogatja a választ, automatikusan létrehoz egy fejlécet.Accept: application/json
A választörzsként megadott objektumtömb nem támogatott a lapozásban.
1. példa: A Get metódus használata lapszámozással
"activities":[
{
"name": "CopyFromREST",
"type": "Copy",
"inputs": [
{
"referenceName": "<REST input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "RestSource",
"additionalHeaders": {
"x-user-defined": "helloworld"
},
"paginationRules": {
"AbsoluteUrl": "$.paging.next"
},
"httpRequestTimeout": "00:01:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
2. példa: A Post metódus használata
"activities":[
{
"name": "CopyFromREST",
"type": "Copy",
"inputs": [
{
"referenceName": "<REST input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "RestSource",
"requestMethod": "Post",
"requestBody": "<body for POST REST request>",
"httpRequestTimeout": "00:01:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
REST fogadóként
A másolási tevékenység fogadó szakasza a következő tulajdonságokat támogatja:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A másolási tevékenység fogadójának típustulajdonságát RestSink értékre kell állítani. | Igen |
requestMethod | A HTTP metódus. Az engedélyezett értékek a POST (alapértelmezett), a PUT és a PATCH. | Nem |
additionalHeaders | További HTTP-kérelemfejlécek. | Nem |
httpRequestTimeout | A HTTP-kérés időtúllépése (a TimeSpan értéke) a válasz lekéréséhez. Ez az érték a válasz lekéréséhez szükséges időtúllépés, nem pedig az adatok írásához szükséges időtúllépés. Az alapértelmezett érték 00:01:40. | Nem |
requestInterval | A különböző kérések közötti időköz ezredmásodpercben. A kérelem időközi értékének [10, 600000] közötti számnak kell lennie. | Nem |
httpCompressionType | AZ optimális tömörítési szinttel rendelkező adatok küldésekor használandó HTTP-tömörítési típus. Az engedélyezett értékek nem, és gzip. | Nem |
writeBatchSize | A REST fogadóba kötegenként írandó rekordok száma. Az alapértelmezett érték 10000. | Nem |
A REST-összekötő fogadóként együttműködik a JSON-t elfogadó REST API-kkal. Az adatok JSON-ban lesznek elküldve az alábbi mintával. Szükség esetén a másolási tevékenység sémaleképezésével átformázhatja a forrásadatokat, hogy megfeleljenek a REST API által várt hasznos adatoknak.
[
{ <data object> },
{ <data object> },
...
]
Példa:
"activities":[
{
"name": "CopyToREST",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<REST output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "RestSink",
"requestMethod": "POST",
"httpRequestTimeout": "00:01:40",
"requestInterval": 10,
"writeBatchSize": 10000,
"httpCompressionType": "none",
},
}
}
]
Adatfolyam-tulajdonságok leképezése
A REST az integrációs adathalmazok és a beágyazott adathalmazok adatfolyamaiban is támogatott.
Forrásátalakítás
Tulajdonság | Leírás | Kötelező |
---|---|---|
requestMethod | A HTTP metódus. Az engedélyezett értékek a GET és a POST. | Igen |
relativeUrl | Az adatokat tartalmazó erőforrás relatív URL-címe. Ha ez a tulajdonság nincs megadva, a rendszer csak a társított szolgáltatás definíciójában megadott URL-címet használja. A HTTP-összekötő adatokat másol a kombinált URL-címről: [URL specified in linked service]/[relative URL specified in dataset] . |
Nem |
additionalHeaders | További HTTP-kérelemfejlécek. | Nem |
httpRequestTimeout | A HTTP-kérés időtúllépése (a TimeSpan értéke) a válasz lekéréséhez. Ez az érték a válasz lekéréséhez szükséges időtúllépés, nem pedig az adatok írásához szükséges időtúllépés. Az alapértelmezett érték 00:01:40. | Nem |
requestInterval | A különböző kérések közötti időköz ezredmásodpercben. A kérelem időközi értékének [10, 600000] közötti számnak kell lennie. | Nem |
QueryParameters. request_query_parameter VAGY QueryParameters[request_query_parameter] | A "request_query_parameter" felhasználó által definiált, amely egy lekérdezési paraméter nevére hivatkozik a következő HTTP-kérelem URL-címében. | Nem |
Fogadó átalakítása
Tulajdonság | Leírás | Kötelező |
---|---|---|
additionalHeaders | További HTTP-kérelemfejlécek. | Nem |
httpRequestTimeout | A HTTP-kérés időtúllépése (a TimeSpan értéke) a válasz lekéréséhez. Ez az érték a válasz lekéréséhez szükséges időtúllépés, nem pedig az adatok írásához szükséges időtúllépés. Az alapértelmezett érték 00:01:40. | Nem |
requestInterval | A különböző kérések közötti időköz ezredmásodpercben. A kérelem időközi értékének [10, 600000] közötti számnak kell lennie. | Nem |
httpCompressionType | AZ optimális tömörítési szinttel rendelkező adatok küldésekor használandó HTTP-tömörítési típus. Az engedélyezett értékek nem, és gzip. | Nem |
writeBatchSize | A REST fogadóba kötegenként írandó rekordok száma. Az alapértelmezett érték 10000. | Nem |
Beállíthatja a törlési, beszúrási, frissítési és upsert metódusokat, valamint a relatív soradatokat a REST fogadóba a CRUD-műveletekhez.
Adatfolyam-példaszkript
Figyelje meg, hogy a fogadó előtt egy módosítósor-átalakítással utasíthatja az ADF-et, hogy milyen típusú műveletet hajtson végre a REST-fogadóval. Például beszúrás, frissítés, upsert, delete.
AlterRow1 sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:true,
rowRelativeUrl: 'periods',
insertHttpMethod: 'PUT',
deleteHttpMethod: 'DELETE',
upsertHttpMethod: 'PUT',
updateHttpMethod: 'PATCH',
timeout: 30,
requestFormat: ['type' -> 'json'],
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> sink1
Feljegyzés
Adatfolyam N-lapok feldolgozásakor összesen N+1 API-hívásokat generál. Ez magában foglal egy kezdeti hívást a séma következtetéséhez, amelyet a forrásból lekért lapok számának megfelelő N-hívások követnek.
Lapozás támogatása
Amikor adatokat másol a REST API-kból, a REST API általában ésszerű szám alatt korlátozza az egyetlen kérelem válasz hasznos adatmennyiségének méretét; nagy mennyiségű adat visszaadásához az eredményt több oldalra osztja, és megköveteli a hívóktól, hogy egymást követő kéréseket küldjenek az eredmény következő oldalának lekéréséhez. Az egyik oldal kérése általában dinamikus, és az előző oldal válaszából visszaadott információkból áll.
Ez az általános REST-összekötő a következő lapozási mintákat támogatja:
- Következő kérés abszolút vagy relatív URL-címe = tulajdonságérték az aktuális válasz törzsében
- Következő kérés abszolút vagy relatív URL-címe = fejlécérték az aktuális válaszfejlécekben
- Következő kérés lekérdezési paramétere = tulajdonságérték az aktuális válasz törzsében
- Következő kérés lekérdezési paramétere = fejlécérték az aktuális válaszfejlécekben
- Következő kérés fejléce = tulajdonságérték az aktuális válasz törzsében
- Következő kérés fejléce = élőfej értéke az aktuális válaszfejlécekben
A lapozási szabályok szótárként vannak definiálva az adathalmazban, amely egy vagy több kis- és nagybetűket megkülönböztető kulcs-érték párot tartalmaz. A konfigurációval a rendszer a második oldaltól kezdve hozza létre a kérést. Az összekötő leállítja az iterálást, ha a HTTP-állapotkód 204(Nincs tartalom) lesz, vagy a "paginationRules" JSONPath-kifejezéseinek bármelyike null értéket ad vissza.
Támogatott kulcsok a lapozási szabályokban:
Kulcs | Leírás |
---|---|
AbsoluteUrl | Azt az URL-címet jelzi, amely a következő kérést küldi ki. Ez lehet abszolút VAGY relatív URL-cím. |
QueryParameters. request_query_parameter VAGY QueryParameters[request_query_parameter] | A "request_query_parameter" felhasználó által definiált, amely egy lekérdezési paraméter nevére hivatkozik a következő HTTP-kérelem URL-címében. |
Fejlécek. request_header VAGY fejlécek[request_header] | A "request_header" felhasználó által definiált, amely a következő HTTP-kérelem egyik fejlécnevére hivatkozik. |
EndCondition:end_condition | A "end_condition" felhasználó által definiált, amely azt a feltételt jelzi, amely a következő HTTP-kérelemben lezárja a lapozási ciklust. |
MaxRequestNumber | A lapozási kérelem maximális számát jelzi. Hagyja üresként, azt jelenti, hogy nincs korlát. |
SupportRFC5988 | Alapértelmezés szerint ez igaz értékre van állítva, ha nincs megadva lapozási szabály. Ezt a szabályt letilthatja úgy, hogy hamis értéket állít be supportRFC5988 , vagy eltávolítja ezt a tulajdonságot a szkriptből. |
Támogatott értékek a lapozási szabályokban:
Érték | Leírás |
---|---|
Fejlécek. response_header VAGY fejlécek[response_header] | A "response_header" felhasználó által definiált, amely az aktuális HTTP-válaszban egy fejlécnévre hivatkozik, amelynek értéke a következő kérés kiállításához lesz felhasználva. |
Egy "$" kezdetű JSONPath-kifejezés (amely a válasz törzsének gyökerét jelöli) | A válasz törzsének csak egy JSON-objektumot és objektumtömböt kell tartalmaznia, mivel a választörzs nem támogatott. A JSONPath-kifejezésnek egyetlen primitív értéket kell visszaadnia, amelyet a rendszer a következő kérés kiállításához használ. |
Feljegyzés
A leképezési adatfolyamok lapozási szabályai eltérnek a másolási tevékenységben a következő szempontok szerint:
- A tartomány nem támogatott az adatfolyamok leképezésében.
-
['']
az adatfolyamok leképezése nem támogatott. Ehelyett használja{}
a speciális karaktert. Például,body.{@odata.nextLink}
amelynek JSON-csomópontja@odata.nextLink
speciális karaktert.
tartalmaz. - A záró feltétel támogatott az adatfolyamok leképezésében, de a feltétel szintaxisa eltér attól a másolási tevékenységnél.
body
a válasz törzsének jelzésére$
szolgál ahelyett, hogy .header
a válasz fejlécének jelzéséreheaders
szolgál ahelyett, hogy . Az alábbi két példa mutatja be ezt a különbséget:- 1. példa:
Copy tevékenység: "EndCondition:$.data": "Empty"
Adatfolyamok leképezése: "EndCondition:body.data": "Empty" - 2. példa:
Copy tevékenység: "EndCondition:headers.complete": "Exist"
Adatfolyamok leképezése: "EndCondition:header.complete": "Exist"
- 1. példa:
Példák lapozási szabályokra
Ez a szakasz a lapozási szabályok beállításaira vonatkozó példák listáját tartalmazza.
1. példa: Változók a QueryParametersben
Ez a példa több olyan kérés küldésének konfigurációs lépéseit ismerteti, amelyek változói a QueryParametersben találhatók.
Több kérés:
baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=0,
baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=1000,
......
baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=10000
1. lépés: Bemenet sysparm_offset={offset}
vagy alap URL-címben vagy relatív URL-címben az alábbi képernyőképeken látható módon:
vagy
2. lépés: Lapozási szabályok beállítása az 1. vagy a 2. lehetőségként:
1. lehetőség: "QueryParameters.{ offset}" : "RANGE:0:10000:1000"
2. lehetőség: "AbsoluteUrl.{ offset}" : "RANGE:0:10000:1000"
2. példa: Változók az AbsoluteUrl-ben
Ez a példa bemutatja a konfigurációs lépéseket több olyan kérés küldéséhez, amelyek változói az AbsoluteUrl-ben találhatók.
Több kérés:
BaseUrl/api/now/table/t1
BaseUrl/api/now/table/t2
......
BaseUrl/api/now/table/t100
1. lépés: Bemenet {id}
vagy az alap URL-címbena társított szolgáltatás konfigurációs lapján, vagy relatív URL-cím az adathalmaz kapcsolatpaneljén.
vagy
2. lépés: Lapozási szabályokbeállítása "AbsoluteUrl.{ id}" :"RANGE:1:100:1".
3. példa: Változók a fejlécekben
Ez a példa a konfigurációs lépéseket mutatja be több olyan kérés elküldéséhez, amelyek változói fejlécekben találhatók.
Több kérés:
RequestUrl: https://example/table
1. kérelem: Header(id->0)
2. kérelem: Header(id->10)
......
100. kérelem: Header(id->100)
1. lépés: Bemenet {id}
a további fejlécekben.
2. lépés: Lapozási szabályok beállítása "Fejlécek" értékre. { id}" : "RANGE:0:100:10".
4. példa: A változók az AbsoluteUrl/QueryParameters/Headers függvényben találhatók, a végváltozó nincs előre definiálva, a záró feltétel pedig a válaszon alapul
Ez a példa konfigurációs lépéseket tartalmaz több olyan kérés küldéséhez, amelyek változói Az AbsoluteUrl/QueryParameters/Headers elemben találhatók, de a záró változó nincs definiálva. Különböző válaszok esetén a 4.1–4.6. példában különböző feltételszabály-beállítások jelennek meg.
Több kérés:
Request 1: baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=0,
Request 2: baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=1000,
Request 3: baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=2000,
......
Ebben a példában két válasz történt:
1. válasz:
{
Data: [
{key1: val1, key2: val2
},
{key1: val3, key2: val4
}
]
}
2. válasz:
{
Data: [
{key1: val5, key2: val6
},
{key1: val7, key2: val8
}
]
}
1. lépés: Állítsa be a lapozási szabályok tartományát 1. példaként, és hagyja üresen a tartomány végét "AbsoluteUrl.{ offset}": "RANGE:0::1000".
2. lépés: Állítsa be a különböző zárófeltétel-szabályokat a különböző utolsó válaszok szerint. Lásd az alábbi példákat:
4.1. példa: A lapozás akkor fejeződik be, ha a válaszban szereplő adott csomópont értéke üres
A REST API az alábbi struktúrában adja vissza az utolsó választ:
{ Data: [] }
Állítsa a záró feltétel szabályát "EndCondition:$.data": "Empty" értékre a lapozás befejezéséhez, ha a válaszban szereplő adott csomópont értéke üres.
4.2. példa: A lapozás akkor ér véget, ha a válaszban szereplő adott csomópont értéke nem létezik
A REST API az alábbi struktúrában adja vissza az utolsó választ:
{}
Állítsa a záró feltétel szabályát "EndCondition:$.data": "NonExist" értékre a lapozás befejezéséhez, ha a válaszban szereplő adott csomópont értéke nem létezik.
4.3. példa: A lapozás akkor fejeződik be, ha a válaszban szereplő adott csomópont értéke létezik
A REST API az alábbi struktúrában adja vissza az utolsó választ:
{ Data: [ {key1: val991, key2: val992 }, {key1: val993, key2: val994 } ], Complete: true }
Állítsa be a zárófeltétel-szabályt "EndCondition:$" értékre . Kész: "Létező" a lapozás befejezéséhez, ha a válaszban szereplő adott csomópont értéke létezik.
4.4. példa: A lapozás akkor fejeződik be, ha a válaszban szereplő adott csomópont értéke felhasználó által megadott const érték
A REST API a következő struktúrában adja vissza a választ:
{ Data: [ {key1: val1, key2: val2 }, {key1: val3, key2: val4 } ], Complete: false }
......
Az utolsó válasz pedig a következő struktúrában van:
{ Data: [ {key1: val991, key2: val992 }, {key1: val993, key2: val994 } ], Complete: true }
Állítsa be a zárófeltétel-szabályt "EndCondition:$" értékre . Kész: "Const:true" a lapozás befejezéséhez, ha a válaszban szereplő adott csomópont értéke felhasználó által megadott const érték.
4.5. példa: A lapozás akkor ér véget, ha a válaszban szereplő fejléckulcs értéke megegyezik a felhasználó által megadott const értékkel
A REST API-válaszok fejléckulcsai az alábbi struktúrában jelennek meg:
Válaszfejléc 1:
header(Complete->0)
......
Utolsó válasz fejléce:header(Complete->1)
Állítsa be a zárófeltétel-szabályt "EndCondition:headers" értékre . Kész: "Const:1" a lapozás befejezéséhez, ha a válaszban szereplő fejléckulcs értéke megegyezik a felhasználó által megadott const értékkel.
4.6. példa: A lapozás akkor fejeződik be, ha a kulcs megtalálható a válaszfejlécben
A REST API-válaszok fejléckulcsai az alábbi struktúrában jelennek meg:
Válaszfejléc 1:
header()
......
Utolsó válasz fejléce:header(CompleteTime->20220920)
Állítsa be a zárófeltétel-szabályt "EndCondition:headers" értékre . CompleteTime: "Exist" (Létezik) a lapozás befejezéséhez, ha a kulcs megtalálható a válaszfejlécben.
5. példa: A végfeltétel beállítása a végtelen kérések elkerülése érdekében, ha a tartományszabály nincs meghatározva
Ez a példa több kérés küldésének konfigurációs lépéseit ismerteti, ha a tartományszabályt nem használják. A végfeltétel a 4.1–4.6. példában állítható be a végtelen kérések elkerülése érdekében. A REST API a következő struktúrában ad vissza választ, ebben az esetben a következő oldal URL-címe a paging.next fájlban jelenik meg.
{
"data": [
{
"created_time": "2017-12-12T14:12:20+0000",
"name": "album1",
"id": "1809938745705498_1809939942372045"
},
{
"created_time": "2017-12-12T14:14:03+0000",
"name": "album2",
"id": "1809938745705498_1809941802371859"
},
{
"created_time": "2017-12-12T14:14:11+0000",
"name": "album3",
"id": "1809938745705498_1809941879038518"
}
],
"paging": {
"cursors": {
"after": "MTAxNTExOTQ1MjAwNzI5NDE=",
"before": "NDMyNzQyODI3OTQw"
},
"previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw",
"next": "https://graph.facebook.com/me/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE="
}
}
...
Az utolsó válasz a következő:
{
"data": [],
"paging": {
"cursors": {
"after": "MTAxNTExOTQ1MjAwNzI5NDE=",
"before": "NDMyNzQyODI3OTQw"
},
"previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw",
"next": "Same with Last Request URL"
}
}
1. lépés: A lapozási szabályokbeállítása "AbsoluteUrl": "$.paging.next".
2. lépés: Ha next
az utolsó válasz mindig megegyezik az utolsó kérés URL-címével, és nem üres, a rendszer végtelen kéréseket küld. A végfeltétel a végtelen kérések elkerülésére használható. Ezért állítsa be a zárófeltétel-szabályt a 4.1-4.6. példára hivatkozva.
6. példa: A kérelem maximális számának beállítása a végtelen kérés elkerülése érdekében
Állítsa be a MaxRequestNumber függvényt, hogy elkerülje a végtelen kérést az alábbi képernyőképen látható módon:
7. példa: Az RFC 5988 lapozási szabály alapértelmezés szerint támogatott
A háttérrendszer automatikusan megkapja a következő URL-címet a fejlécben található RFC 5988 stílusú hivatkozások alapján.
Tipp.
Ha nem szeretné engedélyezni ezt az alapértelmezett lapozási szabályt, beállíthatja supportRFC5988
false
vagy egyszerűen törölheti azt a szkriptben.
8a. példa: A következő kérés URL-címe a válasz törzsében található, amikor lapozást használ az adatfolyamok leképezésében
Ez a példa bemutatja, hogyan állíthatja be a lapozási szabályt és a zárófeltétel-szabályt az adatfolyamok leképezésében, amikor a következő kérelem URL-címe a válasz törzséből származik.
A válaszséma az alábbiakban látható:
A lapozási szabályokat a következő képernyőképként kell beállítani:
Alapértelmezés szerint a lapozás leáll, amikor a törzs. A(z) {@odata.nextLink}** értéke null vagy üres.
Ha azonban az utolsó válasz törzsében lévő @odata.nextLink értéke megegyezik az utolsó kérés URL-címével, akkor az a végtelen ciklushoz vezet. A feltétel elkerülése érdekében definiáljon zárófeltétel-szabályokat.
Ha az utolsó válasz értéke Üres, akkor a záró feltétel szabálya az alábbi módon állítható be:
Ha a válaszfejléc teljes kulcsának értéke true (igaz) értékű, a lapozás végét jelzi, akkor a zárófeltétel-szabály az alábbi módon állítható be:
8b. példa: A következő kérés URL-címe a válasz törzsében található, amikor lapozást használ a másolási tevékenységben
Ez a példa bemutatja, hogyan állíthatja be a lapozási szabályt másolási tevékenységben, ha a következő kérés URL-címe a válasz törzsében található.
A válaszséma az alábbiakban látható:
A lapozási szabályokat az alábbi képernyőképen látható módon kell beállítani:
9. példa: A válasz formátuma XML, a következő kérés URL-címe pedig a válasz törzséből származik, amikor lapozást használ az adatfolyamok leképezéséhez
Ez a példa bemutatja, hogyan állíthatja be a lapozási szabályt az adatfolyamok leképezésében, ha a válaszformátum XML, a következő kérelem URL-címe pedig a válasz törzséből származik. Ahogy az alábbi képernyőképen látható, az első URL-cím a https://< user.dfs.core.windows.NET/bugfix/test/movie_1.xml>
A válaszséma az alábbiakban látható:
A lapozási szabály szintaxisa ugyanaz, mint a 8. példában, és az alábbi módon kell beállítani:
JSON-válasz exportálása a következőképpen
Ezt a REST-összekötőt használhatja a REST API JSON-válaszának különböző fájlalapú tárolókba való exportálásához. Az ilyen séma-agnosztikus másolás eléréséhez hagyja ki a "struktúra" (más néven séma) szakaszt az adathalmazban és a sémaleképezést a másolási tevékenységben.
Séma-hozzárendelés
Ha a REST-végpontról táblázatos fogadóba szeretne adatokat másolni, tekintse meg a sémaleképezést.
Kapcsolódó tartalom
AzOknak az adattáraknak a listáját, amelyeket a Másolási tevékenység forrásként és fogadóként támogat az Azure Data Factoryben, tekintse meg a támogatott adattárakat és formátumokat.