Snowflake (已弃用)
Snowflake 使数据存储、处理和分析解决方案比传统产品/服务更快、更易于使用且更灵活。
此连接器在以下产品和区域中可用:
| 服务 | Class | 区域 |
|---|---|---|
| 逻辑应用程序 | 标准 | 除以下各项外的所有 逻辑应用区域 : - Azure 政府区域 - Azure 中国区域 - 美国国防部(DoD) |
| Power Automate | 高级 | 除以下各项外的所有 Power Automate 区域 : - 美国政府 (GCC) - 美国政府 (GCC High) - 由世纪互联运营的中国云 - 美国国防部(DoD) |
| Power Apps | 高级 | 除以下各项外的所有 Power Apps 区域 : - 美国政府 (GCC) - 美国政府 (GCC High) - 由世纪互联运营的中国云 - 美国国防部(DoD) |
| 联系人 | |
|---|---|
| Name | Snowflake |
| URL | https://www.snowflake.com/support |
| support@snowflake.com |
| 连接器元数据 | |
|---|---|
| 发布者 | Snowflake Inc. |
| 网站 | https://www.snowflake.com |
| 隐私策略 | https://www.snowflake.com/privacy-policy |
| 类别 | Data |
注释
此连接器已弃用,请使用此连接器的增强替代方法: Snowflake(预览版)连接器
此连接器基于 Snowflake SQL REST API。 Snowflake 的数据云由作为自助服务提供的高级数据平台提供支持。 Snowflake 支持数据存储、处理和分析解决方案,这些解决方案比传统产品/服务更快、更易于使用且更灵活。 连接器使用 Snowflake REST API V2 提交同步和异步查询并检索相应的结果。
先决条件
提供有关使用此连接器所需的任何先决条件的信息。 例如,网站或付费服务计划上的帐户。
如何获取凭据
按照以下步骤为 Snowflake 设置Microsoft Entra ID 身份验证:
- 在步骤 1:在 Microsoft Entra ID 中配置 OAuth 资源,请按照步骤 1-10 按照以下说明定义范围
SESSION:ROLE-ANY。 - 在 步骤 2:在 Microsoft Entra ID 中创建 OAuth 客户端,请遵循步骤 1-13。
- 导航到 身份验证 ->平台配置 ->添加平台 ->Add “https://global.consent.azure-apim.net/redirect"-> 单击“ 保存”。 请确保在 Snowflake OAuth 客户端而不是 Snowflake OAuth 资源中设置重定向 URL。
- 转到在步骤 1 中创建的资源,然后转到“公开 API”->添加客户端应用程序 -“添加前面>步骤 3 中的”添加“
APPLICATION_CLIENT_ID->单击”保存” - 遵循 步骤 3:完全收集 Snowflake 的Microsoft条目 ID 信息 。
- 将下面的文本复制并粘贴到 Snowflake 工作表中,该工作表是在 Snowflake 中执行查询的位置。 在执行查询之前,请确保进行以下替换,以便查询成功。
答: 在 azure Microsoft中,转到 Snowflake OAuth 资源应用并单击 “终结点”。
B. 若要获取第 5 行中的AZURE_AD_ISSUER,请复制 联合元数据文档 字段中的链接,并在新选项卡中打开该链接。复制实体 ID 链接,该链接应如下所示:
https://sts.windows.net/90288a9b-97df-4c6d-b025-95713f21cef9/。 将其粘贴到查询中,并确保在最后一个引号之前有一个/引号,并保留引号。 C. 若要获取第 6 行中的密钥 URL,请复制 OpenID Connect 元数据文档字段中的链接,并在新选项卡中打开该链接。复制应如下所示的jwks_uri:https://login.microsoftonline.com/90288a9b-97df-4c6d-b025-95713f21cef9/discovery/v2.0/keys将其粘贴到查询中,并确保保留引号。
D. 将第 7 行中的访问群体列表 URL 替换为Application ID URI步骤 1。 保留引号。
E. 如果 Snowflake 帐户使用与 Microsoft Azure 帐户相同的电子邮件地址,请将第 9email_address行替换为login_name。 否则,请保持原样,不要键入登录名。 保留引号。
F. 请确保已将角色设置为ACCOUNTADMIN。 现在,可以执行查询。
create security integration connector
type = external_oauth
enabled = true
external_oauth_type = azure
external_oauth_issuer = '<AZURE_AD_ISSUER>'
external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
external_oauth_audience_list = ('https://analysis.usgovcloudapi.net/powerbi/connector/snowflake')
external_oauth_token_user_mapping_claim = 'upn'
external_oauth_snowflake_user_mapping_attribute = 'login_name'
external_oauth_any_role_mode = 'ENABLE';
连接器入门
提交 SQL 语句以供执行
检查状态并获取结果
取消语句的执行
已知问题和限制
- 如果在创建新连接时收到 500 响应,则这是暂时性错误。 请等待几分钟,然后重试。
- 如果在步骤 1 中收到 401 响应,并且主机字段遵循以下格式“orgname-accountname”,请将“主机”字段替换为“定位符”URL。
- 连接器可能会超时并显示大型查询结果。
FAQ
- 如何在 Power Apps 中使用连接器? 目前,Power Apps 不支持动态架构。 你仍可以通过从应用调用流而不是直接从应用使用 Power Apps 中的连接器。
限制
| 名称 | 调用 | 续订期 |
|---|---|---|
| 每个连接的 API 调用数 | 100 | 60 秒 |
操作
| 取消语句的执行 |
取消语句的执行 |
| 将结果集行从数组转换为对象 |
将结果集行从数组转换为对象 |
| 提交 SQL 语句以供执行 |
提交 SQL 语句以供执行 |
| 检查状态并获取结果 |
检查语句的执行状态并获取结果 |
取消语句的执行
取消语句的执行
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
实例
|
Instance | True | string |
Snowflake 实例的 URI(没有 https://) |
|
语句句柄
|
statementHandle | True | string |
语句句柄 |
|
请求编号
|
requestId | string |
请求编号 |
返回
| 名称 | 路径 | 类型 | 说明 |
|---|---|---|---|
|
代码
|
code | string |
代码 |
|
sqlState
|
sqlState | string |
sqlState |
|
消息
|
message | string |
消息 |
|
statementHandle
|
statementHandle | string |
statementHandle |
|
statementStatusUrl
|
statementStatusUrl | string |
statementStatusUrl |
将结果集行从数组转换为对象
将结果集行从数组转换为对象
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
rowType
|
resultSetMetaData | string | ||
|
数据
|
data | string |
返回
| 名称 | 路径 | 类型 | 说明 |
|---|---|---|---|
|
数据
|
data | array of object |
结果集数据。 |
|
items
|
data | object |
提交 SQL 语句以供执行
提交 SQL 语句以供执行
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
实例
|
Instance | True | string |
Snowflake 实例的 URI(没有 https://) |
|
请求编号
|
requestId | string |
请求的 ID |
|
|
异步
|
async | boolean |
指示是否应异步执行查询 |
|
|
可为空
|
nullable | boolean |
如果可为 null 为 false,则 null 值将被字符串替换 |
|
|
报表
|
statement | string |
要执行的 SQL 语句 - 尚不支持的语句批处理 |
|
|
timeout
|
timeout | integer |
超时前的秒数 |
|
|
数据库
|
database | string |
数据库 |
|
|
架构
|
schema | string |
架构 |
|
|
warehouse
|
warehouse | string |
warehouse |
|
|
角色
|
role | string |
角色 |
|
|
timezone
|
timezone | string |
执行语句时要使用的时区。 |
|
|
查询标记
|
query_tag | string |
要与 SQL 语句关联的查询标记。 |
|
|
二进制输出格式
|
binary_output_format | string |
二进制值的输出格式。 |
|
|
日期输出格式
|
date_output_format | string |
DATE 值的输出格式。 |
|
|
时间输出格式
|
time_output_format | string |
TIME 值的输出格式。 |
|
|
时间戳输出格式
|
timestamp_output_format | string |
TIMESTAMP 值的输出格式。 |
|
|
timestamp ltz 输出格式
|
timestamp_ltz_output_format | string |
TIMESTAMP_LTZ值的输出格式。 |
|
|
timestamp_ntz_output_format
|
timestamp_ntz_output_format | string |
TIMESTAMP_NTZ值的输出格式。 |
|
|
timestamp tz 输出格式
|
timestamp_tz_output_format | string |
TIMESTAMP_TZ值的输出格式。 |
|
|
多语句计数
|
multi_statement_count | integer |
使用多语句功能时要执行的语句数。 0 表示可变数量的语句。 不允许负数。 |
返回
| 名称 | 路径 | 类型 | 说明 |
|---|---|---|---|
|
代码
|
code | string | |
|
sqlState
|
sqlState | string | |
|
消息
|
message | string | |
|
statementHandle
|
statementHandle | string | |
|
createdOn
|
createdOn | integer |
指定语句执行何时启动的时间戳。 时间戳表示为自纪元以来的毫秒 |
|
statementStatusUrl
|
statementStatusUrl | string | |
|
格式
|
resultSetMetaData.format | string |
对于 v2 终结点,此字段的唯一可能值为 jsonv2。 |
|
rowType
|
resultSetMetaData.rowType | array of object | |
|
姓名
|
resultSetMetaData.rowType.name | string | |
|
类型
|
resultSetMetaData.rowType.type | string | |
|
可为空
|
resultSetMetaData.rowType.nullable | boolean | |
|
partitionInfo
|
partitionInfo | array of object |
分区信息 |
|
rowCount
|
partitionInfo.rowCount | integer |
分区中的行数。 |
|
compressedSize
|
partitionInfo.compressedSize | integer |
解压缩前的分区大小。 这可能存在于 partitionInfo 中,也可能不存在。 未压缩的大小将始终存在。 |
|
uncompressedSize
|
partitionInfo.uncompressedSize | integer |
解压缩后的分区大小 |
|
可为空
|
nullable | boolean |
如果 null 替换为字符串“null”,则为 false;否则为 false |
|
数据
|
data | array of array |
结果集数据。 |
|
items
|
data | array of string | |
|
numRowsInserted
|
stats.numRowsInserted | integer |
插入的行数。 |
|
numRowsUpdated
|
stats.numRowsUpdated | integer |
已更新的行数。 |
|
numRowsDeleted
|
stats.numRowsDeleted | integer |
已删除的行数。 |
|
numDuplicateRowsUpdated
|
stats.numDuplicateRowsUpdated | integer |
已更新的重复行数。 |
检查状态并获取结果
检查语句的执行状态并获取结果
参数
| 名称 | 密钥 | 必需 | 类型 | 说明 |
|---|---|---|---|---|
|
实例
|
Instance | True | string |
Snowflake 实例的 URI(没有 https://) |
|
语句句柄
|
statementHandle | True | string |
语句句柄 |
|
请求编号
|
requestId | string |
请求编号 |
|
|
分区
|
partition | integer |
分区 |
返回
| 名称 | 路径 | 类型 | 说明 |
|---|---|---|---|
|
代码
|
code | string | |
|
sqlState
|
sqlState | string | |
|
消息
|
message | string | |
|
statementHandle
|
statementHandle | string | |
|
createdOn
|
createdOn | integer |
指定语句执行何时启动的时间戳。 时间戳表示为自纪元以来的毫秒 |
|
statementStatusUrl
|
statementStatusUrl | string | |
|
格式
|
resultSetMetaData.format | string |
对于 v2 终结点,此字段的唯一可能值为 jsonv2。 |
|
rowType
|
resultSetMetaData.rowType | array of object | |
|
姓名
|
resultSetMetaData.rowType.name | string | |
|
类型
|
resultSetMetaData.rowType.type | string | |
|
可为空
|
resultSetMetaData.rowType.nullable | boolean | |
|
partitionInfo
|
partitionInfo | array of object |
分区信息 |
|
rowCount
|
partitionInfo.rowCount | integer |
分区中的行数。 |
|
compressedSize
|
partitionInfo.compressedSize | integer |
解压缩前的分区大小。 这可能存在于 partitionInfo 中,也可能不存在。 未压缩的大小将始终存在。 |
|
uncompressedSize
|
partitionInfo.uncompressedSize | integer |
解压缩后的分区大小 |
|
可为空
|
nullable | boolean |
如果 null 替换为字符串“null”,则为 false;否则为 false |
|
数据
|
data | array of array |
结果集数据。 |
|
items
|
data | array of string | |
|
numRowsInserted
|
stats.numRowsInserted | integer |
插入的行数。 |
|
numRowsUpdated
|
stats.numRowsUpdated | integer |
已更新的行数。 |
|
numRowsDeleted
|
stats.numRowsDeleted | integer |
已删除的行数。 |
|
numDuplicateRowsUpdated
|
stats.numDuplicateRowsUpdated | integer |
已更新的重复行数。 |