Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
işlevini kullanarak dış veritabanlarını
Önemli
Bu özellik Genel Önizleme aşamasındadır.
remote_query Tablo değerli işlevi (TVF), uzak sistemin yerel SQL söz dizimini kullanarak Doğrudan Azure Databricks'in içinden dış veritabanlarına ve veri ambarlarına karşı SQL sorguları çalıştırmanızı sağlar. Bu işlev, sorgu federasyonuna esnek bir alternatif sağlayarak uzak veritabanının diyalektinde yazılan sorguları Databricks SQL'e çevirmenize gerek kalmadan çalıştırmanıza olanak tanır.
remote_query sorgu federasyonuyla karşılaştırıldığında
Aşağıdaki tabloda, remote_query işlevi ve sorgu federasyonu arasındaki temel farklar özetlenmektedir.
| Özellik |
remote_query fonksiyon |
Sorgu Birleşimi |
|---|---|---|
| Sorgu söz dizimi | Uzak veritabanının yerel SQL diyalektini kullanarak sorgular yazın (örneğin, Oracle PL/SQL, BigQuery SQL). | Databricks SQL söz dizimlerini kullanarak sorgular yazın. Databricks, uyumlu işlemleri çevirir ve uzak veritabanına iletir. |
| Kullanım örneği |
|
|
| Erişim denetimi | Bağlantı üzerinde USE CONNECTION yetkisine sahip olmaları gerekir. İzin, görünümler aracılığıyla devredilebilir. |
Kullanıcıların yabancı katalog nesnelerinde tablo düzeyinde ayrıcalıklara sahip olması gerekir. Ayrıntılı denetim. |
Başlamadan önce
Çalışma alanı gereksinimleri:
- Unity Kataloğu için etkinleştirilen çalışma alanı.
İşlem gereksinimleri:
- Databricks Runtime kümenizden veya SQL ambarından hedef veritabanı sistemlerine ağ bağlantısı. Bkz: Lakehouse Federasyonu için Ağ Önerileri.
- Azure Databricks kümeleri Databricks Runtime 17.3 veya üzerini kullanmalıdır.
- SQL ambarları Pro veya Sunucusuz olmalıdır ve sürüm 2025.35 veya üzerini kullanmalıdır.
Gerekli izinler:
- Bağlantı oluşturmak için Unity Kataloğu meta veri deposunda ayrıcalığınız olmalıdır
CREATE CONNECTION. -
remote_queryişlevini kullanmak için, bağlantıdaUSE CONNECTIONayrıcalığına sahip olmalısınız veya işlevi saran bir görünümdeSELECTayrıcalığına sahip olmalısınız. Tek kullanıcılı kümeler ayrıca bağlantı üzerindekiMANAGEiznini gerektirir.
Bağlantı oluştur
işlevini kullanmak remote_query için önce dış veritabanınıza bir Unity Kataloğu bağlantısı oluşturmanız gerekir. Sorgu federasyonu için zaten oluşturulmuş bir bağlantınız varsa, yeniden kullanabilirsiniz.
remote_query işlevi aşağıdaki bağlantı türlerine bağlantıları destekler:
Mevcut bağlantıları yönetme hakkında bilgi için bkz Lakehouse Federation için Bağlantıları Yönetme.
Bağlantı erişimi verme
remote_query işlevini kullanmak için, bağlantıda USE CONNECTION ayrıcalığına sahip olmanız gerekir (veya tek kullanıcılı kümelerde MANAGE ayrıcalığı).
GRANT USE CONNECTION ON CONNECTION <connection-name> TO <user-or-group>;
remote_query işlevini kullanma
İşlev uzak remote_query veritabanında bir sorgu çalıştırır ve sonuçları Databricks SQL sorgularında kullanabileceğiniz bir tablo olarak döndürür.
Sözdizimi
SELECT * FROM remote_query(
'<connection-name>',
<option-key> => '<option-value>'
[, <option-key> => '<option-value>' ...]
)
Gerekli parametreler
-
connection-name: Kullanılacak Unity Kataloğu bağlantısının adı.
Diğer tüm gerekli parametreler bağlantı türüne göre değişir. Ayrıntılar için bkz . Bağlayıcıya özgü seçenekler .
Bağlayıcıya özgü seçenekler
Kullanılabilir seçenekler bağlantı türüne göre değişir. Aşağıdaki tablolarda her bağlayıcı için seçenekler açıklanmaktadır.
MySQL, PostgreSQL, SQL Server, Redshift ve Teradata
| Parametre | Gerekli | Description |
|---|---|---|
database |
Yes | Uzak sistemdeki veritabanı adı. |
query |
Evet (veya dbtable) |
Uzak veritabanında çalıştırılacak bir SQL sorgu dizesi.
dbtable ile kullanılamaz. |
dbtable |
Evet (veya query) |
Sorgu için tablo adı.
query ile kullanılamaz. |
fetchsize |
Hayı | Gidiş dönüş başına getirilecek satır sayısı. Daha büyük değerler performansı artırabilir ancak daha fazla bellek kullanabilir. Varsayılan: 0 (sürücü varsayılanı kullan). |
partitionColumn |
Hayı | Paralel veri getirme için kullanılacak tekdüzen dağıtılmış değerlere sahip bir sütun.
lowerBound, upperBound, ve numPartitions ile kullanılmalıdır. seçeneğiyle query kullanılamaz. |
lowerBound |
Hayı | Bölüm sütununun minimum değeri.
partitionColumn, upperBound, ve numPartitions ile kullanılmalıdır. |
upperBound |
Hayı | Bölüm sütununun en büyük değeri.
partitionColumn, lowerBound, ve numPartitions ile kullanılmalıdır. |
numPartitions |
Hayı | Veri getirmek için kullanılacak paralel bağlantı sayısı. Bunu çok yüksek (yüzlerce) olarak ayarlamayın.
partitionColumn, lowerBound, ve upperBound ile kullanılmalıdır. |
Uyarı
Bölüm parametrelerini kullandığınızda, dört parametrenin de (partitionColumn, lowerBound, upperBound, numPartitions) birlikte belirtilmesi ve yerine seçeneğini dbtablekullanmanız query gerekir.
Oracle
| Parametre | Gerekli | Description |
|---|---|---|
service_name |
Yes | Oracle hizmet adı (yerine databasekullanılır). |
query |
Evet (veya dbtable) |
Uzak veritabanında çalıştırılacak bir SQL sorgu dizesi.
dbtable ile kullanılamaz. |
dbtable |
Evet (veya query) |
Sorgu için tablo adı.
query ile kullanılamaz. |
fetchsize |
Hayı | Gidiş dönüş başına getirilecek satır sayısı. Daha büyük değerler performansı artırabilir ancak daha fazla bellek kullanabilir. Varsayılan: 0 (sürücü varsayılanı kullan). |
partitionColumn |
Hayı | Paralel veri getirme için kullanılacak tekdüzen dağıtılmış değerlere sahip bir sütun.
lowerBound, upperBound, ve numPartitions ile kullanılmalıdır. seçeneğiyle query kullanılamaz. |
lowerBound |
Hayı | Bölüm sütununun minimum değeri.
partitionColumn, upperBound, ve numPartitions ile kullanılmalıdır. |
upperBound |
Hayı | Bölüm sütununun en büyük değeri.
partitionColumn, lowerBound, ve numPartitions ile kullanılmalıdır. |
numPartitions |
Hayı | Veri getirmek için kullanılacak paralel bağlantı sayısı. Bunu çok yüksek (yüzlerce) olarak ayarlamayın.
partitionColumn, lowerBound, ve upperBound ile kullanılmalıdır. |
Uyarı
Bölüm parametrelerini kullandığınızda, dört parametrenin de (partitionColumn, lowerBound, upperBound, numPartitions) birlikte belirtilmesi ve yerine seçeneğini dbtablekullanmanız query gerekir.
Snowflake
| Parametre | Gerekli | Description |
|---|---|---|
database |
Yes | Snowflake'deki veritabanı adı. |
query |
Evet (veya dbtable) |
Uzak veritabanında çalıştırılacak bir SQL sorgu dizesi.
dbtable ile kullanılamaz. |
dbtable |
Evet (veya query) |
Sorgu için tablo adı (tek parçalı ad veya çok parçalı ad).
query ile kullanılamaz. |
schema |
Hayı | Snowflake'teki şema adı. Varsayılan: public. |
query_timeout |
Hayı | Sorgu zaman aşımı süresi saniye olarak. Varsayılan: 0 (zaman aşımı yok). |
partition_size_in_mb |
Hayı | Paralel veri getirme için megabayt cinsinden beklenen bölüm boyutu. Varsayılan: 100 MB. |
BigQuery
| Parametre | Gerekli | Description |
|---|---|---|
query |
Evet (veya dbtable) |
Uzak veritabanında çalıştırılacak bir SQL sorgu dizesi.
dbtable ile kullanılamaz. |
dbtable |
Evet (veya query) |
Sorgu için tablo adı.
query ile kullanılamaz. |
materializationDataset |
Evet, sonuçların malzeme haline getirilmesi gerekiyorsa. Eğer query belirtilirse ve dbtable bir görünüme işaret ederse gerçekleştirme gerekir. |
Geçici tabloların oluşturulduğu BigQuery veri kümesinin adı. Geçici tabloların varsayılan yaşam süresi (TTL) 24 saattir. |
materializationProject |
Hayı | Gerçekleştirme işlemi için BigQuery proje kimliği. Bağlantıda belirtilen projeyi varsayılan ayar olarak kullanır. |
materializationEnabled |
Hayı | Sorgular için canlandırmanın etkinleştirilip etkinleştirilmemesi. Sorgu görünümlerini true olarak ayarlayın. Varsayılan: false belirtilirse dbtable , true belirtilirse query . |
parentProject |
Hayı | Faturalama amacıyla ana proje kimliği. |
Önemli
Tüm BigQuery parametreleri büyük/küçük harfe duyarlıdır.
İlave pushdown kontrol seçenekleri
İşlevi remote_query Databricks SQL işlemleriyle birleştirebilirsiniz ve bu işlemlerin çoğu da aşağı gönderilebilir. Ayrıca hangi Databricks SQL işlemlerinin aşağı gönderilebileceğini de denetleyebilirsiniz. Bu seçenekler tüm bağlantı türleri için geçerlidir ve büyük/küçük harfe duyarlı değildir.
| Parametre | Varsayılan | Description |
|---|---|---|
pushdown.limit.enabled |
true |
Uzak veritabanına LIMIT ifadelerini aktarmayı etkinleştirin veya devre dışı bırakın. |
pushdown.offset.enabled |
true |
Uzak veritabanına OFFSET ifadelerini aktarmayı etkinleştirin veya devre dışı bırakın. |
pushdown.filters.enabled |
true |
Uzak veritabanına aşağıya doğru WHERE filtrelerin iletimini etkinleştirin veya devre dışı bırakın. |
pushdown.aggregates.enabled |
true |
Toplama işlevlerini (COUNT, SUM, , AVG, MAXMIN) uzak veritabanına göndermeyi etkinleştirin veya devre dışı bırakın. |
pushdown.sortLimit.enabled |
true |
Uzak veritabanına üst N sorgularını (ve ORDER BYbirleşimiLIMIT) göndermeyi etkinleştirin veya devre dışı bırakın. |
Varsayılan olarak, tüm düşürmeler etkinleştirilir. Gerekirse belirli işlemleri devre dışı bırakabilir, sorun gidermek veya belirli uzak veritabanlarıyla uyumluluk problemlerini aşabilirsiniz.
Görünümler aracılığıyla erişim yetkilendirme
İşlevi bir görünümde sarmalayarak, USE CONNECTION kullanıcılara doğrudan remote_query ayrıcalıklar vermeden uzak verilere erişim yetkisi tanıyabilirsiniz. Bu yaklaşımın aşağıdaki avantajları vardır:
-
Basitleştirilmiş erişim denetimi:
SELECTayrıcalığı görünümde verin,USE CONNECTIONayrıcalıklarını yönetmek yerine. - Veri güvenliği: Kullanıcıların görünüm sorgusunu tanımlayarak hangi sütun ve satırlara erişebileceğini kontrol edin.
- Kökeni izleme: Doğrudan bağlantı kullanımı yerine kökenleri görüntüleme yoluyla veri erişimini izleyin.
Bir görünüm aracılığıyla erişim yetkisi vermek için:
İşlevi
remote_queryçağıran bir görünüm oluşturun:CREATE VIEW sales_data_view AS SELECT * FROM remote_query( 'my_connection', database => 'sales_db', query => 'SELECT region, product, revenue FROM sales' );Kullanıcılara veya gruplara görünümde ayrıcalık verin
SELECT:GRANT SELECT ON VIEW sales_data_view TO <user-or-group>;Kullanıcılar artık
USE CONNECTIONayrıcalığına gerek kalmadan görünümü sorgulayabilir.SELECT * FROM sales_data_view WHERE region = 'US';
Önemli
Görünüm sahibinin bağlantı üzerinde USE CONNECTION ayrıcalığı olmalıdır. Kullanıcılar görünümü sorguladığında, bağlantı erişim denetimi sorgulayan kullanıcının ayrıcalıklarını değil görünüm sahibinin ayrıcalıkları kullanılarak gerçekleştirilir.
Örnekler
Temel sorgu yürütme
PostgreSQL veritabanında sorgu yürütme:
SELECT * FROM remote_query(
'my_postgres_connection',
database => 'sales_db',
query => 'SELECT * FROM orders WHERE order_date > CURRENT_DATE - INTERVAL \'30 days\''
);
Belirli bir tabloyu sorgulama
MySQL tablosunu doğrudan sorgula:
SELECT * FROM remote_query(
'my_mysql_connection',
database => 'inventory',
dbtable => 'my_schema.products'
);
Hizmet adıyla Oracle
Oracle veritabanını sorgulama:
SELECT * FROM remote_query(
'my_oracle_connection',
service_name => 'ORCL',
query => 'SELECT * FROM customers WHERE ROWNUM <= 1000'
);
BigQuery sorgusu
Google BigQuery'i sorgulama:
SELECT * FROM remote_query(
'my_bigquery_connection',
materializationDataset => 'analytics',
query => 'SELECT * FROM `project.dataset.table` WHERE created_date > DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)'
);
Snowflake sorgusu
Snowflake’i Sorgulamak
SELECT * FROM remote_query(
'my_snowflake_connection',
database => 'ANALYTICS_DB',
query => 'SELECT * FROM SALES WHERE SALE_DATE >= DATEADD(day, -30, CURRENT_DATE())'
);
Bölümleme ile performans ayarlama
SQL Server tablosundan paralel olarak veri getirme:
SELECT * FROM remote_query(
'my_sqlserver_connection',
database => 'sales',
dbtable => 'transactions',
partitionColumn => 'transaction_id',
lowerBound => '0',
upperBound => '1000000',
numPartitions => '10',
fetchsize => '1000'
);
Databricks SQL işlemleriyle birleştir
Ek filtreler ve dönüştürmeler uygulayın:
SELECT customer_id, SUM(amount) as total_amount
FROM remote_query(
'my_postgres_connection',
database => 'orders_db',
query => 'SELECT customer_id, amount, order_date FROM orders'
)
WHERE order_date >= '2025-01-01'
GROUP BY customer_id
HAVING total_amount > 1000
ORDER BY total_amount DESC
LIMIT 100;
Temsilci erişimi için görünüm oluşturma
remote_query işlevini saran bir görünüm oluşturun. Görünüm üzerinde SELECT ayrıcalığına sahip olan kullanıcılar, alttaki bağlantıda USE CONNECTION ayrıcalığına ihtiyaç duymadan verileri sorgulayabilir.
CREATE VIEW sales_summary AS
SELECT * FROM remote_query(
'my_mysql_connection',
database => 'sales',
query => 'SELECT region, product, SUM(revenue) as total_revenue FROM sales_data GROUP BY region, product'
);
GRANT SELECT ON VIEW sales_summary TO <user-or-group>;
Aşağı gönderme davranışını denetleme
işlevini kullandığınızda remote_query Databricks, belirttiğiniz sorgunun ötesinde uzak veritabanına ek işlemler gönderebilir. Bu özellik, işlevini kullanan remote_query bir görünümü sorguladığınızda kullanışlıdır.
Aşağıdaki işlemler aşağı gönderilebilir:
-
Filtreler:
WHEREuzak sorgu sonucuna uygulanan cümleler -
Projeksiyonlar: Sütun seçimi (
SELECTbelirli sütunlar) -
Sınır:
LIMITdöndürülen satır sayısını kısıtlamak için ifadeler -
Ofset:
OFFSETSatırları atlamak için koşullar -
Toplamalar:
COUNT,SUM,AVG,MAXgibi toplam işlevleriMIN -
Top-N: İlk/alt N sorguları için
ORDER BYveLIMITbirleşimi
İtme desteği veri kaynağına bağlı olarak değişiklik gösterir. Ayrıntılar için belirli bağlantı türünüzle ilgili belgelere bakın.
Sorun giderme veya uyumluluk amacıyla belirli yayılma seçeneklerini devre dışı bırakın:
SELECT * FROM remote_query(
'my_postgres_connection',
database => 'analytics',
query => 'SELECT * FROM complex_view',
`pushdown.aggregates.enabled` => 'false',
`pushdown.filters.enabled` => 'false'
);
Sınırlamalar
Salt okunur işlemler:
remote_queryişlevi yalnızcaSELECTsorgularını destekler. Veri değiştirme işlemleri (INSERT, UPDATE, DELETE, MERGE), DDL işlemleri (CREATE, DROP, ALTER) ve saklı yordamlar desteklenmez.Sorgu doğrulama: Sağladığınız sorgu doğrudan uzak veritabanında yürütülür. Databricks şema incelemesi gerçekleştirerek sorgunun salt okunur olduğunu doğrular, ancak söz dizimi ve anlam doğrulama uzak veritabanı tarafından gerçekleştirilir.
Sorun giderme
İzin hataları
İzin hatası alırsanız şunları doğrulayın:
- Bağlantı üzerinde
USE CONNECTIONveya işlevi sarmalayan bir görünüm üzerindeSELECTayrıcalığınız vardır. - Bağlantıdaki kimlik bilgileri uzak veritabanında uygun izinlere sahiptir.
Örnek hata:
PERMISSION_DENIED: User does not have USE CONNECTION on Connection 'my_connection'
Çözüm:
GRANT USE CONNECTION ON CONNECTION my_connection TO <user-or-group>;
Desteklenmeyen parametreler
Desteklenmeyen parametrelerle ilgili bir hata alırsanız, bağlantı türünüz için doğru parametreleri kullanıp kullanmadığınıza bakın. Hata iletisinde izin verilen parametreler listelenir.
Örnek hata:
REMOTE_QUERY_FUNCTION_UNSUPPORTED_CONNECTOR_PARAMETERS: The following parameters are not supported for connection type 'postgresql': 'materializationDataset'. Allowed parameters for this connection type are: 'database', 'query', 'dbtable', 'fetchsize', 'partitionColumn', 'lowerBound', 'upperBound', 'numPartitions'.
Çözüm: Desteklenmeyen parametreyi kaldırın ve bağlantı türünüz için doğru parametreleri kullanın.
DML işlemleri desteklenmiyor
remote_query işlevi yalnızca salt okunur SELECT sorguları destekler.
Örnek hata:
DML_OPERATIONS_NOT_SUPPORTED_FOR_REMOTE_QUERY_FUNCTION: Data modification operations are not supported in remote_query function.
Çözüm: Sorgunuzdan tüm INSERT, UPDATE, DELETE veya DDL deyimlerini kaldırın. Yalnızca SELECT deyimlerini kullanın.