Snowflake üzerinde federasyon sorguları çalıştırma (OAuth)

Bu sayfada, Azure Databricks tarafından yönetilmeyen Snowflake verilerinde federasyon sorguları çalıştırmak için Lakehouse Federasyon'un nasıl ayarlanacağı açıklanır. Lakehouse Federasyonu hakkında daha fazla bilgi edinmek için bkz. Lakehouse Federasyonu nedir?

Lakehouse Federation kullanarak Snowflake veritabanınıza bağlanmak için Azure Databricks Unity Kataloğu meta veri deponuzda aşağıdakileri oluşturmanız gerekir (9 Kasım 2023'den sonra oluşturulan çalışma alanlarında zaten otomatik olarak sağlanan bir Unity Kataloğu meta deposu vardır):

  • Snowflake veritabanınızla bağlantı.
  • Unity Kataloğu sorgu söz dizimini ve veri idare araçlarını kullanarak Azure Databricks kullanıcısının veritabanına erişimini yönetebilmeniz için Unity Kataloğu'ndaki Snowflake veritabanınızı yansıtan bir yabancı katalog.

Bu sayfa, Snowflake'in yerleşik OAuth tümleştirmesini kullanarak Snowflake verileri üzerinde federasyon sorguları çalıştırmayı kapsar. Diğer kimlik doğrulama yöntemleri için aşağıdaki sayfalara bakın:

Sorgu federasyonu veya katalog federasyonu kullanarak Snowflake üzerinde federasyon sorguları çalıştırabilirsiniz.

Sorgu federasyonunda JDBC, Unity Kataloğu sorgusunu dış veritabanına iletir. Bu, ETL işlem hatlarınızda isteğe bağlı raporlama veya kavram kanıtı çalışmaları için idealdir.

Katalog federasyonunda Unity Kataloğu sorgusu doğrudan dosya depolamaya karşı çalışır. Bu yaklaşım, Unity Kataloğu'nda kayıtlı verilerinin yanı sıra Snowflake'te bazı verileri tutması gereken kuruluşlar için kod uyarlaması olmadan veya daha uzun vadeli bir karma model olarak artımlı geçiş için yararlıdır. Bkz. Snowflake katalog federasyonunu etkinleştirme.

Sorgu Birleşimi

başlamadan önce

Çalışma alanı gereksinimleri:

  • Unity Kataloğu için etkinleştirilen çalışma alanı. Otomatik meta veri deposu sağlama dahil olmak üzere, 9 Kasım 2023'den sonra oluşturulan çalışma alanları Unity Kataloğu için otomatik olarak etkinleştirilir. Çalışma alanınız otomatik etkinleştirmeden önce gelmediği ve Unity Kataloğu için etkinleştirilmediği sürece el ile meta veri deposu oluşturmanız gerekmez. Bkz. Unity Kataloğunun otomatik olarak etkinleştirilmesi.

İşlem gereksinimleri:

  • İşlem kaynağınızdan hedef veritabanı sistemlerine ağ bağlantısı. Bkz: Lakehouse Federasyonu için Ağ Önerileri.
  • Azure Databricks hesaplama, Databricks Runtime 13.3 LTS veya üzerini kullanmalıdır ve Standart veya Özel erişim modunu kullanmalıdır.
  • SQL ambarları profesyonel veya sunucusuz olmalı ve 2023.40 veya üzerini kullanmalıdır.

Gerekli izinler:

  • Bağlantı oluşturmak için meta veri deposu yöneticisi veya çalışma alanına bağlı Unity Kataloğu meta veri deposunda CREATE CONNECTION ayrıcalığına sahip bir kullanıcı olmanız gerekir. Unity Kataloğu için otomatik olarak etkinleştirilen çalışma alanlarında, çalışma alanı yöneticileri varsayılan olarak ayrıcalıklara CREATE CONNECTION sahiptir.
  • Yabancı katalog oluşturmak için meta veri deposunda CREATE CATALOG iznine sahip olmanız ve bağlantının sahibi olmanız veya bağlantıda CREATE FOREIGN CATALOG ayrıcalığına sahip olmanız gerekir. Unity Kataloğu için otomatik olarak etkinleştirilen çalışma alanlarında, çalışma alanı yöneticileri varsayılan olarak ayrıcalıklara CREATE CATALOG sahiptir.

Aşağıdaki her görev tabanlı bölümde ek izin gereksinimleri belirtilir.

Güvenlik tümleştirmesi oluşturma

Snowflake konsolunda komutunu çalıştırın CREATE SECURITY INTEGRATION. Aşağıdaki değerleri değiştirin:

  • <integration-name>: OAuth entegrasyonunuz için benzersiz bir ad.

  • <workspace-url>: Azure Databricks çalışma alanı URL'si. OAUTH_REDIRECT_URI'yı https://<workspace-url>/login/oauth/snowflake.html olarak ayarlamanız gerekir, burada <workspace-url> Snowflake bağlantısını oluşturacağınız Azure Databricks çalışma alanının benzersiz URL'sidir.

  • <duration-in-seconds>: Yenileme belirteçleri için bir zaman uzunluğu.

    Important

    OAUTH_REFRESH_TOKEN_VALIDITY varsayılan olarak 90 gün olarak ayarlanmış özel bir alandır. Yenileme belirtecinin süresi dolduktan sonra bağlantının kimliğini yeniden doğrulamanız gerekir. Alanı makul bir süre uzunluğuna ayarlayın.

Örneğin:

CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;

Bağlantı oluşturma

Bağlantı, bir dış veritabanı sistemine erişmek için bir yol ve kimlik bilgileri belirtir. Bağlantı oluşturmak için, Bir Azure Databricks not defterinde veya Databricks SQL sorgu düzenleyicisinde Katalog Gezgini'ni veya CREATE CONNECTION SQL komutunu kullanabilirsiniz.

Note

Bağlantı oluşturmak için Databricks REST API'sini veya Databricks CLI'yi de kullanabilirsiniz. bkz. POST /api/2.1/unity-catalog/connections ve Unity Catalog komutları.

Gerekli izinler: Meta veri deposu yöneticisi veya ayrıcalığına CREATE CONNECTION sahip kullanıcı.

  1. Azure Databricks çalışma alanınızda Veri simgesine tıklayın.Katalog'a gidin.

  2. Katalog bölmesinin üst kısmında Ekle veya artı simgesi Ekle simgesine tıklayın ve menüden Bağlantı oluştur'u seçin.

  3. Bağlantı temel bilgileri sayfasında, Bağlantı ayarlama sihirbazını açın ve kullanıcı dostu bir Bağlantı adıgirin.

  4. Snowflake bağlantı türünü seçin.

  5. Kimlik doğrulaması türü'nü, açılan menüden OAuth olarak seçin.

  6. (İsteğe bağlı) Açıklama ekleyin.

  7. Nextöğesine tıklayın.

  8. Snowflake ambarınız için aşağıdaki kimlik doğrulamasını ve bağlantı ayrıntılarını girin.

    • Konak: Örneğin, snowflake-demo.east-us-2.azure.snowflakecomputing.com

    • Bağlantı noktası: Örneğin, 443

    • Kullanıcı: Örneğin, snowflake-user

    • İstemci Kimliği: Snowflake konsolunda komutunu çalıştırarak SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>') güvenlik tümleştirmesi için istemci kimliğini alın.

    • İstemci gizli anahtar: SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>') komutunu çalıştırarak Snowflake konsolunda güvenlik tümleştirmesi için istemci gizli anahtarını alın.

    • OAuth kapsamı: refresh_token session:role:<role-name>. <role-name> içinde kullanılacak Snowflake rolünü belirtin.

    • Snowflake ile oturum açın: OAuth kimlik bilgilerinizi kullanarak Snowflake'e tıklayın ve oturum açın.

      Oturum başarıyla açıldıktan sonra, Bağlantı ayarlama sihirbazına geri yönlendirilirsiniz.

  9. Bağlantıoluştur'a tıklayın.

  10. Katalog Temel Bilgileri sayfasında, yabancı katalog için bir ad girin. Yabancı bir katalog, dış bir veri sistemindeki veritabanını yansıtarak bu veritabanındaki verilere Azure Databricks ve Unity Kataloğu kullanarak sorgulama yapmanıza ve erişimi yönetmenize olanak tanır.

  11. (İsteğe bağlı) Çalıştığını onaylamak için Bağlantıyı test et'e tıklayın.

  12. tıklayın, katalog oluştur.

  13. Access sayfasında, kullanıcıların oluşturduğunuz kataloğa erişebileceği çalışma alanlarını seçin. Tüm çalışma alanları erişilebilirseçebilir veya Çalışma alanına ata'ya tıklayın, çalışma alanlarını seçin ve ardından Atatıklayın.

  14. Tüm katalog nesnelerine erişimi yönetebilecek Sahibi'i değiştirin. Metin kutusuna bir ana unsur yazmaya başlayın ve çıkan sonuçlardan ana unsura tıklayın.

  15. Katalogda Ayrıcalıkları tanımlayın. Grant'e tıklayın

    1. Katalogdaki nesnelere erişimi olacak Sorumlularını belirtin. Metin kutusuna bir ana unsur yazmaya başlayın ve çıkan sonuçlardan ana unsura tıklayın.
    2. İmtiyaz ön ayarlarını her bir sorumluya vermek için seçin. Tüm hesap kullanıcılarına varsayılan olarak BROWSE verilir.
      • Katalogdaki nesnelerde ayrıcalıkları vermek için açılan menüden veri okuyucu seçin.
      • Katalogdaki nesnelerde ve read ayrıcalıkları vermek için açılan menüden modify seçin.
      • Vermek istediğiniz ayrıcalıkları el ile seçin.
    3. İzin Ver'e tıklayın.
  16. Nextöğesine tıklayın.

  17. Meta Veri sayfasında, etiketlerin anahtar-değer çiftlerini belirtin. Daha fazla bilgi için bkz. Unity Kataloğu'ndaki güvenli nesnelere etiket uygulama.

  18. (İsteğe bağlı) Açıklama ekleyin.

  19. Kaydet'e tıklayın.

Büyük/küçük harfe duyarlı veritabanı tanımlayıcıları

Yabancı database kataloğun alanı Snowflake veritabanı tanımlayıcısına eşlenir. Snowflake veritabanı tanımlayıcısı büyük/küçük harfe duyarlı değilse, yabancı katalog <database-name> içindeki kullandığınız harf biçimi olduğu gibi korunur. Ancak Snowflake veritabanı tanımlayıcısı büyük/küçük harfe duyarlıysa, olayı korumak için yabancı kataloğu <database-name> çift tırnak içine almalısınız.

Örneğin:

  • database olarak dönüştürülür DATABASE

  • "database" olarak dönüştürülür database

  • "database""" olarak dönüştürülür database"

    Çift tırnak işaretinden kaçınmak için bir çift tırnak daha kullanın.

  • "database"" çift tırnağın doğru şekilde kaçış karakteri kullanılmadığından hatayla sonuçlanır.

Daha fazla bilgi için Snowflake belgelerindeki Tanımlayıcı gereksinimleri bölümüne bakın.

Desteklenen baskılar

Aşağıdaki baskılamalar desteklenir:

  • Filters
  • Projections
  • Limit
  • Joins
  • Toplamalar (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
  • İşlevler (Dize işlevleri, Matematiksel işlevler, Veri, Zaman ve Zaman Damgası işlevleri ve Alias, Cast, SortOrder gibi diğer çeşitli işlevler)
  • Windows işlevleri (DenseRank, Rank, RowNumber)
  • Sorting

Veri türü eşlemeleri

Snowflake'ten Spark'a okuma yaptığınızda veri türleri aşağıdaki gibi eşlenir:

Kar tanesi türü Spark türü
ondalık, sayı, sayısal DecimalType
bigint, byteint, int, integer, küçükint, minikint IntegerType
float, float4, float8 (programlama veri türleri) FloatType
çift, çift hassasiyet, gerçek sayı DoubleType
char, karakter, string, metin, zaman, varchar StringType
binary BinaryType
boolean BooleanType
date DateType
datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz TimestampType

Sorgu federasyon sınırlamaları

  • Snowflake OAuth uç noktasına Azure Databricks denetim düzlemi IP'lerinden erişilebilir olmalıdır. Bkz. Azure Databricks denetim düzleminden giden IP'ler. Snowflake, azure Databricks denetim düzleminden yetkilendirme için OAuth uç noktasına doğrudan bağlantı sağlayan ayrı bir ağ ilkesi sağlayan güvenlik tümleştirme düzeyinde ağ ilkelerini yapılandırmayı destekler.
  • Proxy Kullan, Proxy sunucu, Proxy bağlantı noktası ve Snowflake rol yapılandırma seçenekleri desteklenmez. OAuth kapsamının bir parçası olarak Snowflake rolünü belirtin.

Ek kaynaklar

Snowflake belgelerinde aşağıdaki makalelere bakın: