Azure Data Factory kullanarak Azure SYNAPSE Analytics 'te veri kopyalama ve dönüştürme

Uygulama hedefi: Azure SYNAPSE Analytics 'i Azure Data Factory

Bu makalede, Azure SYNAPSE Analytics 'ten verileri kopyalamak için Azure Data Factory kopyalama etkinliğinin nasıl kullanılacağı özetlenmektedir ve Azure Data Lake Storage 2. verileri dönüştürmek için veri akışı kullanılır. Azure Data Factory hakkında bilgi edinmek için tanıtım makalesiniokuyun.

Desteklenen özellikler

Bu Azure SYNAPSE Analytics Bağlayıcısı aşağıdaki etkinlikler için desteklenir:

Kopyalama etkinliği için bu Azure SYNAPSE Analytics Bağlayıcısı şu işlevleri destekler:

  • Azure kaynakları için hizmet sorumlusu veya yönetilen kimlikler ile SQL kimlik doğrulaması ve Azure Active Directory (Azure AD) uygulama belirteci kimlik doğrulamasını kullanarak verileri kopyalayın.
  • Kaynak olarak, bir SQL sorgusu veya saklı yordam kullanarak verileri alın. Ayrıca, Azure SYNAPSE Analytics kaynağından paralel kopyalama seçeneğini de belirleyebilirsiniz. Ayrıntılar için Azure SYNAPSE Analytics 'Ten paralel kopyalama bölümüne bakın.
  • Havuz olarak, PolyBase veya Copy ifadesini veya toplu ekleme 'yi kullanarak veri yükleyin. Daha iyi kopyalama performansı için PolyBase veya COPY deyimimizi öneririz. Bağlayıcı, kaynak şemasına bağlı değilse otomatik olarak hedef tablo oluşturmayı da destekler.

Önemli

Azure Data Factory Integration Runtime kullanarak verileri kopyalarsanız, Azure hizmetlerinin MANTıKSAL SQL Server'a erişebilmesi için sunucu düzeyinde bir güvenlik duvarı kuralı yapılandırın. Şirket içinde barındırılan tümleştirme çalışma zamanı kullanarak verileri kopyalarsanız, güvenlik duvarını uygun IP aralığına izin verecek şekilde yapılandırın. Bu Aralık, Azure SYNAPSE Analytics 'e bağlanmak için kullanılan makinenin IP 'sini içerir.

başlarken

İpucu

En iyi performansı elde etmek için PolyBase veya COPY deyimlerini kullanarak Azure SYNAPSE Analytics 'e veri yükleyin. Azure SYNAPSE Analytics 'e veri yüklemek ve Copy deyimlerini kullanarak Azure SYNAPSE Analytics bölümlerine veri yüklemek için PolyBase kullanma ayrıntıları vardır. Kullanım örneği ile ilgili bir anlatım için, Azure Data Factory ile 15 dakika altında Azure SYNAPSE Analytics 'e 1 TB yüklemebölümüne bakın.

İşlem hattıyla Kopyalama etkinliği gerçekleştirmek için aşağıdaki araçlardan veya SDK'lardan birini kullanabilirsiniz:

Aşağıdaki bölümlerde, bir Azure SYNAPSE Analytics bağlayıcısına özgü Data Factory varlıkları tanımlayan özellikler hakkında ayrıntılı bilgi sağlanmaktadır.

Bağlı hizmet özellikleri

Aşağıdaki özellikler bir Azure SYNAPSE Analytics bağlı hizmeti için desteklenir:

Özellik Açıklama Gerekli
tür Type özelliği Azuresqldw olarak ayarlanmalıdır. Yes
Dizisi ConnectionString özelliği Için Azure SYNAPSE Analytics örneğine bağlanmak için gereken bilgileri belirtin.
Bu alanı, Data Factory güvenli bir şekilde depolamak için SecureString olarak işaretleyin. Ayrıca, parola/hizmet sorumlusu anahtarını Azure Key Vault de koyabilirsiniz ve SQL kimlik doğrulaması ise password yapılandırmayı bağlantı dizesinin dışına çekebilirsiniz. Daha ayrıntılı bilgi için tablonun altındaki JSON örneğine bakın ve kimlik bilgilerini Azure Key Vault makalesine saklayın .
Yes
Serviceprincipalıd Uygulamanın istemci KIMLIĞINI belirtin. Evet, Azure AD kimlik doğrulamasını bir hizmet sorumlusu ile kullandığınızda.
Servicesprincipalkey Uygulamanın anahtarını belirtin. Bu alanı güvenli bir şekilde güvenli bir şekilde depolaması için SecureString olarak Data Factory veya içinde depolanan bir gizli diziye Azure Key Vault. Evet, hizmet sorumlusuyla Azure AD kimlik doğrulamasını kullanırsanız.
Kiracı Uygulamanın altında bulunduğu kiracı bilgilerini (etki alanı adı veya kiracı kimliği) belirtin. Farenizi farenin sağ üst köşesine Azure portal. Evet, hizmet sorumlusuyla Azure AD kimlik doğrulamasını kullanırsanız.
azureCloudType Hizmet sorumlusu kimlik doğrulaması için, Azure AD uygulamanıza kaydedilen Azure bulut ortamının türünü belirtin.
İzin verilen değerler AzurePublic , AzureChina , ve AzureUsGovernment AzureGermany değerleridir. Varsayılan olarak, veri fabrikasının bulut ortamı kullanılır.
No
connectVia Veri deposuna bağlanmak için kullanılacak tümleştirme çalışma zamanı. Veri Azure Integration Runtime veya kendi içinde barındırılan tümleştirme çalışma zamanı (veri deponız özel bir ağ içinde bulunuyorsa) kullanabilirsiniz. Belirtilmezse, varsayılan Azure Integration Runtime. No

Farklı kimlik doğrulama türleri için, sırasıyla önkoşullar ve JSON örnekleriyle ilgili aşağıdaki bölümlere bakın:

İpucu

Kullanıcı arabiriminden sunucusuz SQL Azure Synapse için bağlı hizmet oluştururken abonelikten gözatma yerine "el ile gir" seçin.

İpucu

Hata kodu "UserErrorFailedToConnectToSqlServer" olarak ve "Veritabanı için oturum sınırı XXX'tir ve ulaşıldı" gibi bir iletiyle karşılaştıysanız bağlantı dizenize ekleyin ve yeniden Pooling=false deneyin.

SQL kimlik doğrulaması

SQL kimlik doğrulaması kullanan bağlı hizmet örneği

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Azure Key Vault parola:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Hizmet sorumlusu kimlik doğrulaması

Hizmet sorumlusu tabanlı Azure AD uygulama belirteci kimlik doğrulamasını kullanmak için şu adımları izleyin:

  1. Azure portal bir Azure Active Directory uygulaması oluşturun . Uygulama adını ve bağlı hizmeti tanımlayan aşağıdaki değerleri unutmayın:

    • Uygulama Kimliği
    • Uygulama anahtarı
    • Kiracı Kimliği
  2. Daha önce yapmadıysanız Azure portal sunucunuz için bir Azure Active Directory Yöneticisi sağlayın . Azure AD yöneticisi bir Azure AD kullanıcısı veya Azure AD grubu olabilir. Gruba yönetilen kimliğe sahip bir yönetici rolü verirseniz, 3 ve 4. adımları atlayın. Yöneticinin veritabanına tam erişimi olur.

  3. Hizmet sorumlusu için Kapsanan Veritabanı kullanıcıları oluşturun . SSMS gibi araçları kullanarak verileri kopyalamak istediğiniz veri ambarına ya da en az BIR kullanıcı izni olan bir Azure AD kimliğiyle bağlanın. Aşağıdaki T-SQL ' i çalıştırın:

    CREATE USER [your application name] FROM EXTERNAL PROVIDER;
    
  4. SQL kullanıcıları veya diğerleri için normalde yaptığınız sürece Hizmet sorumlusuna gerekli Izinleri verin . Aşağıdaki kodu çalıştırın veya daha fazla seçeneğe bakın. Verileri yüklemek için PolyBase kullanmak istiyorsanız gerekli veritabanı izniniöğrenin.

    EXEC sp_addrolemember db_owner, [your application name];
    
  5. Azure Data Factory 'de Azure SYNAPSE Analytics bağlı hizmetini yapılandırın .

Hizmet sorumlusu kimlik doğrulaması kullanan bağlı hizmet örneği

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Azure kaynakları kimlik doğrulaması için Yönetilen kimlikler

Bir veri fabrikası, belirli bir fabrikası temsil eden Azure kaynakları için yönetilen bir kimlikle ilişkilendirilebilir. Bu yönetilen kimliği, Azure SYNAPSE Analytics kimlik doğrulaması için kullanabilirsiniz. Belirlenen fabrika, bu kimliği kullanarak veri ambarınıza veya veri ambarından veri kopyalayıp erişebilirsiniz.

Yönetilen kimlik doğrulaması kullanmak için şu adımları izleyin:

  1. Henüz Azure Active Directory sunucunuz için bir Azure portal yöneticisi sağlama. Azure AD yöneticisi bir Azure AD kullanıcısı veya Azure AD grubu olabilir. Yönetilen kimliğe sahip gruba yönetici rolü verdiyseniz 3. ve 4. adımları atlayabilirsiniz. Yönetici veritabanına tam erişime sahip olur.

  2. Yönetilen Kimlik için tek bir veritabanı Data Factory oluşturun. SSMS gibi araçları kullanarak veya veri kopyalamak istediğiniz veri ambarına, en az HERHANGI BIR KULLANI KULLANI KULLANKISI iznine sahip bir Azure AD kimliğiyle bağlanın. Aşağıdaki T-SQL'i çalıştırın.

    CREATE USER [your Data Factory name] FROM EXTERNAL PROVIDER;
    
  3. Sql Data Factory ve diğerleri için normalde olduğu gibi yönetilen yönetilen kimlik gerekli izinleri verin. Aşağıdaki kodu çalıştırın veya buradaki diğer seçeneklere bakın. Verileri yüklemek için PolyBase kullanmak için gerekli veritabanı iznini öğrenin.

    EXEC sp_addrolemember db_owner, [your Data Factory name];
    
  4. Bir Azure Synapse Analytics bağlı hizmeti Azure Data Factory.

Örnek:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Veri kümesi özellikleri

Veri kümelerini tanımlamaya uygun bölümlerin ve özelliklerin tam listesi için Veri kümeleri makalesine bakın.

Aşağıdaki özellikler veri kümesi Azure Synapse Analytics de destekle...

Özellik Açıklama Gerekli
tür Veri kümesi tür özelliğinin AzureSqlDWTable olarak ayarlanmış olması gerekir. Yes
schema Şemanın adı. Kaynak için Hayır, havuz için Evet
tablo Tablonun/görünümün adı. Kaynak için Hayır, havuz için Evet
tableName Şema ile tablonun/görünümün adı. Bu özellik geriye dönük uyumluluk için desteklenir. Yeni iş yükü için schema ve kullanın table . Kaynak için Hayır, havuz için Evet

DataSet özellikleri örneği

{
    "name": "AzureSQLDWDataset",
    "properties":
    {
        "type": "AzureSqlDWTable",
        "linkedServiceName": {
            "referenceName": "<Azure Synapse Analytics linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Kopyalama etkinliği özellikleri

Etkinlikleri tanımlamaya yönelik bölümlerin ve özelliklerin tam listesi için bkz. işlem hatları makalesi. Bu bölüm, Azure SYNAPSE Analytics kaynağı ve havuzu tarafından desteklenen özelliklerin bir listesini sağlar.

Kaynak olarak Azure SYNAPSE Analytics

İpucu

Veri bölümlemesini kullanarak Azure SYNAPSE Analytics 'ten verileri verimli bir şekilde yüklemek için Azure SYNAPSE Analytics 'Ten paralel kopyadandaha fazla bilgi edinin.

Azure SYNAPSE Analytics 'ten veri kopyalamak için kopyalama etkinliği kaynağındaki Type özelliğini sqldwsource olarak ayarlayın. Aşağıdaki özellikler, etkinlik kaynağını kopyalama bölümünde desteklenir:

Özellik Açıklama Gerekli
tür Kopyalama etkinliği kaynağının Type özelliği sqldwsource olarak ayarlanmalıdır. Yes
sqlReaderQuery Verileri okumak için özel SQL sorgusunu kullanın. Örnek: select * from MyTable. No
sqlReaderStoredProcedureName Kaynak tablodaki verileri okuyan saklı yordamın adı. Son SQL ifadesinin saklı yordamda bir SELECT ifadesinin olması gerekir. No
storedProcedureParameters Saklı yordamın parametreleri.
İzin verilen değerler ad veya değer çiftleridir. Parametrelerin adları ve büyük/son değerleri saklı yordam parametrelerinin adları ve büyük/son değerleriyle eşleşmeli.
No
ısolationlevel SQL kaynağı için işlem kilitleme davranışını belirtir. İzin verilen değerler: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Belirtilmezse, veritabanının varsayılan yalıtım düzeyi kullanılır. Daha fazla bilgi için bkz. system.data.isolationlevel. No
partitionOptions Veri kümelerinden veri yüklemek için kullanılan veri bölümleme Azure Synapse Analytics.
İzin verilen değerler: Yok (varsayılan), PhysicalPartitionsOfTable ve DynamicRange.
Bir bölüm seçeneği etkinleştirildiğinde (yani değil), bir veri kaynağından eşzamanlı olarak veri yüklemek için paralellik Azure Synapse Analytics kopyalama etkinliğindeki ayar None parallelCopies tarafından denetlenr.
No
partitionSettings Veri bölümleme ayarlarının grubunu belirtin.
Bölüm seçeneği değilse None uygula.
No
partitionSettingsaltında:
partitionColumnName Paralel kopyalama için aralık bölümleme tarafından kullanılacak tamsayı veya tarih/tarih saat türünde ( , , , , , , veya ) kaynak int smallint bigint date smalldatetime datetime datetime2 datetimeoffset sütunun adını belirtin. Belirtilmezse, tablonun dizini veya birincil anahtarı otomatik olarak algılanır ve bölüm sütunu olarak kullanılır.
Bölüm seçeneği olduğunda DynamicRange uygula. Kaynak verileri almak için bir sorgu kullanırsanız WHERE yan ?AdfDynamicRangePartitionCondition tümcesine kancayı kullanın. Örnek için, SQL veritabanı 'Ndan paralel kopyalama bölümüne bakın.
No
Partitionüstsınırı Bölüm aralığı bölme için bölüm sütununun en büyük değeri. Bu değer, tablodaki satırları filtrelemeye yönelik değil, bölümün ilerlemesine karar vermek için kullanılır. Tablodaki veya sorgu sonucundaki tüm satırlar bölümlenecek ve kopyalanabilir. Belirtilmemişse, kopyalama etkinliği değeri otomatik olarak algılar.
Bölüm seçeneği olduğunda uygulayın DynamicRange . Örnek için, SQL veritabanı 'Ndan paralel kopyalama bölümüne bakın.
No
Partitionalme sınırı Bölüm aralığı bölme için bölüm sütununun en küçük değeri. Bu değer, tablodaki satırları filtrelemeye yönelik değil, bölümün ilerlemesine karar vermek için kullanılır. Tablodaki veya sorgu sonucundaki tüm satırlar bölümlenecek ve kopyalanabilir. Belirtilmemişse, kopyalama etkinliği değeri otomatik olarak algılar.
Bölüm seçeneği olduğunda uygulayın DynamicRange . Örnek için, SQL veritabanı 'Ndan paralel kopyalama bölümüne bakın.
No

Aşağıdaki noktaya göz önünde edin:

  • Verileri almak için kaynakta saklı yordam kullanırken, saklı yordamınız farklı bir parametre değeri geçirildiğinde farklı bir şema döndürüyor olarak tasarlanmışsa, hata ile karşılaşabilirsiniz veya kullanıcı arabiriminden şemayı içeri aktarırken ya da otomatik tablo oluşturma ile verileri SQL veritabanına kopyalarken beklenmedik sonucu görebilirsiniz.

Örnek: SQL sorgusu kullanma

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Örnek: saklı yordamı kullanma

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Örnek saklı yordam:

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

Azure Synapse Analytics havuz olarak

Azure Data Factory, verileri Azure Synapse Analytics'a yüklemenin üç Azure Synapse Analytics.

Azure Synapse Analytics kopyalama seçenekleri

Verileri yüklemenin en hızlı ve en ölçeklenebilir yolu PolyBase veya COPY deyimidir.

Verileri bir Azure Synapse Analytics için Kopyalama Etkinliği'nde havuz türünü SqlDWSink olarak ayarlayın. Kopyalama Etkinliği havuzu bölümünde aşağıdaki özellikler de kullanılabilir:

Özellik Açıklama Gerekli
tür Kopyalama Etkinliği havuzu tür özelliği SqlDWSink olarak ayar must bekli. Yes
allowPolyBase PolyBase kullanarak veri yüklemenin gerekip gerek Azure Synapse Analytics. allowCopyCommand ve allowPolyBase her ikisi de doğru olamaz.

Kısıtlamalar ve ayrıntılar için bkz. PolyBase kullanarak Azure Synapse Analytics yükleme bölümü.

İzin verilen değerler True ve False 'tır (varsayılan).
Hayır.
PolyBase kullanırken uygula.
polyBaseSettings Özellik true olarak ayar olduğunda allowPolybase belirtilebilir bir özellik grubu. Hayır.
PolyBase kullanırken uygula.
allowCopyCommand Verileri veri kaynağına yüklemek için COPY deyiminin kullan Azure Synapse Analytics. allowCopyCommand ve allowPolyBase her ikisi de doğru olamaz.

Kısıtlamalar ve ayrıntılar için bkz. Azure Synapse Analytics yüklemek için COPY deyimini kullanma.

İzin verilen değerler True ve False 'tır (varsayılan).
Hayır.
COPY kullanırken uygula.
copyCommandSettings Özellik TRUE olarak ayarlanırken allowCopyCommand belirtilebilir bir özellik grubu. Hayır.
COPY kullanırken uygula.
writeBatchSize Toplu iş başına SQL tablosuna ekli satır sayısı.

İzin verilen değer tamsayıdır (satır sayısı). Varsayılan olarak, Data Factory boyutuna göre uygun toplu iş boyutunu dinamik olarak belirler.
Hayır.
Toplu ekleme kullanırken uygulama.
writeBatchTimeout Toplu ekleme işleminin zaman dışında bitmeden önce bitmeden önce bekleme süresi.

İzin verilen değer zaman değeridir. Örnek: "00:30:00" (30 dakika).
Hayır.
Toplu ekleme kullanırken uygulama.
preCopyScript Her çalıştırmada veri yazmadan önce Kopyalama Etkinliği için bir SQL Azure Synapse Analytics belirtin. Önceden yüklenmiş verileri temizlemek için bu özelliği kullanın. No
tableOption Kaynak şemasına göre yoksa Havuz tablosunun otomatik olarak oluşturulup oluşturulmayacağını belirtir. İzin verilen değerler: none (varsayılan), autoCreate . No
disableMetricsCollection Data Factory, performansı en iyi duruma getirme ve öneriler için Azure SYNAPSE Analytics DWUs gibi ölçümleri toplar ve bu da ek ana DB erişimi sağlar. Bu davranışla ilgileniyorlarsa, true devre dışı bırakmak için belirtin. Hayır (varsayılan değer false )
maxConcurrentConnections Etkinlik çalışması 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ırlandırmak istediğinizde bir değer belirtin. No

Azure SYNAPSE Analytics havuz örneği

"sink": {
    "type": "SqlDWSink",
    "allowPolyBase": true,
    "polyBaseSettings":
    {
        "rejectType": "percentage",
        "rejectValue": 10.0,
        "rejectSampleValue": 100,
        "useTypeDefault": true
    }
}

Azure SYNAPSE Analytics 'ten paralel kopya

Copy etkinliğinde Azure SYNAPSE Analytics Connector, verileri paralel olarak kopyalamak için yerleşik veri bölümlendirme sağlar. Kopyalama etkinliğinin kaynak sekmesinde veri bölümleme seçeneklerini bulabilirsiniz.

Bölüm seçeneklerinin ekran görüntüsü

Bölümlenmiş kopyayı etkinleştirdiğinizde kopyalama etkinliği, verileri bölümlere göre yüklemek için Azure SYNAPSE Analytics kaynağınıza karşı paralel sorgular çalıştırır. Paralel derece parallelCopies kopyalama etkinliğindeki ayar tarafından denetlenir. Örneğin, parallelCopies dört olarak ayarlarsanız, Data Factory aynı anda, belirtilen bölüm seçeneğiniz ve ayarlarınıza göre dört sorgu üretir ve çalışır ve her sorgu Azure SYNAPSE analizinizden verilerin bir kısmını alır.

Azure SYNAPSE Analizinizden büyük miktarda veri yüklerken özellikle veri bölümleme ile paralel kopyayı etkinleştirmeniz önerilir. Aşağıda farklı senaryolar için önerilen yapılandırmalar verilmektedir. Verileri dosya tabanlı veri deposuna kopyalayıp bir klasöre birden çok dosya olarak yazmanız önerilir (yalnızca klasör adını belirtin), bu durumda performans tek bir dosyaya yazmaktan daha iyidir.

Senaryo Önerilen ayarlar
Fiziksel bölümleri olan büyük tablodan tam yük. Bölüm seçeneği: Tablonun fiziksel bölümleri.

Yürütme sırasında Data Factory fiziksel bölümleri otomatik olarak algılar ve verileri bölümlere göre kopyalar.

Tablonuz fiziksel bölüme sahip olup olmadığını kontrol etmek için bu sorguya başvurabilirsiniz.
Veri bölümleme için bir tamsayı veya tarih saat sütunuyla, fiziksel bölümler olmadan büyük tablodan tam yük. Bölüm seçenekleri: Dinamik aralık bölümü.
Bölüm sütunu (isteğe bağlı): Verileri bölümleme için kullanılan sütunu belirtin. Belirtilmezse, dizin veya birincil anahtar sütunu kullanılır.
Bölüm üst sınırı ve bölüm alt sınırı (isteğe bağlı): Bölüm adımlarını belirlemek olup olmadığını belirtin. Bu, tablodaki satırları filtrelemek için değildir, tablodaki tüm satırlar bölümlenmiş ve kopyalanır. Belirtilmezse kopyalama etkinliği değerleri otomatik olarak algılar.

Örneğin, "ID" bölüm sütun 1 ile 100 arasında değerlere sahipse ve alt sınırı 20 ve üst sınırı 4 olarak 80 olarak ayarlayıp Data Factory 4 bölüme göre veri aldı - sırasıyla <=20, [21, 50], [51, 80] ve >=81 aralığındaki kimlikler.
Fiziksel bölümler olmadan özel bir sorgu kullanarak büyük miktarda veri, veri bölümleme için ise tamsayı veya tarih/tarih saat sütunuyla yükleme. Bölüm seçenekleri: Dinamik aralık bölümü.
Sorgu: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause> .
Bölüm sütunu: Verileri bölümlemek için kullanılan sütunu belirtin.
Bölüm üst sınırı ve bölüm alt sınırı (isteğe bağlı): Bölüm adımlarını belirlemek olup olmadığını belirtin. Bu, tablodaki satırları filtrelemek için değildir, sorgu sonucundaki tüm satırlar bölümlenmiş ve kopyalanır. Belirtilmemişse, kopyalama etkinliği değeri otomatik olarak algılar.

Yürütme sırasında, Data Factory ?AdfRangePartitionColumnName her bölüm için gerçek sütun adı ve değer aralıklarıyla değiştirilir ve Azure SYNAPSE Analytics 'e gönderir.
Örneğin, "ID" adlı bölüm sütununuzu 1 ile 100 arasında değerler varsa ve alt sınırı 20 ve üst sınır olarak 80 olarak ayarlarsanız, paralel kopyalama Data Factory 4 ' e kadar, verileri 4 bölüm kimliği aralığında <= 20, [21, 50], [51, 80] ve >= 81 sırasıyla alır.

Farklı senaryolar için daha fazla örnek sorgu aşağıda verilmiştir:
1. tüm tabloyu sorgulayın:
SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition
2. sütun seçimi ve ek WHERE yan tümcesi filtreleri içeren bir tablodan sorgu:
SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. sorgular ile sorgu:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. alt sorguda bölüm ile sorgulama:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T

Bölüm seçeneğiyle verileri yüklemek için en iyi uygulamalar:

  1. Veri eğriliğini önlemek için bölüm sütunu olarak (birincil anahtar veya benzersiz anahtar gibi) farklı bir sütun seçin.
  2. Tabloda yerleşik bölüm varsa, daha iyi performans sağlamak için "tablonun fiziksel bölümleri" Bölüm seçeneğini kullanın.
  3. Verileri kopyalamak için Azure Integration Runtime kullanırsanız daha fazla bilgi işlem kaynağı kullanmak için daha büyük "veri tümleştirme birimleri (DIU)" (>4) ayarlayabilirsiniz. İlgili senaryolara göz atın.
  4. "Kopya paralelliği derecesi", Bölüm numaralarını denetler, bu sayının performansı karşılamamasından çok büyük bir şekilde ayarlanması, bu sayıyı (ya da şirket IÇINDE barındırılan IR düğümlerinin sayısı) * (2-4) olarak ayarlamayı öneririz.
  5. Azure SYNAPSE Analytics bir anda en fazla 32 sorgu yürütebilir, "kopya paralellik derecesi" ayarı çok büyük olduğunda SYNAPSE azaltma sorununa neden olabilir.

Örnek: fiziksel bölümlerle büyük tablodan tam yük

"source": {
    "type": "SqlDWSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Örnek: Dinamik Aralık bölümü ile sorgulama

"source": {
    "type": "SqlDWSource",
    "query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

Fiziksel bölümü denetlemek için örnek sorgu

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Tabloda fiziksel bölüm varsa, "HasPartition" öğesini "Yes" olarak görürsünüz.

Azure SYNAPSE Analytics 'e veri yüklemek için PolyBase kullanma

PolyBase'in kullanımı, yüksek aktarım hızıyla büyük miktarda verinin Azure Synapse Analytics verimli bir yol sağlar. Varsayılan BULKINSERT mekanizması yerine PolyBase kullanarak aktarım hızında büyük bir kazanç elde edersiniz. Kullanım örneğine sahip bir izlenecek yol için bkz. 1 TB'i Azure Synapse Analytics.

  • Kaynak verileriniz Azure Blob, Azure Data Lake Storage 1. Nesil veya Azure Data Lake Storage 2. Nesil ise ve biçimi PolyBase ile uyumlu ise, verileri kaynaktan çekmenize izin Azure Synapse Analytics PolyBase'i doğrudan çağırmak için kopyalama etkinliğini kullanabilirsiniz. Ayrıntılar için bkz. PolyBase kullanarak doğrudan kopyalama.
  • Kaynak veri depo ve biçiminiz başlangıçta PolyBase tarafından desteklenmiyorsa, bunun yerine PolyBase kullanarak aşamalı kopyalama özelliğini kullanın. Aşamalı kopyalama özelliği size daha iyi aktarım hızı da sağlar. Verileri otomatik olarak PolyBase ile uyumlu bir biçime dönüştürür, verileri Azure Blob depolama alanında depolar ve ardından verileri polybase'e yük Azure Synapse Analytics.

İpucu

PolyBase'i kullanmaya yönelik en iyi yöntemler hakkında daha fazla bilgi edinin. PolyBase'i Azure Integration Runtime doğrudan veya aşamalı synapse depolama için etkili Veri Tümleştirme Birimleri (DIU) her zaman 2'dir. Depolamadan veri yükleme Synapse altyapısı tarafından destekleniyor olduğu için DIU'nun ayarı performansı etkilemez.

Kopyalama etkinliği altında aşağıdaki PolyBase polyBaseSettings ayarları de desteklemektedir:

Özellik Açıklama Gerekli
rejectValue Sorgu başarısız olmadan önce reddedilecek satırların sayısını veya yüzdesini belirtir.

PolyBase'in reddetme seçenekleri hakkında daha fazla bilgi için CREATE EXTERNAL TABLE (Transact-SQL) 'nin BağımsızDeğişkenler bölümünde bulabilirsiniz.

İzin verilen değerler 0 (varsayılan), 1, 2 vb. değerleridir.
No
rejectType rejectValue seçeneğinin değişmez değer mi yoksa yüzde mi olduğunu belirtir.

İzin verilen değerler Değer (varsayılan) ve Yüzde değerleridir.
No
rejectSampleValue PolyBase reddedilen satırların yüzdesini yeniden hesaplamadan önce alınmayacak satır sayısını belirler.

İzin verilen değerler 1, 2 vb. değerleridir.
Evet, rejectType yüzde ise.
useTypeDefault PolyBase metin dosyasından veri alsa sınırlandırılmış metin dosyalarında eksik değerlerin nasıl işleyil olduğunu belirtir.

CREATE EXTERNAL FILE FORMAT (Transact-SQL)bölümündeki Bağımsız Değişkenler bölümünden bu özellik hakkında daha fazla bilgi edinebilirsiniz.

İzin verilen değerler True ve False 'tır (varsayılan).

No

PolyBase kullanarak doğrudan kopyalama

Azure Synapse Analytics PolyBase doğrudan Azure Blob, Azure Data Lake Storage 1. Nesil ve Azure Data Lake Storage 2. Nesil. Kaynak verileriniz bu bölümde açıklanan ölçütleri karşılarsa PolyBase'i kullanarak doğrudan kaynak veri depolamadan veri depolama Azure Synapse Analytics. Aksi takdirde, PolyBase kullanarak Aşamalı kopyalamayı kullanın.

İpucu

Verileri verimli bir şekilde Azure Synapse Analytics için Azure Data Factory daha fazla bilgi edinin. Bu sayede verilerle verilerden içgörü elde Data Lake Store daha kolay Azure Synapse Analytics.

Gereksinimler karşılamıyorsa ayarları Azure Data Factory otomatik olarak veri taşıma için BULKINSERT mekanizmasına geri döner.

  1. Kaynak bağlı hizmet aşağıdaki türlerde ve kimlik doğrulama yöntemlerindedir:

    Desteklenen kaynak veri deposu türü Desteklenen kaynak kimlik doğrulaması türü
    Azure Blob Hesap anahtarı kimlik doğrulaması, yönetilen kimlik doğrulaması
    Azure Data Lake Storage Gen1 Hizmet sorumlusu kimlik doğrulaması
    Azure Data Lake Storage 2. Nesil Hesap anahtarı kimlik doğrulaması, yönetilen kimlik doğrulaması

    Önemli

    • Depolama bağlı hizmetiniz için yönetilen kimlik doğrulaması kullanıyorsanız, Azure Blob için gereken yapılandırmaları ve Azure Data Lake Storage 2. Nesil öğrenin.
    • Azure Depolama hizmetiniz sanal ağ hizmet uç noktasıyla yapılandırılmışsa, depolama hesabında "güvenilen Microsoft hizmetine izin ver" etkinleştirilmiş yönetilen kimlik doğrulaması kullansanız, Bkz. Azure depolama ile Sanal Ağ Hizmet Uç Noktalarını kullanmanın etkisi.
  2. Kaynak veri biçimi , aşağıdaki yapılandırmalara sahip Parquet, orc veya sınırlandırılmış bir metindir:

    1. Klasör yolu joker karakter filtresi içermiyor.
    2. Dosya adı boş veya tek bir dosyaya işaret ediyor. Kopyalama etkinliğinde joker karakter dosya adı belirtirseniz, yalnızca * veya olabilir *.* .
    3. rowDelimitervarsayılan, \n, \r\n veya \r'dir.
    4. nullValue Varsayılan olarak bırakılır veya boş dize ("") olarak ayarlanır ve treatEmptyAsNull Varsayılan olarak bırakılır ya da true olarak ayarlanır.
    5. encodingName Varsayılan olarak bırakılır veya UTF-8 olarak ayarlanır.
    6. quoteChar, escapeChar ve skipLineCount belirtilmedi. PolyBase desteği, ADF 'de olduğu gibi yapılandırılabilen üst bilgi satırını atlar firstRowAsHeader .
    7. compressionsıkıştırma, GZip veya söndür olamaz.
  3. Kaynağınız bir klasörse, recursive Copy etkinliğinin true olarak ayarlanması gerekir.

  4. wildcardFolderPath ,,, wildcardFilename modifiedDateTimeStart ,, modifiedDateTimeEnd prefix enablePartitionDiscovery ve additionalColumns belirtilmedi.

Not

Kaynağınız bir klasörssa, PolyBase dosyaları klasörden ve tüm alt klasörlerinden alır ve dosya adının bir alt çizgiyle (_) veya nokta (.) ile başladığı dosyalardan veri almaz ( burada, konum bağımsız değişkeniolarak belgelenmiştir).

"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            }
        }
    }
]

PolyBase kullanarak hazırlanmış kopya

Kaynak verileriniz PolyBase ile yerel olarak uyumlu değilse, geçici hazırlama Azure Blob 'U veya Azure Data Lake Storage 2. (Azure Premium Depolama olamaz) aracılığıyla veri kopyalamayı etkinleştirin. Bu durumda Azure Data Factory, verileri, PolyBase 'in veri biçimi gereksinimlerini karşılayacak şekilde otomatik olarak dönüştürür. Daha sonra, Azure SYNAPSE Analytics 'e veri yüklemek için PolyBase 'i çağırır. Son olarak, depolama alanından geçici verilerinizi temizler. Hazırlama yoluyla veri kopyalama hakkındaki ayrıntılar için bkz. aşamalı kopya .

Bu özelliği kullanmak için, Azure BLOB depolama bağlı hizmeti oluşturun veya hesap anahtarı ya da ara depolama alanı olarak Azure depolama hesabına başvuran yönetilen kimlik kimlik doğrulamasıyla Azure Data Lake Storage 2. bağlı hizmeti oluşturun.

Önemli

  • Hazırlama bağlı hizmetiniz için yönetilen kimlik doğrulamasını kullanıyorsanız, Azure Blob için gerekli yapılandırmaları ve Azure Data Lake Storage 2. Nesil öğrenin.
  • Hazırlama Azure Depolama hizmetiniz sanal ağ hizmet uç noktasıyla yapılandırılmışsa, depolama hesabında "güvenilen Microsoft hizmetine izin ver" etkinleştirilmiş yönetilen kimlik doğrulaması kullansanız bkz. Azure depolama ile Sanal Ağ Hizmet Uç Noktalarını kullanmanın etkisi.

Önemli

Hazırlama Azure Depolamanız Yönetilen Özel Uç Nokta ile yapılandırılmışsa ve depolama güvenlik duvarı etkinse, PolyBase yükü sırasında aşamalı dosyalara erişenin sağlanması için yönetilen kimlik doğrulaması kullanmalı ve Synapse SQL Sunucusuna Depolama Blob Veri Okuyucusu izinleri vermalısınız.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

PolyBase'i kullanmaya yönelik en iyi yöntemler

Aşağıdaki bölümlerde, uygulama için en iyi yöntemler'de belirtilen uygulamalara ek olarak en iyi Azure Synapse Analytics.

Gerekli veritabanı izni

PolyBase'i kullanmak için, verileri Azure Synapse Analytics kullanıcı hedef veritabanında "CONTROL" iznine sahip olmalıdır. Bunu başarma yollarından biri, kullanıcıyı kullanıcı rolüne üye db_owner etmektir. Bunu nasıl yapacaklarını öğrenmek için Azure Synapse Analytics bakın.

Satır boyutu ve veri türü sınırları

PolyBase yükleri 1 MB'den küçük satırlar ile sınırlıdır. VARCHR(MAX), NVARCHAR(MAX) veya VARBINARY(MAX) yüklerini yüklemek için kullanılamaz. Daha fazla bilgi için bkz. Azure Synapse Analytics kapasite sınırları.

Kaynak verilerinizde 1 MB'den büyük satırlar olduğunda, kaynak tabloları birkaç küçük satıra dikey olarak bölmek iyi olabilir. Her satırın en büyük boyutunun sınırı aşmay olduğundan emin olun. Daha sonra daha küçük tablolar PolyBase kullanılarak yüklenebilir ve bu tablolarla birlikte Azure Synapse Analytics.

Alternatif olarak, bu tür geniş sütunlara sahip veriler için, "PolyBase'e izin ver" ayarını kapatarak ADF kullanarak verileri yüklemek için PolyBase dışı kullanabilirsiniz.

Azure Synapse Analytics sınıfını seçin

Mümkün olan en iyi verimi elde etmek için, PolyBase aracılığıyla Azure SYNAPSE Analytics 'e veri yükleyen kullanıcıya daha büyük bir kaynak sınıfı atayın.

PolyBase sorunlarını giderme

Ondalık sütuna yükleniyor

Kaynak verileriniz Metin biçimindeyse veya PolyBase ile uyumlu olmayan diğer depolarda (hazırlanan kopya ve PolyBase kullanılarak) ve Azure SYNAPSE Analytics decimal sütununa yüklenecek boş bir değer içeriyorsa, şu hatayı alabilirsiniz:

ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....

Çözüm, "tür Varsayılanı kullan" seçeneğinin (false olarak) kopyalama etkinliği havuzu-> PolyBase ayarları ' nda seçimini kaldırır. "USE_TYPE_DEFAULT", PolyBase metin dosyasından verileri aldığında sınırlandırılmış metin dosyalarında eksik değerlerin nasıl Işleneceğini belirten PolyBase yerel bir yapılandırmadır.

Azure SYNAPSE Analytics 'teki tableName özelliğini denetleyin

Aşağıdaki tabloda, JSON veri kümesindeki TableName özelliğinin nasıl belirtilme örnekleri verilmiştir. Şema ve tablo adlarının birkaç birleşimini gösterir.

DB şeması Tablo adı TableName JSON özelliği
dbo MyTable MyTable veya dbo. MyTable veya [dbo]. MyTable
dbo1 MyTable dbo1. MyTable veya [dbo1]. MyTable
dbo My. Table [My. Table] veya [dbo]. [My. Table]
dbo1 My.Table [dbo1]. [Tablom]

Aşağıdaki hatayı görüyorsanız sorun tableName özelliği için belirttiğiniz değer olabilir. tableName JSON özelliği için değerleri belirtmenin doğru yolu için yukarıdaki tabloya bakın.

Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider

Varsayılan değerleri olan sütunlar

Şu anda, Data Factory PolyBase özelliği hedef tablodakiyle aynı sayıda sütunu kabul eder. Bunlardan birinin varsayılan değerle tanımlandığı dört sütuna sahip bir tablo örneğidir. Giriş verisi için yine de dört sütun olması gerekir. Üç sütunlu giriş veri kümesi aşağıdaki iletiye benzer bir hata verir:

All columns of the table must be specified in the INSERT BULK statement.

NULL değeri, varsayılan değerin özel bir biçimidir. Sütun null değere sahipse, bu sütunun blobudaki giriş verileri boş olabilir. Ancak giriş veri kümesi eksik olabilir. PolyBase, verilerde eksik değerler için NULL Azure Synapse Analytics.

Dış dosya erişimi başarısız oldu

Aşağıdaki hatayı alırsanız, yönetilen kimlik doğrulaması kullanın ve depolama çalışma alanının yönetilen kimliğine Depolama Blob Verileri Okuyucusu izinleri Azure Synapse emin olun.

Job failed due to reason: at Sink '[SinkName]': shaded.msdataflow.com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:\r\nHdfsBridge::isDirExist 

Daha fazla bilgi için bkz. Çalışma alanı oluşturma sonrasında yönetilen kimliğe izinler verin.

Verileri veri kaynağına yüklemek için COPY deyimini Azure Synapse Analytics

Azure Synapse Analytics COPY deyimi doğrudan Azure Blob'dan veri yüklenmesini ve Azure Data Lake Storage 2. Nesil. Kaynak verileriniz bu bölümde açıklanan ölçütleri karşılarsa, verileri bu bölüme yüklemek için ADF'de COPY deyimini Azure Synapse Analytics. Azure Data Factory, ayarları denetler ve ölçütler karşılanmazsa kopyalama etkinliğinin çalıştırılmasına başarısız olur.

Not

Şu anda Data Factory yalnızca aşağıda belirtilen COPY deyimiyle uyumlu kaynaklardan kopyalama desteklenir.

İpucu

Azure Integration Runtime ile kopyalama açıklaması kullanılırken, etkin veri tümleştirme birimleri (DIU) her zaman 2 ' dir. Depolama alanından yükleme, SYNAPSE altyapısı tarafından desteklenmektedir, DIU 'nın ayarlanması performansı etkilemez.

COPY ifadesinin kullanılması aşağıdaki yapılandırmayı destekler:

  1. Kaynak bağlı hizmeti ve biçimi aşağıdaki türler ve kimlik doğrulama yöntemleriyle aynıdır:

    Desteklenen kaynak veri deposu türü Desteklenen biçim Desteklenen kaynak kimlik doğrulama türü
    Azure Blob Sınırlandırılmış metin Hesap anahtarı kimlik doğrulaması, paylaşılan erişim imzası kimlik doğrulaması, hizmet sorumlusu kimlik doğrulaması, yönetilen kimlik doğrulama
      Parquet Hesap anahtarı kimlik doğrulaması, paylaşılan erişim imzası kimlik doğrulaması
      ORC Hesap anahtarı kimlik doğrulaması, paylaşılan erişim imzası kimlik doğrulaması
    Azure Data Lake Storage 2. Nesil Sınırlandırılmış metin
    Parquet
    ORC
    Hesap anahtarı kimlik doğrulaması, hizmet sorumlusu kimlik doğrulaması, yönetilen kimlik kimlik doğrulaması

    Önemli

  2. Biçim ayarları şunlardır:

    1. Parquet için: compression sıkıştırma , Snappy veya GZip olabilir.
    2. ORC için: compression sıkıştırma , veya zlib Snappy olabilir.
    3. Sınırlandırılmış metin için:
      1. rowDelimiter açıkça tek karakter veya "\r\n " olarak ayarlanır, varsayılan değer desteklenmiyor.
      2. nullValue varsayılan olarak kalır veya boş dize ("") olarak ayarlanır.
      3. encodingNamevarsayılan olarak bırakıldı veya utf-8 veya utf-16 olarak ayarlanmış.
      4. escapeChar , ile aynı quoteChar olmalı ve boş değildir.
      5. skipLineCount varsayılan olarak veya 0 olarak ayarlanır.
      6. compression hiçbir sıkıştırma veya GZip olabilir.
  3. Kaynağınız bir klasörse kopyalama recursive etkinliği true olarak ayarlayıp olması wildcardFilename * gerekir.

  4. wildcardFolderPath , wildcardFilename (diğer * ), , , , ve modifiedDateTimeStart modifiedDateTimeEnd prefix enablePartitionDiscovery additionalColumns belirtilmez.

Kopyalama etkinliği altında aşağıdaki COPY deyimi allowCopyCommand ayarları de desteklemektedir:

Özellik Açıklama Gerekli
defaultValues Sütunlarda her hedef sütun için varsayılan değerleri Azure Synapse Analytics. özelliğinde varsayılan değerler veri ambarında varsayılan kısıtlamanın üzerine yazamaz ve kimlik sütununda varsayılan değer olamaz. No
additionalOptions Copy deyiminde doğrudan "With" yan tümcesinde Azure Synapse Analytics COPY deyimine geçirilen ek seçenekler. COPY deyimi gereksinimleriyle uyumlu olmak için değeri gereken şekilde tırnak içine alın. No
"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true,
                "copyCommandSettings": {
                    "defaultValues": [
                        {
                            "columnName": "col_string",
                            "defaultValue": "DefaultStringValue"
                        }
                    ],
                    "additionalOptions": {
                        "MAXERRORS": "10000",
                        "DATEFORMAT": "'ymd'"
                    }
                }
            },
            "enableSkipIncompatibleRow": true
        }
    }
]

Eşleme veri akışı özellikleri

Eşleme veri akışında verileri dönüştürerek tablolarda okuma ve yazma Azure Synapse Analytics. Daha fazla bilgi için bkz. veri akışlarını eşleme içindeki kaynak dönüştürme ve Havuz dönüşümü .

Kaynak dönüştürme

Azure SYNAPSE Analytics 'e özgü ayarlar, kaynak dönüşümünün kaynak seçenekleri sekmesinde bulunabilir.

Giriş Kaynağınızı bir tabloya (eşdeğerini) işaret edip etmeyeceğinizi seçin Select * from <table-name> ya da özel BIR SQL sorgusu girin.

Hazırlamayı etkinleştir Azure SYNAPSE Analytics kaynaklarıyla üretim iş yükleri için bu seçeneği kullanmanız önemle önerilir. Bir işlem hattından Azure SYNAPSE Analytics kaynaklarıyla bir veri akışı etkinliği YÜRÜTTÜĞÜNÜZDE, ADF sizden bir hazırlama konumu depolama hesabı ister ve bunu hazırlanan veri yüklemesi için kullanır. Azure SYNAPSE Analytics 'ten veri yüklemeye en hızlı bir mekanizmadır.

  • Depolama bağlı hizmetiniz için yönetilen kimlik kimlik doğrulaması kullandığınızda, Azure Blob için gerekli konfigürasyonları ve Azure Data Lake Storage 2. sırasıyla öğrenin.
  • Azure depolama alanı VNet hizmet uç noktası ile yapılandırıldıysa, depolama hesabında "Güvenilen Microsoft hizmeti 'ne izin ver" özelliği etkinleştirilmiş olarak yönetilen kimlik kimlik doğrulamasını kullanmanız gerekir. Azure depolama Ile VNET hizmet uç noktaları kullanmanın etkileri.
  • Kaynak olarak Azure SYNAPSE sunucusuz SQL havuzu kullandığınızda, hazırlama etkinleştirme desteklenmez.

Sorgu: giriş alanında sorgu ' yı seçerseniz, kaynağınız IÇIN bir SQL sorgusu girin. Bu ayar, veri kümesinde seçtiğiniz tüm tabloları geçersiz kılar. Order by yan tümceleri burada desteklenmez, ancak BIR tam select from ifadesini ayarlayabilirsiniz. Kullanıcı tanımlı tablo işlevleri de kullanabilirsiniz. select * from udfGetData () , bir tablo döndüren SQL 'de bir UDF 'dir. Bu sorgu, veri akışınızda kullanabileceğiniz bir kaynak tablosu oluşturur. Sorguların kullanılması, test veya aramalar için satırları azaltmanın harika bir yoludur.

SQL örneği: Select * from MyTable where customerId > 1000 and customerId < 2000

Toplu iş boyutu: büyük verileri okuma işleminde öbek için bir toplu iş boyutu girin. Veri akışlarında, ADF bu ayarı Spark sütunlu önbelleğe alma ayarlamak için kullanır. Bu bir seçenek alanıdır ve boş bırakılırsa Spark varsayılanlarını kullanır.

Yalıtım düzeyi: eşleme VERI akışındaki SQL kaynakları için varsayılan değer read UNCOMMITTED ' dır. Yalıtım düzeyini buradaki değerlerden birine değiştirebilirsiniz:

  • Okuma Işlendi
  • Kaydedilmeyen oku
  • Yinelenebilir okuma
  • Seri hale getirilebilir
  • Hiçbiri (yalıtım düzeyini yoksay)

Yalıtım düzeyi

Havuz dönüştürme

Azure SYNAPSE Analytics 'e özgü ayarlar, havuz dönüşümünün Ayarlar sekmesinde bulunur.

Güncelleştirme yöntemi: Veritabanı Hedefinizdeki hangi işlemlere izin verileceğini belirler. Varsayılan değer yalnızca eklemeleri izin verir. Satırları güncelleştirmek, kaldırmak veya silmek için, bu eylemler için satırları etiketlemek üzere alter-Row dönüşümü gereklidir. Güncelleştirmeler, yukarı ve silme için bir anahtar sütunu veya sütunları ayarlanacak satırı belirleyecek şekilde ayarlanmalıdır.

Tablo eylemi: Yazmadan önce hedef tablodaki tüm satırların yeniden oluşturulup kaldırılacağını belirler.

  • Hiçbiri: tabloya hiçbir eylem yapılmaz.
  • Yeniden oluştur: tablo bırakılır ve yeniden oluşturulur. Dinamik olarak yeni bir tablo oluşturuluyoruz gereklidir.
  • Kesme: Hedef tablodaki tüm satırlar kaldırılır.

Hazırlamayı etkinleştir: Bu, kopyalama komutunu Azure Synapse Analytics SQL Havuzlarına yüklenmesini sağlar ve çoğu Synpase havuzu için önerilir. Hazırlama depolama alanı, Yürütme etkinliğinde Veri Akışı yapılandırılmıştır.

  • Depolama bağlı hizmetiniz için yönetilen kimlik doğrulaması kullanıyorsanız, Azure Blob için gereken yapılandırmaları ve Azure Data Lake Storage 2. Nesil öğrenin.
  • Azure Depolama hizmetiniz sanal ağ hizmet uç noktasıyla yapılandırılmışsa, depolama hesabında "güvenilen Microsoft hizmetine izin ver" etkinleştirilmiş yönetilen kimlik doğrulaması kullansanız, Bkz. Azure depolama ile Sanal Ağ Hizmet Uç Noktalarını kullanmanın etkisi.

Toplu iş boyutu: Her demete kaç satır yazıldığı kontrol eder. Daha büyük toplu iş boyutları sıkıştırma ve bellek iyileştirmesini iyi hale getirse de, verileri önbelleğe alma işlemi için yetersiz bellek özel durumları riski oluşturur.

SQL Öncesi ve Sonrası betikleri: Havuz veritabanınıza veri yazmadan önce (ön işleme) ve sonra (işleme sonrası) yürütülecek çok satırlı SQL betiklerini girin

SQL işleme öncesi ve sonrası betikleri

Hata satırı işleme

Azure Synapse Analytics yazarken, hedef tarafından ayarlanmış kısıtlamalar nedeniyle bazı veri satırları başarısız olabilir. Bazı yaygın hatalar şunlardır:

  • Dize veya ikili veriler tabloda kesilebilir
  • NULL değeri sütuna eklenemiyor
  • Değer veri türüne dönüştürülürken dönüştürme başarısız oldu

Varsayılan olarak, veri akışı çalıştırması ilk hatada başarısız olur. Tek tek satırlarda hata olsa bile veri akışınızı tamamlayan Hatada devam edin'i seçebilirsiniz. Azure Data Factory, bu hata satırlarını işlemeniz için farklı seçenekler sağlar.

İşlem Yürütme: Verilerinizin tek bir işlemde mi yoksa toplu olarak mı yazıldığı seçin. Tek işlem daha iyi performans sağlar ve işlem tamamlandıktan sonra yazılan veriler başkalarına görünmez. Toplu işlemlerin performansı daha düşük olur, ancak büyük veri kümelerini kullanabilir.

Reddedilen çıkış verileri: Etkinleştirilirse, hata satırlarını Azure Blob depolama alanındaki bir CSV dosyasına veya seçtiğiniz Azure Data Lake Storage 2. bir hesaba aktarabilirsiniz. Bu, hata satırlarını üç ek sütunla Yazar: ekleme veya GÜNCELLEŞTIRME, veri akışı hata kodu ve satırdaki hata iletisi gibi SQL işlemi.

Hatada başarı bildir: Etkinleştirilirse, hata satırları bulunursa bile veri akışı başarılı olarak işaretlenir.

Hata satırı işlemesini gösteren ekran görüntüsü

Arama etkinliği özellikleri

Özelliklerle ilgili ayrıntıları öğrenmek için arama etkinliğinidenetleyin.

GetMetadata etkinlik özellikleri

Özelliklerle ilgili ayrıntıları öğrenmek için GetMetadata etkinliğini denetleyin

Azure SYNAPSE Analytics için veri türü eşlemesi

Veya Azure SYNAPSE Analytics 'ten veri kopyaladığınızda, Azure SYNAPSE Analytics veri türleri arasında, geçici veri türlerini Azure Data Factory için aşağıdaki eşlemeler 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 .

İpucu

Azure SYNAPSE Analytics tarafından desteklenen veri türleri ve desteklenmeyen çözümler için Azure SYNAPSE Analytics makalesindeki tablo veri türleri bölümüne bakın.

Azure SYNAPSE Analytics veri türü Data Factory geçici veri türü
bigint Int64
ikili Byte []
bit Boole
char Dize, Char []
date DateTime
Tarih saat DateTime
datetime2 DateTime
Türünde DateTimeOffset
Ondalık Ondalık
FıLESTREAM özniteliği (varbinary (max)) Byte []
Float Çift
image Byte []
int Int32
etmenize Ondalık
nchar Dize, Char []
sayısal Ondalık
nvarchar Dize, Char []
real Tek
rowversion Byte []
girişin DateTime
smallint Int16
küçük para Ondalık
time TimeSpan
tinyint Bayt
uniqueidentifier Guid
ikili Byte []
varchar Dize, Char []

Sonraki adımlar

Azure Data Factory ' de kopyalama etkinliğine göre kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz. desteklenen veri depoları ve biçimleri.