Ich habe eine große CSVs, die große Zeichenfolgen enthalten. Ich möchte sie in U-SQL analysieren.Wie zu analysieren große Zeichenfolge U-SQL Regex
@t1 =
SELECT
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)") AS p
FROM
(VALUES(1)) AS fe(n);
@t2 =
SELECT
p.Groups["ID"].Value AS gads_id,
p.Groups["T"].Value AS gads_t,
p.Groups["S"].Value AS gads_s
FROM
@t1;
OUTPUT @t
TO "/inhabit/test.csv"
USING Outputters.Csv();
Severity Code Beschreibung Projektdatei Zeilenunterdrückungszustand Fehler E_CSC_USER_INVALIDCOLUMNTYPE: 'System.Text.RegularExpressions.Match' kann nicht als Spaltentyp verwendet werden.
Ich weiß, wie es in SQL mit EXPLODE/Cross APPLY/GROUP BY zu tun. Aber ist es möglich, auf diese Tänze zu verzichten?
Ein weiteres Update
@t1 =
SELECT
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)").Groups["ID"].Value AS id,
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)").Groups["T"].Value AS t,
Regex.Match("ID=881cf2f5f474579a:T=1489536183:S=ALNI_MZsMMpA4voGE4kQMYxooceW2AOr0Q", "ID=(?<ID>\\w+):T=(?<T>\\w+):S=(?<S>[\\w\\d_]*)").Groups["S"].Value AS s
FROM
(VALUES(1)) AS fe(n);
OUTPUT @t1
TO "/inhabit/test.csv"
USING Outputters.Csv();
Diese wariant funktioniert gut. Aber da ist eine Frage. Wird der Regex 3 Mal pro Reihe ausgezehrt? Gibt es eine Chance, U-SQL-Engine anzudeuten - die Funktion Regex.Match ist deterministisch.
danke wie immer, werde einfache String-Operationen wie Split oder nur Teilstring verwenden. weil die Saiten aus Teilen mit konstanten Längen bestehen. eine einfache Frage. Welche String-Operationen werden mit einem systemeigenen Code verknüpft? Sind alle Operationen von string wie substring/split/... zu .net-Aufrufen führen oder gibt es vielleicht eine Reihe von string-Operationen, die zu einem nativen Code kompiliert werden? – churupaha