Azure Data Factory veya Azure Synapse Analytics kullanarak Salesforce V1'den ve'ye veri kopyalama
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 makalede, Salesforce'tan ve Salesforce'a veri kopyalamak için Azure Data Factory ve Azure Synapse işlem hatlarında Kopyalama Etkinliği'nin nasıl kullanılacağı özetlenmiştir. Kopyalama etkinliğine genel bir genel bakış sunan Kopyalama Etkinliğine genel bakış makalesini oluşturur.
Önemli
Salesforce V2 bağlayıcısı geliştirilmiş yerel Salesforce desteği sağlar. Çözümünüzde Salesforce V1 bağlayıcısını kullanıyorsanız, salesforce bağlayıcınızı en erken zamanda yükseltmeniz önerilir. V2 ile V1 arasındaki fark hakkında ayrıntılı bilgi için bu bölüme bakın.
Desteklenen özellikler
Bu Salesforce bağlayıcısı aşağıdaki özellikler için desteklenir:
Desteklenen özellikler | IR |
---|---|
Kopyalama etkinliği (kaynak/havuz) | (1) (2) |
Arama etkinliği | (1) (2) |
(1) Azure tümleştirme çalışma zamanı (2) Şirket içinde barındırılan tümleştirme çalışma zamanı
Kaynak veya havuz olarak desteklenen veri depolarının listesi için Desteklenen veri depoları tablosuna bakın.
Bu Salesforce bağlayıcısı özellikle şunları destekler:
- Salesforce Developer, Professional, Enterprise veya Unlimited sürümleri.
- Salesforce üretim, korumalı alan ve özel etki alanından veri kopyalama.
Not
Bu işlev, Kar Amacı Gütmeyen Başarı Paketi (NPSP) dahil olmak üzere yukarıda belirtilen Salesforce ortamlarından herhangi bir şemanın kopyalanmasını destekler.
Salesforce bağlayıcısı, Salesforce REST/Bulk API'sinin üzerine kurulmuştur. Salesforce'tan veri kopyalarken bağlayıcı, veri boyutuna göre REST ve Toplu API'ler arasında otomatik olarak seçim gerçekleştirir. Sonuç kümesi büyük olduğunda, daha iyi performans için Toplu API kullanılır; Bağlı hizmetteki özellik aracılığıyla apiVersion
verileri okumak/yazmak için kullanılan API sürümünü açıkça ayarlayabilirsiniz. Bağlayıcı, Salesforce'a veri kopyalarken BULK API v1 kullanır.
Not
Bağlayıcı artık Salesforce API'sinin varsayılan sürümünü ayarlıyor. Geriye dönük uyumluluk için, önceden varsayılan bir API sürümü ayarlandıysa çalışmaya devam eder. Varsayılan değer kaynak için 45,0 ve havuz için 40,0'dır.
Önkoşullar
API izni Salesforce'ta etkinleştirilmelidir.
Salesforce istek sınırları
Salesforce'un hem toplam API istekleri hem de eşzamanlı API istekleri için sınırları vardır. Aaşağıdaki noktaları unutmayın:
- Eşzamanlı istek sayısı sınırı aşarsa azaltma gerçekleşir ve rastgele hatalar görürsünüz.
- Toplam istek sayısı sınırı aşarsa Salesforce hesabı 24 saat boyunca engellenir.
Ayrıca her iki senaryoda da "REQUEST_LIMIT_EXCEEDED" hata iletisini alabilirsiniz. Daha fazla bilgi için Salesforce geliştirici sınırları bölümündeki "API istek sınırları" bölümüne bakın.
Kullanmaya başlayın
İşlem hattıyla Kopyalama etkinliği gerçekleştirmek için aşağıdaki araçlardan veya SDK'lardan birini kullanabilirsiniz:
- Veri Kopyalama aracı
- Azure portal
- .NET SDK'sı
- Python SDK'sı
- Azure PowerShell
- The REST API
- Azure Resource Manager şablonu
Kullanıcı arabirimini kullanarak Salesforce'a bağlı hizmet oluşturma
Azure portalı kullanıcı arabiriminde Salesforce'a bağlı bir hizmet oluşturmak için aşağıdaki adımları kullanın.
Azure Data Factory veya Synapse çalışma alanınızda Yönet sekmesine göz atın ve Bağlı Hizmetler'i seçin, ardından Yeni'ye tıklayın:
Salesforce için arama yapın ve Salesforce 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 Salesforce bağlayıcısına özgü varlıkları tanımlamak için kullanılan özelliklerle ilgili ayrıntılar sağlanır.
Bağlı hizmet özellikleri
Salesforce bağlı hizmeti için aşağıdaki özellikler desteklenir.
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | Tür özelliği Salesforce olarak ayarlanmalıdır. | Yes |
environmentUrl | Salesforce örneğinin URL'sini belirtin. - Varsayılan değerdir "https://login.salesforce.com" . - Korumalı alandan veri kopyalamak için belirtin "https://test.salesforce.com" . - Özel etki alanından veri kopyalamak için belirtin, örneğin, "https://[domain].my.salesforce.com" . |
Hayır |
username | Kullanıcı hesabı için bir kullanıcı adı belirtin. | Yes |
password | Kullanıcı hesabı için bir parola 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. |
Yes |
securityToken | Kullanıcı hesabı için bir güvenlik belirteci belirtin. Genel olarak güvenlik belirteçleri hakkında bilgi edinmek için bkz . Güvenlik ve API. Güvenlik belirteci yalnızca Integration Runtime'ın IP'sini Salesforce'ta güvenilen IP adresi listesine eklerseniz atlanabilir. Azure IR kullanırken Azure Integration Runtime IP adreslerine bakın. Güvenlik belirtecini alma ve sıfırlama yönergeleri için bkz . Güvenlik belirteci alma. 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 |
apiVersion | Kullanılacak Salesforce REST/Bulk API sürümünü belirtin; örneğin. 52.0 |
Hayır |
connectVia | Veri deposuna bağlanmak için kullanılacak tümleştirme çalışma zamanı . Belirtilmezse, varsayılan Azure Integration Runtime'ı kullanır. | Hayır |
Örnek: Kimlik bilgilerini depolama
{
"name": "SalesforceLinkedService",
"properties": {
"type": "Salesforce",
"typeProperties": {
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"securityToken": {
"type": "SecureString",
"value": "<security token>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Örnek: Kimlik bilgilerini Key Vault'ta depolama
{
"name": "SalesforceLinkedService",
"properties": {
"type": "Salesforce",
"typeProperties": {
"username": "<username>",
"password": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of password in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
},
"securityToken": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of security token in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Örnek: Kimlik bilgilerini Key Vault'ta, ayrıca environmentUrl ve kullanıcı adı'nda depolama
Bunu yaptığınızda artık ayarları düzenlemek için kullanıcı arabirimini kullanamayacağınızı unutmayın. JSON biçiminde dinamik içerik belirt onay kutusu işaretlenir ve bu yapılandırmayı tamamen el ile düzenlemeniz gerekir. Bunun avantajı, burada herhangi bir parametreyi parametreleştirmek yerine Key Vault'tan TÜM yapılandırma ayarlarını türetmenizdir.
{
"name": "SalesforceLinkedService",
"properties": {
"type": "Salesforce",
"typeProperties": {
"environmentUrl": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of environment URL in AKV>",
"store": {
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
},
},
"username": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of username in AKV>",
"store": {
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
},
},
"password": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of password in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
},
"securityToken": {
"type": "AzureKeyVaultSecret",
"secretName": "<secret name of security token in AKV>",
"store":{
"referenceName": "<Azure Key Vault linked service>",
"type": "LinkedServiceReference"
}
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Veri kümesi özellikleri
Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için Veri kümeleri makalesine bakın. Bu bölümde Salesforce veri kümesi tarafından desteklenen özelliklerin listesi sağlanır.
ve'den Salesforce'a veri kopyalamak için veri kümesinin tür özelliğini SalesforceObject olarak ayarlayın. Aşağıdaki özellikler desteklenir.
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | tür özelliği SalesforceObject olarak ayarlanmalıdır. | Yes |
objectApiName | Veri alınacak Salesforce nesne adı. | Kaynak için Hayır, havuz için Evet |
Önemli
API Adı'nın "__c" bölümü herhangi bir özel nesne için gereklidir.
Örnek:
{
"name": "SalesforceDataset",
"properties": {
"type": "SalesforceObject",
"typeProperties": {
"objectApiName": "MyTable__c"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Salesforce linked service name>",
"type": "LinkedServiceReference"
}
}
}
Not
Geriye dönük uyumluluk için: Salesforce'tan veri kopyaladığınızda, önceki "relationalTable" türündeki veri kümesini kullanırsanız, yeni "SalesforceObject" türüne geçiş yapma önerisini görürken çalışmaya devam eder.
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | Veri kümesinin type özelliği RelationalTable olarak ayarlanmalıdır. | Yes |
tableName | Salesforce'taki tablonun adı. | Hayır (etkinlik kaynağında "sorgu" belirtilirse) |
Kopyalama etkinliğinin özellikleri
Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için İşlem hatları makalesine bakın. Bu bölümde Salesforce kaynağı ve havuzu tarafından desteklenen özelliklerin listesi sağlanır.
Kaynak türü olarak Salesforce
Salesforce'tan veri kopyalamak için kopyalama etkinliğindeki kaynak türünü SalesforceSource olarak ayarlayın. Kopyalama etkinliği kaynağı bölümünde aşağıdaki özellikler desteklenir.
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | Kopyalama etkinliği kaynağının tür özelliği SalesforceSource olarak ayarlanmalıdır. | Yes |
query | Verileri okumak için özel sorguyu kullanın. Salesforce Nesne Sorgu Dili (SOQL) sorgusunu veya SQL-92 sorgusunu kullanabilirsiniz. Sorgu ipuçları bölümünde daha fazla ipucuna bakın. Sorgu belirtilmezse, veri kümesindeki "objectApiName" içinde belirtilen Salesforce nesnesinin tüm verileri alınır. | Hayır (veri kümesinde "objectApiName" belirtildiyse) |
readBehavior | Var olan kayıtların mı yoksa silinenler de dahil olmak üzere tüm kayıtların mı sorgulanıp sorgulanmayacağını gösterir. Belirtilmezse, varsayılan davranış önceki davranıştır. İzin verilen değerler: sorgu (varsayılan), queryAll. |
Hayır |
Önemli
API Adı'nın "__c" bölümü herhangi bir özel nesne için gereklidir.
Örnek:
"activities":[
{
"name": "CopyFromSalesforce",
"type": "Copy",
"inputs": [
{
"referenceName": "<Salesforce input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SalesforceSource",
"query": "SELECT Col_Currency__c, Col_Date__c, Col_Email__c FROM AllDataType__c"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Not
Geriye dönük uyumluluk için: Salesforce'tan veri kopyalarken, önceki "İlişkiselKaynak" türündeki kopyayı kullanırsanız, yeni "SalesforceSource" türüne geçiş yapma önerisini gördüğünüzde kaynak çalışmaya devam eder.
Not
Salesforce kaynağı, şirket içinde barındırılan tümleştirme çalışma zamanında ara sunucu ayarlarını desteklemez, ancak havuz destekler.
Havuz türü olarak Salesforce
Verileri Salesforce'a kopyalamak için kopyalama etkinliğindeki havuz türünü SalesforceSink olarak ayarlayın. Kopyalama etkinliği havuzu bölümünde aşağıdaki özellikler desteklenir.
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | Kopyalama etkinliği havuzu type özelliği SalesforceSink olarak ayarlanmalıdır. | Yes |
writeBehavior | İşlemin yazma davranışı. İzin verilen değerler Insert ve Upsert değerleridir. |
Hayır (varsayılan değer Ekle'dir) |
externalIdFieldName | Upsert işleminin dış kimlik alanının adı. Belirtilen alan Salesforce nesnesinde "Dış Kimlik Alanı" olarak tanımlanmalıdır. Karşılık gelen giriş verilerinde NULL değerleri olamaz. | "Upsert" için Evet |
writeBatchSize | Her toplu işlemde Salesforce'a yazılan verilerin satır sayısı. | Hayır (varsayılan değer 5.000'dir) |
ignoreNullValues | Yazma işlemi sırasında giriş verilerinden NULL değerlerin yoksayılıp yoksayılmayacağını gösterir. İzin verilen değerler true ve false değerleridir. - Doğru: Bir upsert veya update işlemi yaptığınızda hedef nesnedeki verileri değiştirmeden bırakın. Ekleme işlemi yaparken tanımlı bir varsayılan değer ekleyin. - False: Bir upsert veya update işlemi yaptığınızda hedef nesnedeki verileri NULL olarak güncelleştirin. Ekleme işlemi yaparken NULL değer ekleyin. |
Hayır (varsayılan değer false) |
maxConcurrentConnections | Etkinlik çalıştırması sırasında veri deposuna kurulan eş zamanlı bağlantıların üst sınırı. Yalnızca eşzamanlı bağlantıları sınırlamak istediğinizde bir değer belirtin. | Hayır |
Örnek: Kopyalama etkinliğinde Salesforce havuzu
"activities":[
{
"name": "CopyToSalesforce",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Salesforce output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SalesforceSink",
"writeBehavior": "Upsert",
"externalIdFieldName": "CustomerId__c",
"writeBatchSize": 10000,
"ignoreNullValues": true
}
}
}
]
Sorgu ipuçları
Salesforce raporundan veri alma
Olarak {call "<report name>"}
bir sorgu belirterek Salesforce raporlarından veri alabilirsiniz.
"query": "{call \"TestReport\"}"
bunun bir örneğidir.
Salesforce Geri Dönüşüm Kutusu'ndan silinen kayıtları alma
Salesforce Geri Dönüşüm Kutusu'ndan geçici olarak silinen kayıtları sorgulamak için olarak queryAll
belirtebilirsinizreadBehavior
.
SOQL ile SQL sorgu söz dizimi arasındaki fark
Salesforce'tan veri kopyalarken SOQL sorgusu veya SQL sorgusu kullanabilirsiniz. Bu ikisinin farklı söz dizimi ve işlevsellik desteğine sahip olduğunu unutmayın, karıştırmayın. Salesforce tarafından yerel olarak desteklenen SOQL sorgusunu kullanmanız önerilir. Aşağıdaki tabloda ana farklar listelemektedir:
Sözdizimi | SOQL Modu | SQL Modu |
---|---|---|
Sütun seçimi | Sorguda kopyalanacak alanları numaralandırmanız gerekir; örneğin, SELECT field1, filed2 FROM objectname |
SELECT * sütun seçimine ek olarak desteklenir. |
Tırnak | Dosyalanan/nesne adları alıntılanamaz. | Alan/nesne adları tırnak içine alınabiliyor, örneğin. SELECT "id" FROM "Account" |
Tarih saat biçimi | Buradaki ayrıntılara ve sonraki bölümdeki örneklere bakın. | Buradaki ayrıntılara ve sonraki bölümdeki örneklere bakın. |
Boole değerleri | ve True olarak False temsil edilir, örneğin. SELECT … WHERE IsDeleted=True |
0 veya 1 olarak temsil edilir, örneğin. SELECT … WHERE IsDeleted=1 |
Sütun yeniden adlandırma | Desteklenmiyor. | Desteklenir, örneğin: SELECT a AS b FROM … . |
İlişki | Desteklenir, örneğin. Account_vod__r.nvs_Country__c |
Desteklenmiyor. |
DateTime sütununda where yan tümcesi kullanarak verileri alma
SOQL veya SQL sorgusunu belirttiğinizde DateTime biçim farkına dikkat edin. Örneğin:
-
SOQL örneği:
SELECT Id, Name, BillingCity FROM Account WHERE LastModifiedDate >= @{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-ddTHH:mm:ssZ')} AND LastModifiedDate < @{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-ddTHH:mm:ssZ')}
-
SQL örneği:
SELECT * FROM Account WHERE LastModifiedDate >= {ts'@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}'} AND LastModifiedDate < {ts'@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'}
MALFORMED_QUERY Hatası: Kesilmiş
"MALFORMED_QUERY: Kesilmiş" hatasıyla karşılaşırsanız, bunun nedeni normalde verilerde JunctionIdList türü sütununa sahip olmanız ve Salesforce'un bu tür verileri çok sayıda satırla destekleme sınırlaması olmasıdır. Azaltmak için JunctionIdList sütununu hariç tutmaya veya kopyalanacak satır sayısını sınırlamaya çalışın (birden çok kopyalama etkinliği çalıştırmasına bölümleyebilirsiniz).
Salesforce için veri türü eşlemesi
Salesforce'tan veri kopyaladığınızda, aşağıdaki eşlemeler Salesforce veri türlerinden hizmet içindeki ara veri türlerine dahili olarak kullanılır. Kopyalama etkinliğinin kaynak şemayı ve veri türünü havuza nasıl eşlediğini öğrenmek için bkz . Şema ve veri türü eşlemeleri.
Salesforce veri türü | Hizmet ara veri türü |
---|---|
Otomatik Numara | String |
Onay kutusu | Boolean |
Para birimi | Ondalık |
Tarih | DateTime |
Tarih/Zaman | DateTime |
E-posta adresi | String |
Kimlik | String |
Arama İlişkisi | String |
Çoklu Seçim Seçme Listesi | String |
Sayı | Ondalık |
Yüzde | Ondalık |
Phone | String |
Picklist | String |
Metin | String |
Metin Alanı | String |
Metin Alanı (Uzun) | String |
Metin Alanı (Zengin) | String |
Metin (Şifrelenmiş) | String |
URL | String |
Not
Salesforce Sayı türü, hizmet ara veri türü olarak Azure Data Factory ve Azure Synapse işlem hatlarındaki Ondalık türüne eşleniyor. Ondalık türü tanımlı duyarlığı ve ölçeği dikkate alır. Ondalık basamakları tanımlı ölçeği aşan veriler için değeri önizleme verilerinde yuvarlanır ve kopyalanır. Azure Data Factory ve Azure Synapse işlem hatlarında böyle bir duyarlık kaybı yaşamamak için Salesforce'un Özel Alan Tanımı Düzenleme sayfasında ondalık basamakları makul bir büyük değere yükseltmeyi göz önünde bulundurun.
Arama etkinliği özellikleri
Özellikler hakkında ayrıntılı bilgi edinmek için Arama etkinliği'ne bakın.
Sonraki adımlar
Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz . Desteklenen veri depoları.