适用于:
Databricks SQL
Databricks Runtime
重要
此功能目前以公共预览版提供。
返回在远程数据库引擎上执行的查询的表格结果。
remote_query 使用 连接凭据从远程系统提取数据。
该函数接受一组连接器选项,因此除了查询选项之外,还有其他选项。
此函数需要命名参数调用。
Syntax
remote_query(connectionName [, connectorOptionKey => connectorOptionValue ] [...])
Arguments
-
必需的
STRING字面量,用于引用 Unity Catalog 的连接名称。 如果连接名称不存在,Databricks 会引发 CONNECTION_NOT_FOUND。支持以下连接:
- BigQuery
- MySQL
- Oracle
- PostgreSQL
- Redshift
- Snowflake
- SQL Server
- Teradata
如果不支持
CONNECTION_TYPE_NOT_SUPPORTED_FOR_REMOTE_QUERY_FUNCTION,则会引发错误。 connectorOptionKey连接器选项密钥,它是区分大小写的标识符。 每个连接类型都有相应的必需选项(与 SQL 数据库的连接需要
query或table选项,而 NoSQL 数据库需要collection选项)和其他可选配置选项(例如 MySQL、PostgreSQL、SQLServer 和其他类似 JDBC 的连接支持fetchSize,用于配置正在提取的批大小)。 如果密钥不受支持,将引发PARAMETER_NOT_SUPPORTED_FOR_REMOTE_QUERY_FUNCTION。connectorOptionValue表示连接器选项值的 常量表达式 。
退货
返回一个表。 输出架构依赖于在远程系统上扫描的查询或表。
注释
此函数不可用于流式查询(UNSUPPORTED_STREAMING_TABLE_VALUED_FUNCTION)。
例子
-- Simple example with MySQL connection
> SELECT a, b FROM remote_query('mysql_connection', query => 'SELECT * FROM mysql_database.mysql_table WHERE sin(b) = 0.5');
a b
angle_1 30
-- Simple example with MongoDB (NoSQL) connection
> SELECT a, b FROM remote_query('mongo_connection', collection => 'collection1', pipeline => '[{''$match'': {''b'': 30}}]');
a b
angle_1 30
-- Connection name does not exist
> SELECT * FROM remote_query('non_existent_uc_connection', query => '');
Error: CONNECTION_NOT_FOUND
-- Connection type is not supported
> SELECT * FROM remote_query('google_drive_connection', query => '');
Error: CONNECTION_TYPE_NOT_SUPPORTED_FOR_REMOTE_QUERY_FUNCTION
相关函数
- http_request - 类似,因为它还使用 Unity 目录连接凭据将 HTTP 请求发送到特定 API
- CREATE CONNECTION
- ALTER CONNECTION
- DROP CONNECTION