1
Wie kann ich die Top 3 Ausnahmen pro Tag mit U-SQL extrahieren?U-SQL Wie wählt man die besten 3 Ausnahmen für jedes Datum aus?
ich das Ergebnis wollen wie folgt aussehen:
Wie kann ich die Top 3 Ausnahmen pro Tag mit U-SQL extrahieren?U-SQL Wie wählt man die besten 3 Ausnahmen für jedes Datum aus?
ich das Ergebnis wollen wie folgt aussehen:
Eine Möglichkeit, dies in U-SQL zu erreichen, ist die ROW_NUMBER
Ranking-Funktion nach Datum und geordnet partitioniert zu verwenden, indem Sie Ihre absteigend zählen. Zum Beispiel:
@input = SELECT *
FROM (
VALUES
("2016-01-01T00:00:00", "System.ArgumentNullException", 7),
("2016-01-01T00:00:00", "System.IO.EndOfStreamException", 5),
("2016-01-01T00:00:00", "System.IO.FileNotFoundException", 4),
("2016-01-01T00:00:00", "System.IndexOutofRangeException", 4),
("2016-01-01T00:00:00", "System.ArgumentException", 3),
("2016-01-02T00:00:00", "System.BadImageFormatException", 18),
("2016-01-02T00:00:00", "System.IO.EndOfStreamException", 16),
("2016-01-02T00:00:00", "System.NotImplementedException", 14),
("2016-01-02T00:00:00", "System.UnauthorizedAccessException", 13),
("2016-01-02T00:00:00", "System.ArgumentException", 12),
("2016-01-02T00:00:00", "System.IndexOutofRangeException", 5),
("2016-01-03T00:00:00", "System.IO.EndOfStreamException", 45),
("2016-01-03T00:00:00", "System.FormatException", 42),
("2016-01-03T00:00:00", "System.BadImageFormatException", 41),
("2016-01-03T00:00:00", "System.IndexOutofRangeException", 41),
("2016-01-03T00:00:00", "System.IO.FileNotFoundException", 40)
) AS x(date, exception, count);
// Add row number to resultset based on date and count descending
@working =
SELECT ROW_NUMBER() OVER(PARTITION BY date ORDER BY count DESC) AS rn,
*
FROM @input;
// Top 3 by date?
@output =
SELECT *
FROM @working
WHERE rn <= 3;
OUTPUT @output TO "/output/output.csv"
USING Outputters.Csv();
Meine Ergebnisse:
Was Sie bisher versucht haben? Sie können Gruppieren nach und Summe und Dinge wie das .. Das sollte Sie gehen –
Ich löste es mit ARRAY_AGG auf Ausnahme mit Gruppierung am Datum. Dann habe ich für jedes Datum ein Array bekommen. Von hier aus könnte ich ein Inline-C# verwenden, um die ersten drei Indizes im Array zurückzugeben! :) –
Classic [Tag: Größte-N-pro-Gruppe] Problem. –