Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
UYGULANANLAR:
Azure Data Factory
Azure Synapse Analytics
İpucu
Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!
Bu makale, REST uç noktasından ve REST uç noktasına veri kopyalamak için Azure Data Factory’deki Kopyalama Etkinliğini kullanmayı özetler. Makale, Azure Data Factory'deki Kopyalama Etkinliğine genel bir bakış sunan Kopyalama Etkinliği üzerine oluşturulmuştur.
Bu REST bağlayıcısı, HTTP bağlayıcısı ve Web tablosu bağlayıcısı arasındaki farklar şunlardır:
- REST bağlayıcısı, RESTful API'lerinden veri kopyalamayı özellikle destekler.
- HTTP bağlayıcısı, herhangi bir HTTP uç noktasından (örneğin, dosyayı indirmek için) veri almak için geneldir. Bu REST bağlayıcısından önce, REST bağlayıcısı ile karşılaştırıldığında desteklenen ancak daha az işlevsel olan RESTful API'lerinden veri kopyalamak için HTTP bağlayıcısını kullanabilirsiniz.
- Web tablosu bağlayıcısı, bir HTML web sayfasından tablo içeriğini ayıklar.
Desteklenen özellikler
Bu REST bağlayıcısı aşağıdaki özellikler için desteklenir:
| Desteklenen özellikler | Kızılötesi |
|---|---|
| Kopyalama etkinliği (kaynak/havuz) | (1) (2) |
| Eşleme veri akışı (kaynak/hedef) | (1) |
(1) Azure entegrasyon çalışma zamanı (2) Kendinden barındırılan entegrasyon çalışma zamanı
Kaynak/havuz olarak desteklenen veri depolarının listesi için bkz . Desteklenen veri depoları.
Özellikle, bu genel REST bağlayıcısı şunları destekler:
- GET veya POST yöntemlerini kullanarak bir REST uç noktasından veri kopyalama ve POST, PUT veya PATCH yöntemlerini kullanarak verileri REST uç noktasına kopyalama.
- Aşağıdaki kimlik doğrulamalarından birini kullanarak veri kopyalama: Anonim, Temel, Hizmet Sorumlusu, OAuth2 İstemci Kimlik Bilgileri, Sistem Tarafından Atanan Yönetilen Kimlik ve Kullanıcı Tarafından Atanan Yönetilen Kimlik.
- REST API'lerinde sayfalandırma .
- Kaynak olarak REST için REST JSON yanıtını olduğu gibi kopyalayın veya şema eşlemesini kullanarak ayrıştırın. Yalnızca JSON'da yanıt yükü desteklenir.
İpucu
Data Factory'de REST bağlayıcısını yapılandırmadan önce veri alma isteğini test etmek için üst bilgi ve gövde gereksinimleri için API belirtimi hakkında bilgi edinin. Doğrulamak için Visual Studio, PowerShell'in Invoke-RestMethod veya web tarayıcısı gibi araçları kullanabilirsiniz.
Önkoşullar
Veri deponuz bir şirket içi ağ, Azure sanal ağı veya Amazon Sanal Özel Bulut içinde bulunuyorsa, şirket içinde barındırılan tümleştirme çalışma zamanını buna bağlanmak için yapılandırmanız gerekir.
Veri deponuz yönetilen bir bulut veri hizmetiyse Azure Integration Runtime'ı kullanabilirsiniz. Erişim, güvenlik duvarı kurallarında onaylanan IP'ler ile sınırlıysa Azure Integration Runtime IP'lerini izin verme listesine ekleyebilirsiniz.
Azure Data Factory'de yönetilen sanal ağ tümleştirme çalışma zamanı özelliğini kullanarak, yerel olarak barındırılan tümleştirme çalışma zamanını yüklemeden ve yapılandırmadan yerel ağa erişebilirsiniz.
Data Factory tarafından desteklenen ağ güvenlik mekanizmaları ve seçenekleri hakkında daha fazla bilgi için bkz . Veri erişim stratejileri.
Kullanmaya başlayın
Kopyalama etkinliğini bir işlem hattıyla gerçekleştirmek için aşağıdaki araçlardan veya SDK'lardan birini kullanabilirsiniz:
- Veri Kopyalama aracı
- Azure portalı
- .NET SDK
- Python SDK'sı
- Azure PowerShell
- REST API
- Azure Resource Manager şablonu
Kullanıcı arabirimini kullanarak REST bağlantılı hizmet oluşturma
Azure portalı kullanıcı arabiriminde REST bağlı hizmeti oluşturmak için aşağıdaki adımları kullanın.
Azure Data Factory veya Synapse çalışma alanınızda Yönet sekmesine gidin ve Bağlı Hizmetler'i ve ardından Yeni'yi seçin:
REST araması yapın ve REST bağlayıcısını seçin.
Hizmet ayrıntılarını yapılandırın, bağlantıyı test edin ve yeni bağlı hizmeti oluşturun.
Bağlayıcı yapılandırma ayrıntıları
Aşağıdaki bölümlerde, REST bağlayıcısına özgü Data Factory varlıklarını tanımlamak için kullanabileceğiniz özelliklerle ilgili ayrıntılar sağlanır.
Bağlı hizmet özellikleri
REST bağlı hizmeti için aşağıdaki özellikler desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | Tür özelliği RestService olarak ayarlanmalıdır. | Evet |
| URL | REST hizmetinin temel URL'si. | Evet |
| SunucuSertifikaDoğrulamasınıEtkinleştir (enableServerCertificateValidation) | Uç noktaya bağlanırken sunucu tarafı TLS/SSL sertifikasının doğrulanıp doğrulanmayacağı. | Hayır (varsayılan değer true'dur) |
| kimlik doğrulama türü | REST hizmetine bağlanmak için kullanılan kimlik doğrulama türü. İzin verilen değerler Anonim, Temel, AadServicePrincipal, OAuth2ClientCredential ve ManagedServiceIdentity değerleridir. Ayrıca kimlik doğrulama üst bilgilerini authHeaders özelliğinde yapılandırabilirsiniz. Sırasıyla daha fazla özellik ve örnek için aşağıdaki ilgili bölümlere bakın. |
Evet |
| authHeaders | Kimlik doğrulaması için diğer HTTP isteği üst bilgileri. Örneğin, API anahtarı kimlik doğrulamasını kullanmak için kimlik doğrulama türünü "Anonim" olarak seçebilir ve üst bilgide API anahtarı belirtebilirsiniz. |
Hayır |
| connectVia | Veri deposuna bağlanmak için kullanılacak Integration Runtime. Önkoşullar bölümünden daha fazla bilgi edinin. Belirtilmezse, bu özellik varsayılan Azure Integration Runtime'ı kullanır. | Hayır |
Farklı kimlik doğrulama türleri için ayrıntılar için ilgili bölümlere bakın.
- Temel kimlik doğrulaması
- Hizmet Sorumlusu kimlik doğrulaması
- OAuth2 İstemci Yetki kimlik doğrulaması
- Sistem tarafından atanan yönetilen kimlik doğrulama
- Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması
- Anonim kimlik doğrulaması
Temel kimlik doğrulamayı kullanma
authenticationType özelliğini Temel olarak ayarlayın. Önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| kullanıcı adı | REST uç noktasına erişmek için kullanılacak kullanıcı adı. | Evet |
| şifre | Kullanıcının parolası ( userName değeri). Data Factory'de güvenli bir şekilde depolamak için bu alanı SecureString türü olarak işaretleyin. Azure Key Vault'ta depolanan bir gizli anahtara da başvurabilirsiniz. | Evet |
Örnek
{
"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"
}
}
}
Hizmet Sorumlusu kimlik doğrulamayı kullanma
authenticationType özelliğini AadServicePrincipal olarak ayarlayın. Önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| "servicePrincipalId (hizmet principalID'si)" | Microsoft Entra uygulamasının istemci kimliğini belirtin. | Evet |
| hizmetPrensipKimlikBilgisiTürü | Hizmet sorumlusu kimlik doğrulaması için kullanılacak kimlik bilgisi türünü belirtin. İzin verilen değerler ServicePrincipalKey ve ServicePrincipalCert'dir. |
Hayır |
| ServicePrincipalKey için | ||
| servicePrincipalKey | Microsoft Entra uygulamasının anahtarını belirtin. Data Factory'de güvenli bir şekilde depolamak için bu alanı SecureString olarak işaretleyin veya Azure Key Vault'ta depolanan bir gizli diziye başvurun. | Hayır |
| ServicePrincipalCert için | ||
| hizmetPrensibiEklenmişSertifika | Microsoft Entra Id'de kayıtlı uygulamanızın base64 kodlanmış sertifikasını belirtin ve sertifika içerik türünün PKCS #12 olduğundan emin olun. Güvenli bir şekilde depolamak için bu alanı SecureString olarak işaretleyin veya Azure Key Vault'ta depolanan bir gizli diziye başvurun. Sertifikayı Azure Key Vault'a kaydetmeyi öğrenmek için bu bölüme gidin. | Hayır |
| servisAnaGömülüSertifikaŞifre | Sertifikanızın güvenliği bir parolayla sağlanıyorsa sertifikanızın parolasını belirtin. Güvenli bir şekilde depolamak için bu alanı SecureString olarak işaretleyin veya Azure Key Vault'ta depolanan bir gizli diziye başvurun. | Hayır |
| kiracı | Uygulamanızın bulunduğu kiracı bilgilerini (etki alanı adı veya kiracı kimliği) belirtin. Mouse'u Azure portalının sağ üst köşesine getirerek geri alın. | Evet |
| aadResourceId | Yetkilendirme için istediğiniz Microsoft Entra kaynağını belirtin, örneğin, https://management.core.windows.net. |
Evet |
| Azure Bulut Türü | Hizmet Sorumlusu kimlik doğrulaması için Microsoft Entra uygulamanızın kaydedildiği Azure bulut ortamının türünü belirtin. İzin verilen değerler AzurePublic, AzureChina, AzureUsGovernment ve AzureGermany'dir. Varsayılan olarak, veri fabrikasının bulut ortamı kullanılır. |
Hayır |
Örnek 1: Hizmet ilkesi anahtarıyla kimlik doğrulama
{
"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"
}
}
}
Örnek 2: Hizmet sorumlusu sertifika kimlik doğrulamayı kullanma
{
"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"
}
}
}
Hizmet sorumlusu sertifikasını Azure Key Vault'a kaydetme
Hizmet sorumlusu sertifikasını Azure Key Vault'a kaydetmek için iki seçeneğiniz vardır:
Seçenek 1
Hizmet sorumlusu sertifikasını base64 dizesine dönüştürün. Bu makaleden daha fazla bilgi edinin.
Base64 dizesini Azure Key Vault'ta gizli dizi olarak kaydedin.
Seçenek 2
Sertifikayı Azure Key Vault'tan indiremiyorsanız, dönüştürülen hizmet sorumlusu sertifikasını Azure Key Vault'ta gizli dizi olarak kaydetmek için bu şablonu kullanabilirsiniz.
OAuth2 İstemci Kimlik Bilgisi kimlik doğrulamasını kullanma
authenticationType özelliğini OAuth2ClientCredential olarak ayarlayın. Önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| tokenUçnoktası | Erişim belirtecini almak için yetkilendirme sunucusunun belirteç uç noktası. | Evet |
| clientId (İstemci Kimliği) | Uygulamanızla ilişkili istemci kimliği. | Evet |
| istemciSırrı | Uygulamanızla ilişkili istemci sırrı. Data Factory'de güvenli bir şekilde depolamak için bu alanı SecureString türü olarak işaretleyin. Azure Key Vault'ta depolanan bir gizli anahtara da başvurabilirsiniz. | Evet |
| kapsam | Gerekli erişimin kapsamı. Ne tür bir erişim isteneceğini açıklar. | Hayır |
| kaynak | Erişimin isteneceği hedef hizmet veya kaynak. | Hayır |
Örnek
{
"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>"
}
}
}
Sistem tarafından atanan yönetilen kimlik kimlik doğrulamayı kullanma
authenticationType özelliğini ManagedServiceIdentity olarak ayarlayın. Önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| aadResourceId | Yetkilendirme için istediğiniz Microsoft Entra kaynağını belirtin, örneğin, https://management.core.windows.net. |
Evet |
Örnek
{
"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"
}
}
}
Kullanıcı tarafından atanan yönetilen kimlik doğrulamasını kullanma
authenticationType özelliğini ManagedServiceIdentity olarak ayarlayın. Önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| aadResourceId | Yetkilendirme için istediğiniz Microsoft Entra kaynağını belirtin, örneğin, https://management.core.windows.net. |
Evet |
| kimlik bilgileri | Kimlik bilgisi nesnesi olarak kullanıcı tarafından atanan yönetilen kimliği belirtin. | Evet |
Örnek
{
"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"
}
}
}
Kimlik doğrulama üst bilgilerini kullanma
Ayrıca, yerleşik kimlik doğrulama türleriyle birlikte kimlik doğrulaması için istek üst bilgilerini yapılandırabilirsiniz.
Örnek: API anahtarı kimlik doğrulaması kullanma
{
"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"
}
}
}
Veri kümesi özellikleri
Bu bölümde REST veri kümesinin desteklediği özelliklerin listesi sağlanır.
Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için bkz . Veri kümeleri ve bağlı hizmetler.
REST'ten veri kopyalamak için aşağıdaki özellikler desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | Veri kümesinin tür özelliği RestResource olarak ayarlanmalıdır. | Evet |
| göreceli URL | Verileri içeren kaynağın göreli URL'si. Bu özellik belirtilmediğinde, yalnızca bağlı hizmet tanımında belirtilen URL kullanılır. HTTP bağlayıcısı, birleşik URL'den veri kopyalar: [URL specified in linked service]/[relative URL specified in dataset]. |
Hayır |
Eğer veri kümesinde requestMethod, additionalHeaders, requestBody ve paginationRules ayarlıysa, as-ishala desteklenmektedir. Ancak, ileriye dönük olarak etkinlikte yeni modeli kullanmanız önerilir.
Örnek:
{
"name": "RESTDataset",
"properties": {
"type": "RestResource",
"typeProperties": {
"relativeUrl": "<relative url>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<REST linked service name>",
"type": "LinkedServiceReference"
}
}
}
Kopyalama Etkinliği özellikleri
Bu bölümde REST kaynağı ve havuzu tarafından desteklenen özelliklerin listesi sağlanır.
Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için Pipelines bölümüne bakın.
Kaynak olarak REST
Kopyalama etkinliği kaynağı bölümünde aşağıdaki özellikler desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | Kopyalama etkinliği kaynağının type özelliği RestSource olarak ayarlanmalıdır. | Evet |
| requestMethod | HTTP yöntemi. İzin verilen değerler GET (varsayılan) ve POST değerleridir. | Hayır |
| ekBaşlıklar | Diğer HTTP isteği üst bilgileri. | Hayır |
| requestBody | HTTP isteğinin gövdesi. | Hayır |
| sayfalama kuralları | Sonraki sayfa isteklerini oluşturmak için sayfalandırma kuralları. Ayrıntılarla ilgili sayfalandırma desteği bölümüne bakın. | Hayır |
| HTTP İstek Zaman Aşımı | Yanıt almak için HTTP isteğinin zaman aşımı (TimeSpan değeri). Bu değer, yanıt verilerini okumak için zaman aşımı değil, yanıt almak için zaman aşımıdır. Varsayılan değer 00:01:40'tır. | Hayır |
| İstek Aralığı | Sonraki sayfa için isteği göndermeden önce bekleme süresi. Varsayılan değer 00:00:01'dir | Hayır |
Not
REST bağlayıcısı, içinde additionalHeadersbelirtilen tüm "Kabul Et" üst bilgilerini yoksayar. Yalnızca JSON yanıtlarını desteklediğinden, üst bilgiyi otomatik olarak olarak olarak Accept: application/jsonayarlar.
Sayfalandırma, üst düzey yapının bir JSON dizisi olduğu REST API yanıtlarında desteklenmez.
Örnek 1: Get yöntemini sayfalandırma ile kullanma
"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>"
}
}
}
]
Örnek 2: Post yöntemini kullanma
"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>"
}
}
}
]
Havuz olarak REST
Kopyalama etkinliği havuzu bölümünde aşağıdaki özellikler desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | Kopyalama etkinliğinin 'sink' özelliği type olarak RestSink ayarlanmalıdır. | Evet |
| requestMethod | HTTP yöntemi. İzin verilen değerler POST (varsayılan), PUT ve PATCH değerleridir. | Hayır |
| ekBaşlıklar | Diğer HTTP isteği üst bilgileri. | Hayır |
| HTTP İstek Zaman Aşımı | Yanıt almak için HTTP isteğinin zaman aşımı (TimeSpan değeri). Bu değer, verileri yazmak için zaman aşımı değil, yanıt almak için zaman aşımıdır. Varsayılan değer 00:01:40'tır. | Hayır |
| İstek Aralığı | Milisaniye cinsinden farklı istekler arasındaki aralık süresi. İstek aralığı değeri [10, 60000] arasında bir sayı olmalıdır. | Hayır |
| HTTP Sıkıştırma Türü | Verileri En uygun Sıkıştırma Düzeyi ile gönderirken kullanılacak HTTP sıkıştırma türü. İzin verilen değerler hiçbiri ve gzip değerleridir. | Hayır |
| writeBatchSize (yazmaToplamBoyutu) | Toplu iş başına REST havuzuna yazacak kayıt sayısı. Varsayılan değer 10000'dir. | Hayır |
Havuz olarak REST bağlayıcısı, JSON kabul eden REST API'leriyle çalışır. Veriler JSON biçiminde aşağıdaki desenle gönderilir. Gerektiğinde, kaynak verileri REST API tarafından beklenen yüke uyacak şekilde yeniden şekillendirmek için kopyalama etkinliği şema eşlemesini kullanabilirsiniz.
[
{ <data object> },
{ <data object> },
...
]
Örnek:
"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",
},
}
}
]
Eşleme veri akışı özellikleri
REST, hem tümleştirme veri kümeleri hem de satır içi veri kümeleri için veri akışlarında desteklenir.
Kaynak dönüştürme
| Özellik | Açıklama | Gerekli |
|---|---|---|
| requestMethod | HTTP yöntemi. İzin verilen değerler GET ve POST değerleridir. | Evet |
| göreceli URL | Verileri içeren kaynağın göreli URL'si. Bu özellik belirtilmediğinde, yalnızca bağlı hizmet tanımında belirtilen URL kullanılır. HTTP bağlayıcısı, birleşik URL'den veri kopyalar: [URL specified in linked service]/[relative URL specified in dataset]. |
Hayır |
| ekBaşlıklar | Diğer HTTP isteği üst bilgileri. | Hayır |
| HTTP İstek Zaman Aşımı | Yanıt almak için HTTP isteğinin zaman aşımı (TimeSpan değeri). Bu değer, verileri yazmak için zaman aşımı değil, yanıt almak için zaman aşımıdır. Varsayılan değer 00:01:40'tır. | Hayır |
| İstek Aralığı | Milisaniye cinsinden farklı istekler arasındaki aralık süresi. İstek aralığı değeri [10, 60000] arasında bir sayı olmalıdır. | Hayır |
| QueryParameters. request_query_parameter OR QueryParameters['request_query_parameter'] | "request_query_parameter", kullanıcı tarafından tanımlanan ve bir sonraki HTTP isteği URL'sindeki bir sorgu parametresi adını referans alan bir ifadedir. | Hayır |
Lavabo dönüşümü
| Özellik | Açıklama | Gerekli |
|---|---|---|
| ekBaşlıklar | Diğer HTTP isteği üst bilgileri. | Hayır |
| HTTP İstek Zaman Aşımı | Yanıt almak için HTTP isteğinin zaman aşımı (TimeSpan değeri). Bu değer, verileri yazmak için zaman aşımı değil, yanıt almak için zaman aşımıdır. Varsayılan değer 00:01:40'tır. | Hayır |
| İstek Aralığı | Milisaniye cinsinden farklı istekler arasındaki aralık süresi. İstek aralığı değeri [10, 60000] arasında bir sayı olmalıdır. | Hayır |
| HTTP Sıkıştırma Türü | Verileri En uygun Sıkıştırma Düzeyi ile gönderirken kullanılacak HTTP sıkıştırma türü. İzin verilen değerler hiçbiri ve gzip değerleridir. | Hayır |
| writeBatchSize (yazmaToplamBoyutu) | Toplu iş başına REST havuzuna yazacak kayıt sayısı. Varsayılan değer 10000'dir. | Hayır |
CRUD işlemleri için REST havuzuna gönderilecek göreli satır verilerinin yanı sıra silme, ekleme, güncelleştirme ve upsert yöntemlerini ayarlayabilirsiniz.
Örnek veri akışı betiği
ADF'ye REST havuzunuzla ne tür bir eylem gerçekleştireceklerini bildirmek için havuzdan önce bir değişiklik satırı dönüşümü kullanıldığına dikkat edin. Yani ekleme, güncelleştirme, upsert, silme.
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
Not
Veri Akışı, N sayfaları işlerken toplam N+1 API çağrısı oluşturur. Bu, şemayı çıkarsamak için ilk çağrıyı ve ardından kaynaktan getirilen sayfa sayısına karşılık gelen N çağrılarını içerir.
Sayfalandırma desteği
REST API'lerinden veri kopyaladığınızda, NORMALDE REST API yanıt yükü boyutunu makul bir sayı altında tek bir istekle sınırlar; büyük miktarda veri döndürürken, sonucu birden çok sayfaya böler ve arayanların sonucun sonraki sayfasını almak için ardışık istek göndermesini gerektirir. Genellikle, bir sayfa için istek dinamiktir ve önceki sayfanın yanıtından döndürülen bilgiler tarafından oluşturulur.
Bu genel REST bağlayıcısı aşağıdaki sayfalandırma desenlerini destekler:
- Sonraki isteğin mutlak veya göreli URL'si = mevcut yanıt gövdesindeki özellik değeri
- Sonraki isteğin geçerli yanıt üst bilgilerinde mutlak veya göreli URL = üst bilgi değeri
- Sonraki isteğin sorgu parametresi = geçerli yanıt gövdesindeki özellik değeri
- Sonraki isteğin sorgu parametresi = geçerli yanıt üst bilgilerinde üst bilgi değeri
- Sonraki isteğin üst bilgisi = geçerli yanıt gövdesindeki özellik değeri
- Sonraki isteğin üst bilgisi = geçerli yanıt üst bilgilerinde üst bilgi değeri
Sayfalandırma kuralları , veri kümesinde bir veya daha fazla büyük/küçük harfe duyarlı anahtar-değer çifti içeren bir sözlük olarak tanımlanır. yapılandırma, ikinci sayfadan başlayarak isteği oluşturmak için kullanılır. Bağlayıcı, HTTP durum kodu 204 (İçerik Yok) aldığında veya "paginationRules" içindeki JSONPath ifadelerinden herhangi biri null döndürdüğünde yinelemeyi durdurur.
Sayfalandırma kurallarında desteklenen anahtarlar :
| Anahtar | Açıklama |
|---|---|
| MutlakURL | Sonraki isteği vermek için URL'yi gösterir. Mutlak URL veya göreli URL olabilir. |
| QueryParameters. request_query_parameter OR QueryParameters['request_query_parameter'] | "request_query_parameter", kullanıcı tarafından tanımlanan ve bir sonraki HTTP isteği URL'sindeki bir sorgu parametresi adını referans alan bir ifadedir. |
| Üstbilgi.request_header OR Üstbilgi['request_header'] | "request_header", bir sonraki HTTP isteğinde bir üst bilgi adını referans alan kullanıcı tanımlı bir terimdir. |
| EndCondition:end_condition | "end_condition", bir sonraki HTTP isteğinde sayfalandırma döngüsünü sonlandıracak koşulu gösteren kullanıcı tanımlıdır. |
| MaksimumİstekSayısı | En yüksek sayfalandırma isteği numarasını gösterir. Boş bırakın, sınır yok demektir. |
| SupportRFC5988 | Varsayılan olarak, herhangi bir sayfalandırma kuralı tanımlanmadıysa bu true olarak ayarlanır. False olarak ayarlayarak supportRFC5988 veya bu özelliği betikten kaldırarak bu kuralı devre dışı bırakabilirsiniz. |
Sayfalandırma kurallarında desteklenen değerler :
| Değer | Açıklama |
|---|---|
| Üstbilgiler.response_header OR Üstbilgiler['response_header'] | "Response_header", kullanıcı tarafından tanımlanır ve geçerli HTTP yanıtında bir üst bilgi adına doğrudan başvurur; bu bilginin değeri, bir sonraki isteği başlatmak için kullanılacaktır. |
| "$" ile başlayan bir JSONPath ifadesi (yanıt gövdesinin kökünü temsil eder) | Yanıt gövdesi yalnızca bir JSON nesnesi içermelidir ve bir nesne dizisi yanıt gövdesi olarak desteklenmez. JSONPath ifadesi, bir sonraki isteği vermek için kullanılacak tek bir ilkel değer döndürmelidir. |
Not
Veri akışlarını eşlemedeki sayfalandırma kuralları, kopyalama etkinliğinde aşağıdaki açılardan farklıdır:
- Aralık fonksiyonu, eşleme veri akışlarında desteklenmez.
-
['']eşleme veri akışlarında desteklenmez. Bunun yerine, özel karakterden kaçmak için kullanın{}. Örneğin,body.{@odata.nextLink}özel karakter@odata.nextLinkiçeren.JSON düğümü. - Bitiş koşulu, veri akışlarını eşlemede desteklenir, ancak koşul söz dizimi kopyalama etkinliğindeki söz diziminden farklıdır.
bodyyerine yanıt gövdesini$belirtmek için kullanılır.headeryerine yanıt üst bilgisiniheadersbelirtmek için kullanılır. Bu farkı gösteren iki örnek aşağıda verilmiştir:- Örnek 1:
Kopyalama etkinliği: "EndCondition:$.data": "Empty"
Eşleme veri akışları: "EndCondition:body.data": "Boş" - Örnek 2:
Kopyalama etkinliği: "EndCondition:headers.complete": "Var"
Eşleme veri akışları: "EndCondition:header.complete": "Var"
- Örnek 1:
Sayfalandırma kuralları örnekleri
Bu bölümde sayfalandırma kuralları ayarlarına yönelik örneklerin listesi sağlanır.
Örnek 1: QueryParameters'daki Değişkenler
Bu örnek, değişkenleri QueryParameters içinde olan birden çok istek göndermeye yönelik yapılandırma adımlarını sağlar.
Birden çok istek:
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. Adım: Aşağıdaki ekran görüntülerinde sysparm_offset={offset} veya Göreli URL'ye giriş yapın:
veya
2. Adım: Sayfalandırma kurallarını seçenek 1 veya seçenek 2 olarak ayarlayın:
Option1: "QueryParameters.{ offset}" : "ARALIK:0:10000:1000"
Option2: "AbsoluteUrl.{ offset}" : "ARALIK:0:10000:1000"
Örnek 2:AbsoluteUrl'deki Değişkenler
Bu örnek, değişkenleri AbsoluteUrl'de olan birden çok istek göndermeye yönelik yapılandırma adımlarını sağlar.
Birden çok istek:
BaseUrl/api/now/table/t1
BaseUrl/api/now/table/t2
......
BaseUrl/api/now/table/t100
Adım 1: Veri kümesi bağlantı bölmesinde Göreli URL'ye veya bağlı hizmet yapılandırma sayfasındaki {id}'ye giriş yapın.
veya
Adım 2: Sayfalandırma kurallarını "AbsoluteUrl.{id}" :"RANGE:1:100:1" olarak ayarlayın.
Örnek 3:Üst Bilgilerdeki Değişkenler
Bu örnek, değişkenleri Üst Bilgi'de olan birden çok istek göndermeye yönelik yapılandırma adımlarını sağlar.
Birden çok istek:
RequestUrl: https://example/table
Request 1: Header(id->0)
Request 2: Header(id->10)
......
Request 100: Header(id->100)
1. Adım: Ek üst bilgilerde {id}giriş.
2. Adım: Sayfalandırma kurallarını "Üst Bilgiler" olarak ayarlayın. id}" : "RANGE:0:100:10".
Örnek 4:Değişkenler AbsoluteUrl/QueryParameters/Headers içindedir, bitiş değişkeni önceden tanımlı değildir ve bitiş koşulu yanıtı temel alır
Bu örnek, değişkenleri AbsoluteUrl/QueryParameters/Headers içinde olan ancak bitiş değişkeni tanımlanmayan birden çok istek göndermek için yapılandırma adımları sağlar. Farklı yanıtlar için, örnek 4.1-4.6'da farklı bitiş koşulu kuralı ayarları gösterilir.
Birden çok istek:
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,
......
Bu örnekte iki yanıtla karşılaşıldı:
Yanıt 1:
{
Data: [
{key1: val1, key2: val2
},
{key1: val3, key2: val4
}
]
}
Yanıt 2:
{
Data: [
{key1: val5, key2: val6
},
{key1: val7, key2: val8
}
]
}
1. Adım: Sayfalandırma kuralları aralığını Örnek 1 olarak ayarlayın ve aralığın sonunu "AbsoluteUrl" olarak boş bırakın. offset}": "RANGE:0::1000".
2. Adım: Farklı son yanıtlara göre farklı bitiş koşulu kuralları ayarlayın. Aşağıdaki örneklere bakın:
Örnek 4.1: Yanıttaki belirli düğümün değeri boş olduğunda sayfalandırma sona erer
REST API aşağıdaki yapıdaki son yanıtı döndürür:
{ Data: [] }Yanıttaki belirli düğümün değeri boş olduğunda sayfalandırmayı sonlandırmak için bitiş koşulu kuralını "EndCondition:$.data": "Empty" olarak ayarlayın.
Örnek 4.2: Yanıttaki belirli düğümün değeri mevcut olmadığında sayfalandırma sona erer
REST API aşağıdaki yapıdaki son yanıtı döndürür:
{}Yanıttaki belirli düğümün değeri olmadığında sayfalandırmayı sonlandırmak için bitiş koşulu kuralını "EndCondition:$.data": "NonExist" olarak ayarlayın.
Örnek 4.3: Yanıttaki belirli düğümün değeri mevcut olduğunda sayfalandırma sona erer
REST API aşağıdaki yapıdaki son yanıtı döndürür:
{ Data: [ {key1: val991, key2: val992 }, {key1: val993, key2: val994 } ], Complete: true }Bitiş koşulu kuralını "EndCondition:$ olarak ayarlayın. Tamamlandı": Yanıttaki belirli düğümün değeri mevcut olduğunda sayfalandırmayı sonlandırmak için "Var" ifadesi.
Örnek 4.4: Yanıttaki belirli düğümün değeri kullanıcı tanımlı bir const değeri olduğunda sayfalandırma sona erer
REST API yanıtı aşağıdaki yapıda döndürür:
{ Data: [ {key1: val1, key2: val2 }, {key1: val3, key2: val4 } ], Complete: false }......
Ve son yanıt aşağıdaki yapıdadır:
{ Data: [ {key1: val991, key2: val992 }, {key1: val993, key2: val994 } ], Complete: true }Bitiş koşulu kuralını "EndCondition:$ olarak ayarlayın. Complete": Yanıttaki belirli düğümün değeri kullanıcı tanımlı bir const değeri olduğunda sayfalandırmayı sonlandırmak için "Const:true" .
Örnek 4.5: Yanıttaki üst bilgi anahtarının değeri kullanıcı tanımlı const değerine eşit olduğunda sayfalandırma sona erer
REST API yanıtlarındaki üst bilgi anahtarları aşağıdaki yapıda gösterilir:
Yanıt üst bilgisi 1:
header(Complete->0)
......
Son Yanıt üst bilgisi:header(Complete->1)Bitiş koşulu kuralını "EndCondition:headers" olarak ayarlayın. Complete": Yanıttaki üst bilgi anahtarının değeri kullanıcı tanımlı const değerine eşit olduğunda sayfalandırmayı sonlandırmak için "Const:1" .
Örnek 4.6: Yanıt üst bilgisinde anahtar mevcut olduğunda sayfalandırma sona erer
REST API yanıtlarındaki üst bilgi anahtarları aşağıdaki yapıda gösterilir:
Yanıt üst bilgisi 1:
header()
......
Son Yanıt üst bilgisi:header(CompleteTime->20220920)Bitiş koşulu kuralını "EndCondition:headers" olarak ayarlayın. CompleteTime": Yanıt üst bilgisinde anahtar mevcut olduğunda sayfalandırmayı sonlandırmak için "Var" olur.
Örnek 5:Aralık kuralı tanımlanmadığında sonsuz isteklerden kaçınmak için bitiş koşulunu ayarlama
Bu örnek, aralık kuralı kullanılmadığında birden çok istek göndermeye yönelik yapılandırma adımlarını sağlar. Bitiş koşulu, sonsuz isteklerden kaçınmak için Örnek 4.1-4.6'ya başvurulabilir ve ayarlanabilir. REST API aşağıdaki yapıda yanıt döndürür; bu durumda sonraki sayfanın URL'si sayfalama.next ile temsil edilir.
{
"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="
}
}
...
Son yanıt:
{
"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. Adım: Sayfalandırma kurallarını "AbsoluteUrl" olarak ayarlayın: "$.paging.next".
2. Adım: Son yanıtta her zaman son istek URL'si ile aynıysa next ve boş değilse, sonsuz istekler gönderilir. Bitiş koşulu sonsuz isteklerden kaçınmak için kullanılabilir. Bu nedenle, bitiş koşulu kuralını ayarlamak için Örnek 4.1-4.6'ya bakın.
Örnek 6:Sonsuz istekten kaçınmak için maksimum istek numarasını ayarlayın
Aşağıdaki ekran görüntüsünde gösterildiği gibi sonsuz istekten kaçınmak için MaxRequestNumber değerini ayarlayın:
Örnek 7:RFC 5988 sayfalandırma kuralı varsayılan olarak desteklenir
Arka plan, başlıkta yer alan RFC 5988 tarzındaki bağlantılara dayanarak bir sonraki URL'yi otomatik olarak alır.
İpucu
Bu varsayılan sayfalandırma kuralını etkinleştirmek istemiyorsanız, bunu betikte ayarlayabilir supportRFC5988false veya silebilirsiniz.
Örnek 8a: Sonraki istek URL'si, eşleme veri akışlarında sayfalandırma kullanılırken yanıt gövdesindedir
Bu örnekte, sonraki istek URL'si yanıt gövdesinden olduğunda eşleme veri akışlarında sayfalandırma kuralının ve bitiş koşulu kuralının nasıl ayarlanacağı belirtilir.
Yanıt şeması aşağıda gösterilmiştir:
Sayfalandırma kuralları aşağıdaki ekran görüntüsü olarak ayarlanmalıdır:
Varsayılan olarak, sayfalandırma, gövde içindeki {@odata.nextLink}** null veya boş olduğunda durur.
Ancak son yanıt gövdesindeki @odata.nextLink değeri son istek URL'sine eşitse sonsuz döngüye yol açar. Bu koşulu önlemek için bitiş koşulu kurallarını tanımlayın.
Son yanıttaki Değer Boş ise bitiş koşulu kuralı aşağıdaki gibi ayarlanabilir:
Yanıt üst bilgisindeki tam anahtarın değeri true değerine eşitse sayfalandırmanın sonunu gösteriyorsa, bitiş koşulu kuralı aşağıdaki gibi ayarlanabilir:
Örnek 8b: Kopyalama etkinliğinde sayfalandırma kullanılırken sonraki istek URL'si yanıt gövdesindedir
Bu örnekte, yanıt gövdesinde bir sonraki istek URL'si bulunduğunda kopyalama etkinliğinde sayfalandırma kuralının nasıl ayarlanacağı gösterilmektedir.
Yanıt şeması aşağıda gösterilmiştir:
Sayfalandırma kuralları aşağıdaki ekran görüntüsünde gösterildiği gibi ayarlanmalıdır:
Örnek 9: Veri akışlarını eşlemede sayfalandırma kullanıldığında yanıt biçimi XML ve sonraki istek URL'si yanıt gövdesindendir
Bu örnekte, yanıt biçimi XML ve sonraki istek URL'si yanıt gövdesinden olduğunda eşleme veri akışlarında sayfalandırma kuralının nasıl ayarlanacağı belirtilir. Aşağıdaki ekran görüntüsünde gösterildiği gibi, ilk URL https://<user>.dfs.core.windows.NET/bugfix/test/movie_1.xml
Yanıt şeması aşağıda gösterilmiştir:
Sayfalandırma kuralı söz dizimi Örnek 8 ile aynıdır ve bu örnekte aşağıdaki gibi ayarlanmalıdır:
JSON yanıtlarını olduğu gibi dışarı aktarma
REST API'sinin JSON yanıtı as-is'ı çeşitli dosya tabanlı depolama ortamlarına (hedefler) aktarmak için REST bağlayıcısını kullanabilirsiniz. Bu şemadan bağımsız kopyalama davranışını etkinleştirmek için varsayılan şema eşlemesini kullanın (Kopyalama Etkinliği'nin Eşleme sekmesinde herhangi bir eşleme tanımı yapmayın.)
Şema eşleştirme
REST uç noktasından tablo havuzuna veri kopyalamak için şema eşlemeye bakın.
İlgili içerik
Kopyalama Etkinliği'nin Azure Data Factory'de kaynak ve havuz olarak desteklediği veri depolarının listesi için bkz . Desteklenen veri depoları ve biçimleri.