U-SQL文本提取器

时间:2016-02-15 18:05:32

标签: u-sql

我有一个我在U-SQL中使用的Web日志文件,其查询类似于:

Android Tablet 10" blah blah

有时候,UserAgent包含以下内容: -

<input
type="text"
class="form-control"
name="title"
id="title"
placeholder="Title"
value="{{ old('title', $content->title) }}" />

总是意味着脚本认为该行有四列而不是三列。

任何人都有任何明智的想法,我怎么能处理这个...我不确定是否有可能逃脱那个炭或在提取时以某种方式忽略它?

3 个答案:

答案 0 :(得分:3)

您必须使用未出现在文本中的分隔符,或者确保分隔符已转义,或者您使用引号。

如果这些都不起作用,您可以将整行放到一行然后处理该行,或编写一个自定义提取器,将多余的数据移动到溢出列中。

答案 1 :(得分:0)

https://msdn.microsoft.com/en-us/library/azure/mt764098.aspx,我会尝试

@x =
    EXTRACT Col1 string, UserAgent string, Col2 string
    FROM "/file"
    USING Extractors.Text(delimiter : ' ', quoting:false);

答案 2 :(得分:0)

使用数据工厂准备数据副本并插入转义字符(简单的Jason设置)。这将轻松地将转义字符解析为您的数据。然后,您可以使用escapeCharacter参数。选择你所选择的并不重要,因为逃脱角色会逃脱,但选择一些模糊的东西会更好。

您必须以某种方式预先解析数据,以插入转义字符或使用&#34;来转义引号。我个人更喜欢转义字符,而且数据工厂很容易。