2

次のようなクエリを使用して U-SQL で作業している Web ログ ファイルがあります。

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

ただし、UserAgent には次のようなものが含まれている場合があります。

Android Tablet 10" blah blah

これは常に、スクリプトが行が 3 列ではなく 4 列であると見なすことを意味します。

誰もがこれに対処する方法について明るいアイデアを持っています..その文字をエスケープすることが可能かどうか、または抽出時に何らかの方法で無視することが可能かどうかはわかりませんか?

4

3 に答える 3

3

テキストに表示されていない区切り文字を使用するか、区切り文字がエスケープされていることを確認するか、引用を使用する必要があります。

これらのいずれも機能しない場合は、行全体を 1 つの行に取得してからその行を処理するか、余分なデータをオーバーフロー列に移動するカスタム エクストラクタを作成することができます。

于 2016-02-16T06:29:14.817 に答える
0

データ ファクトリを使用してデータのコピーを準備し、エスケープ文字を挿入します (単純な Jason 設定)。これにより、エスケープ文字をデータに簡単に解析できます。その後、escapeCharacter パラメータを使用できます。エスケープ文字はそれ自体をエスケープするため、何を選択しても問題ありませんが、あいまいなものを選択した方がよいでしょう。

エスケープ文字を挿入するか、引用符を " でエスケープするには、何らかの方法でデータを事前に解析する必要があります。

于 2016-12-27T22:04:05.920 に答える
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);
于 2016-09-13T15:17:29.253 に答える