首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用U-SQL删除空列

使用U-SQL删除空列
EN

Stack Overflow用户
提问于 2016-09-16 14:15:13
回答 2查看 1.6K关注 0票数 0

我有许多文件,我正在尝试将它们连接在一起。我碰巧知道这些文件中的许多列只包含空值,我可以不使用它们。我如何编写一条U-SQL语句来从文件中提取数据,检查只有空值的列并排除它们?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-10-11 02:49:52

性能最好的方法可能是编写一个自定义提取器,它只跳过只包含空值的行。

否则,您可以编写类似这样的代码(注意非对象类型上的空指示符):

代码语言:javascript
复制
@data = EXTRACT c1 string, c2 int?, c3 DateTime? // ... more columns
        FROM "/path/file.csv"
        USING Extractors.Csv();

@data = SELECT * FROM @data WHERE c1 != null AND c2 != null AND c3 != null;

(请注意,您很可能需要将null转换为比较中的列类型)。

如果您的模式在不同的文件之间是不同的,您也可以使用所谓的处理器来进行过滤,该处理器可以查看输入行的模式。沿着这个方向的东西

代码语言:javascript
复制
@data = PROCESS @data PRODUCE c1 string, c2 int?, c3 DateTime? 
        USING new MyAsm.NullFilterProcessor();

在那里,您必须将NullFilterProcessor实现为IProcessor

票数 0
EN

Stack Overflow用户

发布于 2017-07-26 13:13:02

代码语言:javascript
复制
@data = EXTRACT c1 string, c2 int?, c3 DateTime? // ... more columns
    FROM "/path/file.csv"
    USING Extractors.Csv();

有时上面的代码也会显示错误,只要空值已经被替换为其他值,如"","\N",null等。

使用Extractors.Csv的

(nullEscape:“\N”);

因此,我们必须在默认提取器中使用nullEscape参数,以便排除文件中的空值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39524842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档