我已经使用天蓝色云提供商创建了一个雪花,并尝试将数据从数据湖加载到雪花中的外部阶段
为此,我遵循以下步骤:
在azure中创建存储帐户并在容器(数据湖)中上传文件
使用 azure_tenant_ID 和 storage_allowed_locations 在雪花中创建存储集成
根据集成描述,授权 AZURE_CONSENT_URL 从 azure 存储帐户访问该文件
我还注意到要在azure中的角色分配中添加AZURE_MULTI_TENANT_APP_NAME
但是在角色分配中搜索成员时,我在列表中看不到雪花成员(AZURE_MULTI_TENANT_APP_NAME)?
因此我无法从舞台加载/读取数据
如果角色分配中添加了AZURE_MULTI_TENANT_APP_NAME,那么我相信下面的授权问题将会得到解决
Failure using stage area. Cause: [This request is not authorized to perform this operation using this permission. (Status Code: 403; Error Code: AuthorizationPermissionMismatch)]
听起来您尚未从 Azure 中正确授权 Snowflake。您需要按照以下步骤进行设置的文档页面位于here。听起来您正在遵循“选项 1”中描述的方法。
确保您仔细阅读整页内容。在这些步骤中很容易错过一个小项目,从而导致整个事情无法进行。我认为选项 1、步骤 2 是您最有可能犯错误的地方。
您提到您在 AZURE_MULTI_TENANT_APP_NAME 列表中看不到“SNOWFLAKE”。看来这是通过“步骤 2”下的以下操作来实现的:
运行 desc 存储集成
在 Web 浏览器中,导航到 AZURE_CONSENT_URL 列中的 URL。该页面显示 Microsoft 权限请求页面。
单击“接受”按钮。此操作允许为您的 Snowflake 帐户创建的 Azure 服务主体获取租户内任何资源的访问令牌。仅当您向服务主体授予对容器的适当权限时,才能成功获取访问令牌(请参阅下一步)。
Microsoft 权限请求页面重定向到 Snowflake 公司网站 (snowflake.com)。
通过运行 DESC STORAGE INTEGRATION AZURE_INT 获取 AZURE_MULTI_TENANT_APP_NAME;在 Snowflake 中,如果你得到像这样的值“lckhlcsnowflakepacint_1707582252274”。 删除数字并在 Azure 中选择角色分配的成员中选择“lckhlcsnowflakepacint”。现在你会得到它。