Azure Data Factory veya Azure Synapse Analytics kullanarak Snowflake'te verileri kopyalama ve dönüştürme

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, Azure Data Factory ve Azure Synapse işlem hatlarındaki Kopyalama etkinliği kullanarak Snowflake'ten ve Snowflake'e veri kopyalama ve Snowflake'teki verileri dönüştürmek için Veri Akışı kullanma adımları açıklanmaktadır. Daha fazla bilgi için Data Factory veya Azure Synapse Analytics'in giriş makalesine bakın.

Önemli

Yeni Snowflake bağlayıcısı, geliştirilmiş yerel Snowflake desteği sağlar. Çözümünüzde eski Snowflake bağlayıcısını kullanıyorsanız, snowflake bağlayıcınızı en erken zamanda yükseltmeniz önerilir. Eski ve en son sürüm arasındaki fark hakkında ayrıntılı bilgi için bu bölüme bakın.

Desteklenen özellikler

Bu Snowflake bağlayıcısı aşağıdaki özellikler için desteklenir:

Desteklenen özellikler IR
Kopyalama etkinliği (kaynak/havuz) (1) (2)
Eşleme veri akışı (kaynak/havuz) (1)
Arama etkinliği (1) (2)
Betik 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ı

Kopyalama etkinliği için bu Snowflake bağlayıcısı aşağıdaki işlevleri destekler:

Ö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. Şirket içinde barındırılan tümleştirme çalışma zamanının kullandığı IP adreslerini izin verilenler listesine eklediğinizden emin olun.

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, izin verilenler listesine Azure Integration Runtime IP'lerini ekleyebilirsiniz.

Kaynak veya Havuz için kullanılan Snowflake hesabı, veritabanında gerekli USAGE erişime ve şemada ve altındaki tablolarda/görünümlerde okuma/yazma erişimine sahip olmalıdır. Ayrıca, SAS URI'siyle Dış aşamayı oluşturabilmek için şemada da olması CREATE STAGE gerekir.

Aşağıdaki Hesap özellikleri değerleri ayarlanmalıdır

Özellik Açıklama Zorunlu Varsayılan
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_CREATION Özel bir bulut depolama konumuna erişmek için adlandırılmış bir dış aşama oluştururken (CREATE STAGE kullanarak) bulut kimlik bilgileri olarak depolama tümleştirme nesnesinin gerekli olup olmayacağını belirtir. FALSE FALSE
REQUIRE_STORAGE_INTEGRATION_FOR_STAGE_OPERATION Verileri özel bir bulut depolama konumundan yüklerken veya kaldırırken bulut kimlik bilgileri olarak depolama tümleştirme nesnesine başvuran adlandırılmış bir dış aşamanın kullanılmasının gerekip gerekmediğini belirtir. FALSE FALSE

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

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

Kullanıcı arabirimini kullanarak Snowflake'e bağlı hizmet oluşturma

Azure portalı kullanıcı arabiriminde Snowflake'e bağlı bir hizmet oluşturmak için aşağıdaki adımları kullanın.

  1. 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:

  2. Snowflake araması yapın ve Snowflake bağlayıcısını seçin.

    Snowflake bağlayıcısının ekran görüntüsü.

  3. Hizmet ayrıntılarını yapılandırın, bağlantıyı test edin ve yeni bağlı hizmeti oluşturun.

    Snowflake için bağlı hizmet yapılandırmasının ekran görüntüsü.

Bağlayıcı yapılandırma ayrıntıları

Aşağıdaki bölümlerde, Snowflake bağlayıcısına özgü varlıkları tanımlayan özelliklerle ilgili ayrıntılar sağlanır.

Bağlı hizmet özellikleri

Bu genel özellikler Snowflake bağlı hizmeti için desteklenir:

Özellik Açıklama Gerekli
Tür Type özelliği SnowflakeV2 olarak ayarlanmalıdır. Yes
accountIdentifier Kuruluşla birlikte hesabın adı. Örneğin, myorg-account123. Yes
database Bağlandıktan sonra oturum için kullanılan varsayılan veritabanı. Yes
ambar Bağlandıktan sonra oturum için kullanılan varsayılan sanal ambar. Yes
authenticationType Snowflake hizmetine bağlanmak için kullanılan kimlik doğrulama türü. İzin verilen değerler şunlardır: Temel (Varsayılan) ve KeyPair. Sırasıyla daha fazla özellik ve örnek için aşağıdaki ilgili bölümlere bakın. Hayır
rol Bağlandıktan sonra oturum için kullanılan varsayılan güvenlik rolü. Hayır
connectVia Veri deposuna bağlanmak için kullanılan tümleştirme çalışma zamanı . Azure tümleştirme çalışma zamanını veya şirket içinde barındırılan tümleştirme çalışma zamanını (veri deponuz özel bir ağda bulunuyorsa) kullanabilirsiniz. Belirtilmezse, varsayılan Azure tümleştirme çalışma zamanını kullanır. Hayır

Bu Snowflake bağlayıcısı aşağıdaki kimlik doğrulama türlerini destekler. Ayrıntılar için ilgili bölümlere bakın.

Temel kimlik doğrulama

Temel kimlik doğrulamasını kullanmak için, önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:

Özellik Açıklama Gerekli
kullanıcı Snowflake kullanıcısının oturum açma adı. Yes
password Snowflake kullanıcısının parolası. Güvenli bir şekilde depolamak için bu alanı SecureString türü olarak işaretleyin. Azure Key Vault'ta depolanan bir gizli diziye de başvurabilirsiniz. Yes

Örnek:

{
    "name": "SnowflakeV2LinkedService",
    "properties": {
        "type": "SnowflakeV2",
        "typeProperties": {
            "accountIdentifier": "<accountIdentifier>",
            "database": "<database>",
            "warehouse": "<warehouse>",
            "authenticationType": "Basic",
            "user": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "role": "<role>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Azure Key Vault'ta parola:

{
    "name": "SnowflakeV2LinkedService",
    "properties": {
        "type": "SnowflakeV2",
        "typeProperties": {
            "accountIdentifier": "<accountIdentifier>",
            "database": "<database>",
            "warehouse": "<warehouse>",
            "authenticationType": "Basic",
            "user": "<username>",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                }, 
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Not

Eşleme Veri Akışı yalnızca Temel kimlik doğrulamayı destekler.

Anahtar çifti kimlik doğrulaması

Anahtar çifti kimlik doğrulamasını kullanmak için, Anahtar Çifti Kimlik Doğrulaması ve Anahtar Çifti Döndürme'ye başvurarak Snowflake'de bir anahtar çifti kimlik doğrulama kullanıcısı yapılandırmanız ve oluşturmanız gerekir. Daha sonra, bağlı hizmeti tanımlamak için kullandığınız özel anahtarı ve parolayı (isteğe bağlı) not edin.

Önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:

Özellik Açıklama Gerekli
kullanıcı Snowflake kullanıcısının oturum açma adı. Yes
privateKey Anahtar çifti kimlik doğrulaması için kullanılan özel anahtar.

Özel anahtarın Azure Data Factory'ye gönderildiğinde geçerli olduğundan emin olmak ve privateKey dosyasının yeni satır karakterleri (\n) içerdiğini göz önünde bulundurarak privateKey içeriğini dize sabit biçiminde doğru biçimlendirmek önemlidir. Bu işlem, her yeni satıra açıkça \n eklemeyi içerir.
Yes
privateKeyPassphrase Şifreleniyorsa, özel anahtarın şifresini çözmek için kullanılan parola. Hayır

Örnek:

{
    "name": "SnowflakeV2LinkedService",
    "properties": {
        "type": "SnowflakeV2",
        "typeProperties": {
            "accountIdentifier": "<accountIdentifier>",
            "database": "<database>",
            "warehouse": "<warehouse>",
            "authenticationType": "KeyPair",
            "user": "<username>",
            "privateKey": {
                "type": "SecureString",
                "value": "<privateKey>"
            },
            "privateKeyPassphrase": { 
                "type": "SecureString",
                "value": "<privateKeyPassphrase>"
            },
            "role": "<role>"
        },
        "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.

Snowflake veri kümesi için aşağıdaki özellikler desteklenir.

Özellik Açıklama Gerekli
Tür Veri kümesinin type özelliği SnowflakeV2Table olarak ayarlanmalıdır. Yes
schema Şemanın adı. Şema adının büyük/küçük harfe duyarlı olduğuna dikkat edin. Kaynak için hayır, havuz için evet
table Tablo/görünümün adı. Tablo adının büyük/küçük harfe duyarlı olduğuna dikkat edin. Kaynak için hayır, havuz için evet

Örnek:

{
    "name": "SnowflakeV2Dataset",
    "properties": {
        "type": "SnowflakeV2Table",
        "typeProperties": {
            "schema": "<Schema name for your Snowflake database>",
            "table": "<Table name for your Snowflake database>"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "linkedServiceName": {
            "referenceName": "<name of linked service>",
            "type": "LinkedServiceReference"
        }
    }
}

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 Snowflake kaynağı ve havuzu tarafından desteklenen özelliklerin listesi sağlanır.

Kaynak olarak snowflake

Snowflake bağlayıcısı, en iyi performansı elde etmek için Snowflake'in COPY to [location] komutunu kullanır.

Havuz veri deposu ve biçimi Snowflake COPY komutu tarafından yerel olarak destekleniyorsa, snowflake'den havuza doğrudan kopyalamak için Kopyalama etkinliği kullanabilirsiniz. Ayrıntılar için bkz . Snowflake'ten doğrudan kopyalama. Aksi takdirde Snowflake'teki yerleşik Hazırlanmış kopyayı kullanın.

Snowflake'ten veri kopyalamak için, Kopyalama etkinliği kaynak 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 SnowflakeV2Source olarak ayarlanmalıdır. Yes
query Snowflake'ten veri okunacak SQL sorgusunu belirtir. Şema, tablo ve sütunların adları küçük harf içeriyorsa, sorgudaki nesne tanımlayıcısını tırnak içine alın; örneğin. select * from "schema"."myTable"
Saklı yordamın yürütülmesi desteklenmez.
Hayır
exportSettings Snowflake'ten veri almak için kullanılan gelişmiş ayarlar. DEYIMIni çağırdığınızda hizmetin geçireceği COPY into komutu tarafından desteklenenleri yapılandırabilirsiniz. Yes
altında exportSettings:
Tür SnowflakeExportCopyCommand olarak ayarlanan dışarı aktarma komutu türü. Yes
storageIntegration Snowflake'de oluşturduğunuz depolama tümleştirmenizin adını belirtin. Depolama tümleştirmesini kullanmanın önkoşul adımları için bkz . Snowflake depolama tümleştirmesini yapılandırma. Hayır
additionalCopyOptions Anahtar-değer çiftlerinin sözlüğü olarak sağlanan ek kopyalama seçenekleri. Örnekler: MAX_FILE_SIZE, ÜZERINE YAZ. Daha fazla bilgi için bkz . Snowflake Kopyalama Seçenekleri. Hayır
additionalFormatOptions COPY komutuna anahtar-değer çiftlerinin sözlüğü olarak sağlanan ek dosya biçimi seçenekleri. Örnekler: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Daha fazla bilgi için bkz . Snowflake Biçim Türü Seçenekleri. Hayır

Not

Aşağıdaki komutu yürütme ve şema INFORMATION_SCHEMA ve COLUMNS tablosuna erişme izniniz olduğundan emin olun.

  • COPY INTO <location>

Snowflake'ten doğrudan kopya

Havuz veri deponuz ve biçiminiz bu bölümde açıklanan ölçütleri karşılıyorsa, snowflake'ten havuza doğrudan kopyalamak için Kopyalama etkinliği kullanabilirsiniz. Hizmet ayarları denetler ve aşağıdaki ölçütlere uyulmazsa Kopyalama etkinliği çalıştırılamaz:

  • Kaynakta belirttiğinizde storageIntegration :

    Havuz veri deposu, Snowflake'deki dış aşamada başvurduğunuz Azure Blob Depolama. Verileri kopyalamadan önce aşağıdaki adımları tamamlamanız gerekir:

    1. Havuz Azure Blob Depolama için desteklenen kimlik doğrulama türleriyle Azure Blob Depolama bağlı bir hizmet oluşturun.

    2. Erişim Denetimi (IAM) Azure Blob Depolama havuzdaki Snowflake hizmet sorumlusuna en az Depolama Blob Verileri Katkıda Bulunanı rolü verin.

  • Kaynakta belirtmediğinizde storageIntegration :

    Havuz bağlantılı hizmeti, paylaşılan erişim imzası kimlik doğrulamasına sahip Azure Blob depolamadır. Verileri aşağıdaki desteklenen biçimde doğrudan Azure Data Lake Storage 2. Nesil kopyalamak istiyorsanız, Azure Data Lake Storage 2. Nesil hesabınızda SAS kimlik doğrulamasıyla Azure Blob Depolama bağlı bir hizmet oluşturabilirsiniz. Kar tanesi.

  • Havuz veri biçimi Parquet, sınırlandırılmış metin veya JSON biçimindedir ve aşağıdaki yapılandırmaları içerir:

    • Parquet biçimi için sıkıştırma codec'i None, Snappy veya Lzo'dur.
    • Sınırlandırılmış metin biçimi için:
      • rowDelimiter\r\n veya herhangi bir tek karakterdir.
      • compressionsıkıştırma, gzip, bzip2 veya deflate olamaz.
      • encodingNamevarsayılan olarak bırakılır veya utf-8 olarak ayarlanır.
      • quoteCharçift tırnak, tek tırnak veya boş dizedir (tırnak karakteri yoktur).
    • JSON biçimi için doğrudan kopyalama yalnızca kaynak Snowflake tablosunun veya sorgu sonucunun yalnızca tek sütuna sahip olması ve bu sütunun veri türünün VARIANT, OBJECT veya ARRAY olması durumunu destekler.
      • compressionsıkıştırma, gzip, bzip2 veya deflate olamaz.
      • encodingNamevarsayılan olarak bırakılır veya utf-8 olarak ayarlanır.
      • filePatternkopyalama etkinliği havuzu varsayılan olarak bırakılır veya setOfObjects olarak ayarlanır.
  • Kopyalama etkinliği kaynağında additionalColumns belirtilmedi.

  • Sütun eşleme belirtilmemiş.

Örnek:

"activities":[
    {
        "name": "CopyFromSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Snowflake input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SnowflakeV2Source",
                "query": "SELECT * FROM MYTABLE",
                "exportSettings": {
                    "type": "SnowflakeExportCopyCommand",
                    "additionalCopyOptions": {
                        "MAX_FILE_SIZE": "64000000",
                        "OVERWRITE": true
                    },
                    "additionalFormatOptions": {
                        "DATE_FORMAT": "'MM/DD/YYYY'"
                    },
                    "storageIntegration": "< Snowflake storage integration name >"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Snowflake'ten hazırlanmış kopya

Havuz veri deponuz veya biçiminiz, son bölümde belirtildiği gibi Snowflake COPY komutuyla yerel olarak uyumlu değilse, geçici bir Azure Blob depolama örneği kullanarak yerleşik aşamalı kopyayı etkinleştirin. Aşamalı kopyalama özelliği size daha iyi aktarım hızı da sağlar. Hizmet Snowflake'deki verileri hazırlama depolama alanına aktarır, ardından verileri havuza kopyalar ve son olarak hazırlama depolama alanından geçici verilerinizi temizler. Hazırlamayı kullanarak veri kopyalama hakkında ayrıntılı bilgi için bkz . Aşamalı kopyalama.

Bu özelliği kullanmak için ara hazırlama olarak Azure depolama hesabına başvuran bir Azure Blob depolama bağlı hizmeti oluşturun. Ardından Kopyalama etkinliği ve stagingSettings özelliklerini belirtinenableStaging.

Örnek:

"activities":[
    {
        "name": "CopyFromSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Snowflake input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SnowflakeV2Source",               
                "query": "SELECT * FROM MyTable",
                "exportSettings": {
                    "type": "SnowflakeExportCopyCommand",
                    "storageIntegration": "< Snowflake storage integration name >"                    
                }
            },
            "sink": {
                "type": "<sink type>"
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingBlob",
                    "type": "LinkedServiceReference"
                },
                "path": "mystagingpath"
            }
        }
    }
]

Snowflake'ten hazırlanmış bir kopya gerçekleştirirken, Havuz Kopyalama Davranışı'nı Dosyaları Birleştir olarak ayarlamak çok önemlidir. Bu ayar, tüm bölümlenmiş dosyaların doğru şekilde işlenmesini ve birleştirilmesini sağlayarak yalnızca son bölümlenmiş dosyanın kopyalanması sorununu önler.

Örnek Yapılandırma

{
    "type": "Copy",
    "source": {
        "type": "SnowflakeSource",
        "query": "SELECT * FROM my_table"
    },
    "sink": {
        "type": "AzureBlobStorage",
        "copyBehavior": "MergeFiles"
    }
}

Not

Havuz Kopyalama Davranışının Dosyaları Birleştir olarak ayarlanamaması, yalnızca son bölümlenmiş dosyanın kopyalanmasıyla sonuçlanabilir.

Havuz olarak kar tanesi

Snowflake bağlayıcısı, en iyi performansı elde etmek için Snowflake'in COPY to [table] komutunu kullanır. Azure'da Snowflake'e veri yazmayı destekler.

Kaynak veri deposu ve biçimi Snowflake COPY komutu tarafından yerel olarak destekleniyorsa, kaynaktan Snowflake'e doğrudan kopyalamak için Kopyalama etkinliği kullanabilirsiniz. Ayrıntılar için bkz . Snowflake'e doğrudan kopyalama. Aksi takdirde, Snowflake'e yerleşik Aşamalı kopya kullanın.

Snowflake'e veri kopyalamak için, Kopyalama etkinliği havuzu bölümünde aşağıdaki özellikler desteklenir.

Özellik Açıklama Gerekli
Tür Kopyalama etkinliği havuzun type özelliği SnowflakeV2Sink olarak ayarlanır. Yes
preCopyScript Her çalıştırmada Snowflake'e veri yazmadan önce çalıştırılacak Kopyalama etkinliği için bir SQL sorgusu belirtin. Önceden yüklenmiş verileri temizlemek için bu özelliği kullanın. Hayır
importSettings Snowflake'e veri yazmak için kullanılan gelişmiş ayarlar. DEYIMIni çağırdığınızda hizmetin geçireceği COPY into komutu tarafından desteklenenleri yapılandırabilirsiniz. Yes
altında importSettings:
Tür SnowflakeImportCopyCommand olarak ayarlanan içeri aktarma komutunun türü. Yes
storageIntegration Snowflake'de oluşturduğunuz depolama tümleştirmenizin adını belirtin. Depolama tümleştirmesini kullanmanın önkoşul adımları için bkz . Snowflake depolama tümleştirmesini yapılandırma. Hayır
additionalCopyOptions Anahtar-değer çiftlerinin sözlüğü olarak sağlanan ek kopyalama seçenekleri. Örnekler: ON_ERROR, FORCE, LOAD_UNCERTAIN_FILES. Daha fazla bilgi için bkz . Snowflake Kopyalama Seçenekleri. Hayır
additionalFormatOptions COPY komutuna sağlanan ek dosya biçimi seçenekleri, anahtar-değer çiftlerinin sözlüğü olarak sağlanır. Örnekler: DATE_FORMAT, TIME_FORMAT, TIMESTAMP_FORMAT. Daha fazla bilgi için bkz . Snowflake Biçim Türü Seçenekleri. Hayır

Not

Aşağıdaki komutu yürütme ve şema INFORMATION_SCHEMA ve COLUMNS tablosuna erişme izniniz olduğundan emin olun.

  • SELECT CURRENT_REGION()
  • COPY INTO <table>
  • SHOW REGIONS
  • CREATE OR REPLACE STAGE
  • DROP STAGE

Snowflake'e doğrudan kopyalama

Kaynak veri deponuz ve biçiminiz bu bölümde açıklanan ölçütleri karşılıyorsa, kaynaktan Snowflake'e doğrudan kopyalamak için Kopyalama etkinliği kullanabilirsiniz. Hizmet ayarları denetler ve aşağıdaki ölçütlere uyulmazsa Kopyalama etkinliği çalıştırılamaz:

  • Havuz içinde belirttiğinizde storageIntegration :

    Kaynak veri deposu, Snowflake'deki dış aşamada başvurduğunuz Azure Blob Depolama. Verileri kopyalamadan önce aşağıdaki adımları tamamlamanız gerekir:

    1. Desteklenen tüm kimlik doğrulama türleriyle kaynak Azure Blob Depolama için Azure Blob Depolama bağlı bir hizmet oluşturun.

    2. Kaynak Azure Blob Depolama Erişim Denetimi'nde (IAM) Snowflake hizmet sorumlusuna en az Depolama Blobu Veri Okuyucusu rolü verin.

  • Havuz içinde belirtmediğinizde storageIntegration :

    Kaynak bağlı hizmet, paylaşılan erişim imzası kimlik doğrulamasına sahip Azure Blob depolamadır. aşağıdaki desteklenen biçimde Azure Data Lake Storage 2. Nesil verileri doğrudan kopyalamak istiyorsanız, Azure Data Lake Storage 2. Nesil hesabınızda SAS kimlik doğrulamasıyla Azure Blob Depolama bağlı bir hizmet oluşturabilirsiniz. Kar tanesi.

  • Kaynak veri biçimi Parquet, Sınırlandırılmış metin veya aşağıdaki yapılandırmalara sahip JSON'dır:

    • Parquet biçimi için sıkıştırma codec'i Yok veya Snappy'dir.

    • Sınırlandırılmış metin biçimi için:

      • rowDelimiter\r\n veya herhangi bir tek karakterdir. Satır sınırlayıcısı "\r\n" değilse false firstRowAsHeaderolması gerekir ve skipLineCount belirtilmez.
      • compressionsıkıştırma, gzip, bzip2 veya deflate olamaz.
      • encodingName varsayılan olarak bırakılır veya "UTF-8", "UTF-16" olarak ayarlanır, "UTF-16BE", "UTF-32", "UTF-32BE", "BIG5", "EUC-JP", "EUC-KR", "GB18030", "ISO-2022-JP", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-2", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "WINDOWS-1250", "WINDOWS-1251", "WINDOWS-1252", "WINDOWS-1253", "WINDOWS-1254", "WINDOWS-1255".
      • quoteCharçift tırnak, tek tırnak veya boş dizedir (tırnak karakteri yoktur).
    • JSON biçimi için doğrudan kopyalama yalnızca havuz Snowflake tablosunun yalnızca tek sütuna sahip olduğu ve bu sütunun veri türünün VARIANT, OBJECT veya ARRAY olduğu durumu destekler.

      • compressionsıkıştırma, gzip, bzip2 veya deflate olamaz.
      • encodingNamevarsayılan olarak bırakılır veya utf-8 olarak ayarlanır.
      • Sütun eşleme belirtilmemiş.
  • Kopyalama etkinliği kaynağında:

    • additionalColumns belirtilmemiş.
    • Kaynağınız bir klasörse true recursive olarak ayarlanır.
    • prefix, modifiedDateTimeStart, modifiedDateTimeEndve enablePartitionDiscovery belirtilmedi.

Örnek:

"activities":[
    {
        "name": "CopyToSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Snowflake output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SnowflakeV2Sink",
                "importSettings": {
                    "type": "SnowflakeImportCopyCommand",
                    "copyOptions": {
                        "FORCE": "TRUE",
                        "ON_ERROR": "SKIP_FILE"
                    },
                    "fileFormatOptions": {
                        "DATE_FORMAT": "YYYY-MM-DD"
                    },
                    "storageIntegration": "< Snowflake storage integration name >"
                }
            }
        }
    }
]

Snowflake'e aşamalı kopya

Kaynak veri deponuz veya biçiminiz, son bölümde belirtildiği gibi Snowflake COPY komutuyla yerel olarak uyumlu değilse, geçici bir Azure Blob depolama örneği kullanarak yerleşik aşamalı kopyayı etkinleştirin. Aşamalı kopyalama özelliği size daha iyi aktarım hızı da sağlar. Hizmet, snowflake'in veri biçimi gereksinimlerini karşılamak için verileri otomatik olarak dönüştürür. Ardından Verileri Snowflake'e yüklemek için COPY komutunu çağırır. Son olarak, blob depolamadan geçici verilerinizi temizler. Hazırlamayı kullanarak veri kopyalama hakkında ayrıntılı bilgi için bkz . Aşamalı kopyalama.

Bu özelliği kullanmak için ara hazırlama olarak Azure depolama hesabına başvuran bir Azure Blob depolama bağlı hizmeti oluşturun. Ardından Kopyalama etkinliği ve stagingSettings özelliklerini belirtinenableStaging.

Örnek:

"activities":[
    {
        "name": "CopyToSnowflake",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Snowflake output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SnowflakeV2Sink",
                "importSettings": {
                    "type": "SnowflakeImportCopyCommand",
                    "storageIntegration": "< Snowflake storage integration name >"
                }
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingBlob",
                    "type": "LinkedServiceReference"
                },
                "path": "mystagingpath"
            }
        }
    }
]

Eşleme veri akışı özellikleri

Eşleme veri akışındaki verileri dönüştürürken Snowflake'teki tablolardan okuma ve tablo yazma işlemi yapabilirsiniz. Daha fazla bilgi için bkz . Eşleme veri akışlarında kaynak dönüştürme ve havuz dönüşümü . Snowflake veri kümesini veya satır içi veri kümesini kaynak ve havuz türü olarak kullanmayı seçebilirsiniz.

Kaynak dönüştürme

Aşağıdaki tabloda Snowflake kaynağı tarafından desteklenen özellikler listelenmiştir. Bu özellikleri Kaynak seçenekleri sekmesinde düzenleyebilirsiniz. Bağlayıcı Snowflake iç veri aktarımını kullanır.

Veri Akışı Adı Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Tablo Giriş olarak Tablo'yı seçerseniz, veri akışı Snowflake veri kümesinde belirtilen tablodan veya satır içi veri kümesi kullanılırken kaynak seçeneklerden tüm verileri getirir. Hayır String (yalnızca satır içi veri kümesi için)
tableName
schemaName
Sorgu Giriş olarak Sorgu'yu seçerseniz Snowflake'ten veri getirmek için bir sorgu girin. Bu ayar, veri kümesinde seçtiğiniz tüm tabloları geçersiz kılar.
Şema, tablo ve sütunların adları küçük harf içeriyorsa, sorgudaki nesne tanımlayıcısını tırnak içine alın; örneğin. select * from "schema"."myTable"
Hayır String query
Artımlı ayıklamayı etkinleştirme (Önizleme) ADF'ye yalnızca işlem hattının son yürütülmesinden bu yana değişen satırları işlemesini bildirmek için bu seçeneği kullanın. Hayır Boolean enableCdc
Artımlı Sütun Artımlı ayıklama özelliğini kullanırken, kaynak tablonuzda filigran olarak kullanmak istediğiniz tarih/saat/sayısal sütunu seçmeniz gerekir. Hayır String waterMarkColumn
Kar Tanesi Değişiklik İzleme Etkinleştirme (Önizleme) Bu seçenek, ADF'nin snowflake değişiklik veri yakalama teknolojisinden yararlanarak önceki işlem hattı yürütme işleminden bu yana yalnızca delta verilerini işlemesini sağlar. Bu seçenek, artımlı sütun gerektirmeden satır ekleme, güncelleştirme ve silme işlemleriyle delta verilerini otomatik olarak yükler. Hayır Boolean enableNativeCdc
Net Değişiklikler Kar tanesi değişiklik izleme özelliğini kullanırken yinelenenleri kaldırılmış satırlar veya kapsamlı değişiklikler almak için bu seçeneği kullanabilirsiniz. Yinelenenleri kaldırılan satırlar yalnızca belirli bir zamandan bu yana değişen satırların en son sürümlerini gösterirken, kapsamlı değişiklikler size silinen veya güncelleştirilenler de dahil olmak üzere değişen her satırın tüm sürümlerini gösterir. Örneğin, bir satırı güncelleştirirseniz, kapsamlı değişikliklerde bir silme sürümü ve ekleme sürümü görürsünüz, ancak yinelenenleri kaldırılmış satırlarda yalnızca ekleme sürümü değiştirilir. Kullanım örneğine bağlı olarak, ihtiyaçlarınıza uygun seçeneği belirleyebilirsiniz. Varsayılan seçenek false'tur, bu da kapsamlı değişiklikler anlamına gelir. Hayır Boolean netChanges
Sistem Sütunlarını ekle Kar tanesi değişiklik izleme özelliğini kullanırken, Snowflake tarafından sağlanan meta veri akışı sütunlarının değişiklik izleme çıkışına dahil edilip edilmediğini denetlemek için systemColumns seçeneğini kullanabilirsiniz. Varsayılan olarak, systemColumns true olarak ayarlanır ve bu da meta veri akışı sütunlarının dahil olduğu anlamına gelir. Hariç tutmak istiyorsanız systemColumns değerini false olarak ayarlayabilirsiniz. Hayır Boolean systemColumns
Okumaya baştan başlama Artımlı ayıklama ve değişiklik izleme ile bu seçeneğin ayarlanması, ADF'ye artımlı ayıklamanın açık olduğu bir işlem hattının ilk yürütülmesinde tüm satırları okumasını bildirecektir. Hayır Boolean skipInitialLoad

Snowflake kaynak betiği örnekleri

Kaynak türü olarak Snowflake veri kümesini kullandığınızda, ilişkili veri akışı betiği şöyledir:

source(allowSchemaDrift: true,
	validateSchema: false,
	query: 'select * from MYTABLE',
	format: 'query') ~> SnowflakeSource

Satır içi veri kümesi kullanıyorsanız, ilişkili veri akışı betiği şu şekildedir:

source(allowSchemaDrift: true,
	validateSchema: false,
	format: 'query',
	query: 'select * from MYTABLE',
	store: 'snowflake') ~> SnowflakeSource

Yerel Değişiklik İzleme

Azure Data Factory artık Snowflake'de değişiklik izleme olarak bilinen ve günlük biçiminde değişiklikleri izlemeyi içeren yerel bir özelliği destekliyor. Snowflake'in bu özelliği, verilerdeki değişiklikleri zaman içinde izlememize olanak tanır ve bu sayede artımlı veri yükleme ve denetim amacıyla yararlı olur. Bu özelliği kullanmak için Veri yakalamayı değiştir'i etkinleştirip Snowflake Değişiklik İzleme seçtiğinizde kaynak tablo için kaynak kar tanesi tablosunda değişiklik izlemeyi etkinleştiren bir Stream nesnesi oluştururuz. Daha sonra, kaynak tablodan yalnızca yeni veya güncelleştirilmiş verileri getirmek için sorgumuzdaki CHANGES yan tümcesini kullanırız. Ayrıca, kar tanesi kaynak tablosu için ayarlanan veri saklama süresi aralığı içinde değişikliklerin kullanılması için işlem hattı zamanlanması önerilir, aksi halde kullanıcı yakalanan değişikliklerde tutarsız davranışlar görebilir.

Havuz dönüşümü

Aşağıdaki tabloda Snowflake havuzu tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Ayarlar sekmesinde düzenleyebilirsiniz. Satır içi veri kümesini kullanırken, veri kümesi özellikleri bölümünde açıklanan özelliklerle aynı olan ek ayarlar görürsünüz. Bağlayıcı Snowflake iç veri aktarımını kullanır.

Veri Akışı Adı Açıklama Gerekli İzin verilen değerler Veri akışı betiği özelliği
Güncelleştirme yöntemi Snowflake hedefinizde hangi işlemlere izin verileceğini belirtin.
Satırları güncelleştirmek, eklemek veya silmek için, bu eylemlerin satırlarını etiketlemek için bir Değişiklik satırı dönüştürmesi gerekir.
Yes true veya false deletable
eklenebilir
güncelleştirilebilir
upsertable
Anahtar sütunlar Güncelleştirmeler, upsert'ler ve silmeler için, hangi satırın değiştirileceğini belirlemek için bir anahtar sütun veya sütun ayarlanmalıdır. Hayır Dizi keys
Tablo eylemi Yazmadan önce hedef tablodan tüm satırların yeniden oluşturulmasını veya kaldırılıp kaldırılmayacağını belirler.
- Yok: Tabloda hiçbir eylem yapılmaz.
- Yeniden oluştur: Tablo bırakılır ve yeniden oluşturulur. Dinamik olarak yeni bir tablo oluşturuyorsanız gereklidir.
- Kesme: Hedef tablodaki tüm satırlar kaldırılır.
Hayır true veya false Yeni -den oluşturun
truncate

Snowflake havuz betiği örnekleri

Snowflake veri kümesini havuz türü olarak kullandığınızda, ilişkili veri akışı betiği şöyledir:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	deletable:true,
	insertable:true,
	updateable:true,
	upsertable:false,
	keys:['movieId'],
	format: 'table',
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SnowflakeSink

Satır içi veri kümesi kullanıyorsanız, ilişkili veri akışı betiği şu şekildedir:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	format: 'table',
	tableName: 'table',
	schemaName: 'schema',
	deletable: true,
	insertable: true,
	updateable: true,
	upsertable: false,
	store: 'snowflake',
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SnowflakeSink

Sorgu Anında İletme iyileştirmesi

İşlem hattı Günlük Düzeyi'ni Yok olarak ayarlayarak ara dönüşüm ölçümlerinin iletimini dışlayarak Spark iyileştirmelerine olası engelleri önler ve Snowflake tarafından sağlanan sorgu gönderme iyileştirmesini etkinleştiririz. Bu gönderim iyileştirmesi, kapsamlı veri kümelerine sahip büyük Snowflake tabloları için önemli performans geliştirmeleri sağlar.

Not

Snowflake'de geçici tabloları desteklemiyoruz çünkü bunlar oturum veya bunları oluşturan kullanıcının yerelidir ve diğer oturumlara erişilemez hale gelir ve Snowflake tarafından normal tablolar olarak üzerine yazılmaya eğilimli olur. Snowflake, alternatif olarak küresel olarak erişilebilen geçici tablolar sunsa da, kaynak şemadaki silme işlemlerini önlemek için Temp tablolarını kullanma birincil hedefimizle çelişerek el ile silmeye ihtiyaç duyarlar.

Arama etkinliği özellikleri

Özellikler hakkında daha fazla bilgi için bkz . Arama etkinliği.

Snowflake bağlayıcısını yükseltme

Snowflake bağlayıcısını yükseltmek için yan yana yükseltme veya yerinde yükseltme yapabilirsiniz.

Yan yana yükseltme

Yan yana yükseltme gerçekleştirmek için aşağıdaki adımları tamamlayın:

  1. Yeni bir Snowflake bağlı hizmeti oluşturun ve bağlı hizmet özelliklerine başvurarak bunu yapılandırın.
  2. Yeni oluşturulan Snowflake bağlı hizmetini temel alan bir veri kümesi oluşturun.
  3. Yeni bağlı hizmeti ve veri kümesini, eski nesneleri hedefleyen işlem hatlarında var olanlarla değiştirin.

Yerinde yükseltme

Yerinde yükseltme gerçekleştirmek için mevcut bağlı hizmet yükünü düzenlemeniz ve veri kümesini yeni bağlı hizmeti kullanacak şekilde güncelleştirmeniz gerekir.

  1. Snowflake türünü SnowflakeV2 olarak güncelleştirin.

  2. Bağlı hizmet yükünü eski biçiminden yeni desene değiştirin. Yukarıda belirtilen türü değiştirdikten sonra her alanı kullanıcı arabiriminden doldurabilir veya yükü doğrudan JSON Düzenleyicisi aracılığıyla güncelleştirebilirsiniz. Desteklenen bağlantı özellikleri için bu makaledeki Bağlı hizmet özellikleri bölümüne bakın. Aşağıdaki örneklerde eski ve yeni Snowflake bağlantılı hizmetler için yük farkları gösterilmektedir:

    Eski Snowflake bağlı hizmeti JSON yükü:

      {
         "name": "Snowflake1",
         "type": "Microsoft.DataFactory/factories/linkedservices",
         "properties": {
             "annotations": [],
             "type": "Snowflake",
             "typeProperties": {
                 "authenticationType": "Basic",
                 "connectionString": "jdbc:snowflake://<fake_account>.snowflakecomputing.com/?user=FAKE_USER&db=FAKE_DB&warehouse=FAKE_DW&schema=PUBLIC",
                 "encryptedCredential": "<your_encrypted_credential_value>"
             },
             "connectVia": {
                 "referenceName": "AzureIntegrationRuntime",
                 "type": "IntegrationRuntimeReference"
             }
         }
     }
    

    Yeni Snowflake bağlı hizmet JSON yükü:

     {
         "name": "Snowflake2",
         "type": "Microsoft.DataFactory/factories/linkedservices",
         "properties": {
             "parameters": {
                 "schema": {
                     "type": "string",
                     "defaultValue": "PUBLIC"
                 }
             },
             "annotations": [],
             "type": "SnowflakeV2",
             "typeProperties": {
                 "authenticationType": "Basic",
                 "accountIdentifier": "<FAKE_Account>",
                 "user": "FAKE_USER",
                 "database": "FAKE_DB",
                 "warehouse": "FAKE_DW",
                 "encryptedCredential": "<placeholder>"
             },
             "connectVia": {
                 "referenceName": "AutoResolveIntegrationRuntime",
                 "type": "IntegrationRuntimeReference"
             }
         }
     }
    
  3. Veri kümesini yeni bağlı hizmeti kullanacak şekilde güncelleştirin. Yeni oluşturulan bağlı hizmeti temel alan yeni bir veri kümesi oluşturabilir veya mevcut bir veri kümesinin tür özelliğini SnowflakeTable'dan SnowflakeV2Table'a güncelleştirebilirsiniz.

Snowflake ile Snowflake arasındaki farklar (eski)

Snowflake bağlayıcısı yeni işlevler sunar ve Snowflake (eski) bağlayıcısının çoğu özelliğiyle uyumludur. Aşağıdaki tabloda Snowflake ile Snowflake (eski) arasındaki özellik farklılıkları gösterilmektedir.

Snowflake Snowflake (eski)
Temel ve Anahtar çifti kimlik doğrulama desteği. Temel kimlik doğrulamayı destekleyin.
Betik parametreleri şu anda Betik etkinliğinde desteklenmemektedir. Alternatif olarak, betik parametreleri için dinamik ifadeler kullanın. Daha fazla bilgi için bkz . Azure Data Factory ve Azure Synapse Analytics'teki ifadeler ve işlevler. Betik etkinliğinde betik parametrelerini destekleyin.
Arama etkinliğinde BigDecimal'i destekleyin. Snowflake'de tanımlandığı gibi SAYI türü, Arama etkinliğinde dize olarak görüntülenir. BigDecimal, Arama etkinliğinde desteklenmez.
Eski connectionstring özellik Hesap, Ambar, Veritabanı, Şema ve Rol parametrelerine göre kullanım dışı bırakıldı Eski Snowflake bağlayıcısında connectionstring , özellik bağlantı kurmak için kullanılmıştır.

Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz. desteklenen veri depoları ve biçimleri.