Bitweise Aggregationsfunktionen - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bitweise Aggregationsfunktionen

Bitweise Aggregatfunktionen berechnen Bitoperationen, um die Aggregation von Ganzzahlspalten und Spalten, die auf ganzzahlige Werte konvertiert oder gerundet werden können, durchzuführen.

Verwendung von NULL-Werten in bitweisen Aggregationen

Wenn Sie eine bitweise Funktion auf eine Spalte anwenden, die nullwertfähig ist, werden alle NULL-Werte entfernt, bevor das Funktionsergebnis berechnet wird. Wenn keine Zeilen für eine Aggregation qualifiziert sind, gibt die bitweise Funktion NULL zurück. Das gleiche Verhalten gilt für reguläre Aggregationsfunktionen. Im Folgenden sehen Sie ein Beispiel.

select sum(venueseats), bit_and(venueseats) from venue where venueseats is null; sum | bit_and ------+--------- null | null (1 row)

DISTINCT-Unterstützung für bitweise Aggregationen

Wie andere Aggregationsfunktionen unterstützen auch bitweise Funktionen das Schlüsselwort DISTINCT.

Die Verwendung von DISTINCT mit diesen Funktionen wirkt sich jedoch nicht auf die Ergebnisse aus. Die erste Instanz eines Werts ist für bitweise AND- oder OR-Operationen ausreichend. Das Vorhandensein duplizierter Werte im ausgewerteten Ausdruck hat keine Auswirkungen.

Wir empfehlen, DISTINCT nicht mit bitweisen Funktionen zu verwenden, da die DISTINCT-Verarbeitung wahrscheinlich zu einem Overhead bei der Abfrageausführung führen wird.

Übersicht: Beispiele für bitweise Funktionen

Unten sehen Sie eine Übersicht mit einigen Beispielen für Einsatzmöglichkeiten von bitweisen Funktionen. Zu jeder Funktionsbeschreibung gehören spezifische Codebeispiele.

Die Beispiele für die bitweisen Funktionen basieren auf der TICKIT-Beispieldatenbank. Die Tabelle USERS in der Beispieldatenbank TICKIT enthält mehrere boolesche Spalten, die angeben, ob für die einzelnen Benutzer bekannt ist, dass ihnen bestimmte Arten von Veranstaltungen gefallen, wie Sport, Theater, Oper usw. Ein Beispiel folgt.

select userid, username, lastname, city, state, likesports, liketheatre from users limit 10; userid | username | lastname | city | state | likesports | liketheatre -------+----------+-----------+--------------+-------+------------+------------- 1 | JSG99FHE | Taylor | Kent | WA | t | t 9 | MSD36KVR | Watkins | Port Orford | MD | t | f

Nehmen wir an, dass die Tabelle USERS auf eine andere Weise erstellt wird. In der neuen Version ist eine einzelne Ganzzahlspalte enthalten, die (in binärer Form) acht Arten von Veranstaltungen definiert, die den einzelnen Benutzern gefallen oder nicht gefallen. In diesem Entwurf stellt jede Bitposition einen Veranstaltungstyp dar. Für einen Benutzer, dem alle acht Veranstaltungen gefallen, sind alle acht Bits auf 1 festgelegt (wie in der ersten Zeile der folgenden Tabelle gezeigt). Für einen Benutzer, dem keine dieser Veranstaltungen gefallen, sind alle acht Bits auf 0 festgelegt (wie in der zweiten Zeile gezeigt). Ein Benutzer, dem nur Sport und Jazz gefallen, wird in der dritten Zeile gezeigt.

SPORT THEATER JAZZ OPER ROCK VEGAS BROADWAY KLASSISCHE MUSIK
Benutzer 1 1 1 1 1 1 1 1 1
Benutzer 2 0 0 0 0 0 0 0 0
Benutzer 3 1 0 1 0 0 0 0 0

Diese Binärwerte könnten in der Datenbanktabelle in einer einzelnen Spalte LIKES als Ganzzahlen gespeichert werden. Dies würde wie folgt aussehen.

Benutzer Binärwert Gespeicherter Wert (Ganzzahl)
Benutzer 1 11111111 255
Benutzer 2 00000000 0
Benutzer 3 10100000 160