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, lütfen Snowflake bağlayıcınızı 31 Ekim 2024'e kadar yükseltin. 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:
- En iyi performansı elde etmek için Snowflake'in COPY komutunu kullanan Verileri Snowflake'den [location] komutuna kopyalayın.
- En iyi performansı elde etmek için Snowflake'in COPY komutundan yararlanan verileri Snowflake'e kopyalayın. Azure'da Snowflake'i destekler.
- Şirket içinde barındırılan Integration Runtime'dan Snowflake'e bağlanmak için bir ara sunucu gerekiyorsa, Integration Runtime konağından HTTP_PROXY ve HTTPS_PROXY için ortam değişkenlerini yapılandırmanız gerekir.
Ö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:
- Veri Kopyalama aracı
- Azure portal
- .NET SDK'sı
- Python SDK'sı
- Azure PowerShell
- The REST API
- Azure Resource Manager şablonu
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.
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:
Snowflake araması yapın ve Snowflake 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, 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:
Havuz Azure Blob Depolama için desteklenen kimlik doğrulama türleriyle Azure Blob Depolama bağlı bir hizmet oluşturun.
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.compression
sıkıştırma, gzip, bzip2 veya deflate olamaz.encodingName
varsayı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.
compression
sıkıştırma, gzip, bzip2 veya deflate olamaz.encodingName
varsayılan olarak bırakılır veya utf-8 olarak ayarlanır.filePattern
kopyalama 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
.
Kaynakta belirttiğinizde
storageIntegration
, ara hazırlama Azure Blob Depolama Snowflake'deki dış aşamada başvurduğunuz aşama olmalıdır. Desteklenen kimlik doğrulamasıyla bunun için Azure Blob Depolama bağlı bir hizmet oluşturduğunuzdan emin olun ve hazırlama Azure Blob Depolama Erişim Denetimi'nde (IAM) Snowflake hizmet sorumlusuna en az Depolama Blob Verileri Katkıda Bulunanı rolü verin.Kaynakta belirtmediğinizde
storageIntegration
, snowflake COPY komutunun gerektirdiği şekilde hazırlama Azure Blob Depolama bağlı hizmetinin paylaşılan erişim imzası kimlik doğrulamasını kullanması gerekir. Hazırlama Azure Blob Depolama Snowflake'e uygun erişim izni verdiğinden emin olun. Bu konuda daha fazla bilgi edinmek için bu makaleye bakın.
Ö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"
}
}
}
]
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:
Desteklenen tüm kimlik doğrulama türleriyle kaynak Azure Blob Depolama için Azure Blob Depolama bağlı bir hizmet oluşturun.
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 falsefirstRowAsHeader
olması gerekir veskipLineCount
belirtilmez.compression
sı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.
compression
sıkıştırma, gzip, bzip2 veya deflate olamaz.encodingName
varsayı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
,modifiedDateTimeEnd
veenablePartitionDiscovery
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
.
Havuz içinde belirttiğinizde
storageIntegration
, ara hazırlama Azure Blob Depolama Snowflake'deki dış aşamada başvurduğunuz aşama olmalıdır. Desteklenen kimlik doğrulamasıyla bunun için Azure Blob Depolama bağlı bir hizmet oluşturduğunuzdan emin olun ve hazırlama Azure Blob Depolama Erişim Denetimi'nde (IAM) Snowflake hizmet sorumlusuna en az Depolama Blob Veri Okuyucusu rolü verin.Havuz içinde belirtmediğinizde
storageIntegration
, hazırlama Azure Blob Depolama bağlı hizmetinin Snowflake COPY komutunun gerektirdiği şekilde paylaşılan erişim imzası kimlik doğrulamasını kullanması gerekir.
Ö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ğlı hizmetini yükseltme
Snowflake bağlı hizmetini yükseltmek için yeni bir Snowflake bağlı hizmeti oluşturun ve Bağlı hizmet özelliklerine başvurarak bunu yapılandırın.
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. |
Mevcut Snowflake bağlı hizmetinizde kullanılan Snowflake bağlayıcısının sürümünü belirlemek için özelliğini denetleyin type
. Eski sürüm tarafından "type": "Snowflake"
tanımlanırken en son V2 sürümü tarafından "type": "SnowflakeV2"
tanımlanır.
V2 sürümü, eski sürüm üzerinde aşağıdakiler dahil olmak üzere çeşitli geliştirmeler sunar:
Otomatik ölçeklendirme: Kaynakları trafik yüküne göre otomatik olarak ayarlar.
Çoklu Kullanılabilirlik Alanı İşlemi: Birden çok kullanılabilirlik alanında çalışarak dayanıklılık sağlar.
Statik IP Desteği: Statik IP adreslerinin kullanılmasına izin vererek güvenliği artırır.
İlgili içerik
Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz. desteklenen veri depoları ve biçimleri.