作为我的最后一个问题的后续,我的数据流遇到了一些问题,我不知道这是否可能。有人可以确认这是否可能吗?如果可以,为什么它不起作用?
第 1 步:数据加载到 Blob 存储中 - 工作正常
第 2 步:脚本活动发送到 Snowflake,返回包含 3 列的数据表:RowID、SnowflakeName、Sheetname - 工作正常
第 3 步:ForEach 容器将 SnowflakeName 和 SheetName 设置为变量,然后将其用作数据流中的参数 - 工作正常
第 4 步:由三部分组成的数据流 - 使用“SheetName”读取 Blob 中的 Excel 电子表格来标识要读取的工作表。将标题全部大写。将数据移动到雪花:
由于每个工作表都有不同的列,因此我没有导入架构并允许架构漂移来识别列中的更改。在雪花输出中,出于同样的原因,我启用了自动映射。
在我看来,这应该都是可能的。每次 ForEach 为每个新行运行时,它都应该准确地将 SheetName 和 SnowflakeTable 归属到变量中,它确实做到了,但随后它在数据流上失败,称其标识符无效。该列存在于 Snowflake 中,并将数据类型(字符串)与从 Excel 文件中获取的内容相匹配。
错误代码 DF-Executor-UserError 在 Microsoft 的故障排除 上进行了故障排除:
错误代码:DF-Executor-UserError 消息:作业失败,原因是:GetjobStatus,作业失败 - com.microsoft.dataflow.issues:DF-MICROSOFT365-CONSENTPENDING 原因:复制数据需要特权访问批准。这是用户配置问题。 建议:要求租户管理员在特权访问管理 (PAM) 模块中批准 Office365 中的数据访问请求。
就 PIM 批准而言,我拥有访问订阅的所有相关权限。此进程在调试模式下运行是否需要我可能错过的特定角色?或者这个错误消息是为了转移注意力,并且该过程还有其他问题?如果可能的话?
任何帮助表示赞赏!
您以错误的方式使用数据流参数。根据您的数据流源和接收器,您似乎正在使用内联 Excel 数据集作为数据流源,使用普通雪花数据集作为数据流接收器。
当您想使用参数将任何值传递给普通数据集时,您需要使用数据集参数。如果您使用内联数据集,则可以使用数据流参数将值传递给它。
在这种情况下,您直接给出雪花接收器数据集中的数据流参数,这可能是导致上述错误的原因。
为了实现您的要求,请使用该数据集的数据集参数。在数据集中,创建所需的字符串参数。
现在,将此参数用作数据集表名称中的
@dataset().<parameter_name>
。
现在,将此数据集提供给您的接收器。在管道的数据流活动中,它会要求提供值。在这里,您可以使用管道表达式将所需的表名称从管道传递到此参数。
当您使用内联数据集作为数据流源时,您可以为其使用数据流参数。但对于接收器,您需要使用数据集参数,因为它是普通数据集。
如果您想使用内联数据集作为数据流接收器,您可以直接这样做。在数据流接收器中,选择 Inline 并选择 Snowflake 并提供雪花链接服务。
现在,您可以在数据流接收器设置中使用数据流参数作为雪花表名称,如下所示。