【问题标题】:Delete last record from flat file in blob to Azure data warehouse从 blob 中的平面文件中删除最后一条记录到 Azure 数据仓库
【发布时间】:2020-07-27 02:20:00
【问题描述】:

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

【问题讨论】:

    标签: azure-blob-storage data-warehouse azure-data-factory delete-row skip


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 非常感谢@wBob,它就像一个魅力。有没有办法在某处记录被拒绝的记录。另外,我尝试了跳过并记录不兼容的行,但它没有用。是否有任何特定的设置可以工作?非常感谢您的帮助。
    猜你喜欢
    • 2020-08-22
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多