从 blob 中的平面文件删除最后一条记录到 Azure 数据仓库

Delete last record from flat file in blob to Azure data warehouse

我在 Blob 存储中有一些竖线分隔的平面文件,在每个文件中我都有一个页眉和页脚记录,其中包含文件名、提取日期和记录数。我将 ADF 管道与 Polybase 结合使用以加载到 Azure DWH 中。我可以跳过页眉记录但无法跳过页脚。我能想到的唯一方法是使用所有 varchar 创建暂存 table 并加载到暂存中,然后将数据类型转换回主 tables。但这不起作用,因为列数与页脚和数据不同。有没有更简单的方法来做到这一点?请指教

Polybase 没有用于删除页脚行的明确选项,但它确实有一组您可以利用的拒绝选项。如果您将 REJECT_TYPE 设置为 VALUE(而不是 PERCENTAGE)并且将 REJECT_VALUE 设置为 1,那么您是在告诉 Polybase 仅拒绝一行。如果您的页脚与主要数据行的格式不同,它将被拒绝,但您的查询应该不会失败。

CREATE EXTERNAL TABLE yourTable
...    
<reject_options> ::=  
{  
    | REJECT_TYPE = value,  
    | REJECT_VALUE = 2 

如果您需要进一步的帮助,请 post 一个简单的匿名文件示例,其中包含页眉、列和页脚。

更新:查看此博客post以获取有关跟踪被拒绝行的信息:

https://azure.microsoft.com/en-us/blog/load-confidently-with-sql-data-warehouse-polybase-rejected-row-location/