Fonctions d’agrégation bit par bit - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fonctions d’agrégation bit par bit

Les fonctions d’agrégation bit par bit calculent les opérations binaires pour effectuer l’agrégation des colonnes d’entiers et des colonnes pouvant être converties ou arrondies en valeurs entières.

Utilisation NULLs dans des agrégations bit à bit

Lorsque vous appliquez une fonction bit par bit à une colonne nulle, toutes les NULL valeurs sont éliminées avant que le résultat de la fonction ne soit calculé. Si aucune ligne n'est éligible à l'agrégation, la fonction bit par bit est renvoyée. NULL Le même comportement s’applique aux fonctions d’agrégation standard. Voici un exemple.

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

DISTINCTprise en charge des agrégations au niveau du bit

Comme les autres fonctions d'agrégation, les fonctions bit par bit prennent en charge le DISTINCT mot clé.

Cependant, l'utilisation DISTINCT de ces fonctions n'a aucun impact sur les résultats. La première instance d'une valeur est suffisante pour satisfaire les opérations bit à bit AND ou OR. Cela ne fait aucune différence si des valeurs en double sont présentes dans l’expression qui est évaluée.

Étant donné que le DISTINCT traitement est susceptible d'entraîner une certaine surcharge d'exécution des requêtes, nous vous recommandons de ne pas l'utiliser DISTINCT avec des fonctions binaires.

Exemples de présentation pour les fonctions bit par bit

Vous trouverez ci-dessous quelques exemples de présentation montrant comment utiliser les fonctions bit par bit. Vous trouverez également des exemples de code spécifiques avec la description de chaque fonction.

Les exemples de fonctions binaires sont basés sur l'TICKITexemple de base de données. Le USERS tableau de l'TICKITexemple de base de données contient plusieurs colonnes booléennes qui indiquent si chaque utilisateur est connu pour aimer différents types d'événements, tels que le sport, le théâtre, l'opéra, etc. Un exemple suit.

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

Supposons qu'une nouvelle version de la USERS table soit construite différemment. Dans cette nouvelle version, une colonne à un seul entier définit (sous forme binaire) huit types d’événements que chaque utilisateur aime ou n’aime pas. Dans cette conception, chaque position de bit représente un type d’événement. Un utilisateur qui aime les huit types d’évènements a chacun d’eux défini sur 1 (comme à la première ligne du tableau suivant). Un utilisateur qui n’aime aucun de ces événements a les huit bits définis sur 0 (voir la deuxième ligne). Un utilisateur qui aime uniquement le sport et le jazz est représenté sur la troisième ligne suivante.

USER SPORTS THEATRE JAZZ OPERA ROCK VEGAS BROADWAY CLASSICAL
User 1 1 1 1 1 1 1 1 1
User 2 0 0 0 0 0 0 0 0
User 3 1 0 1 0 0 0 0 0

Dans la table de base de données, ces valeurs binaires peuvent être stockées dans une seule LIKES colonne sous forme de nombres entiers, comme indiqué ci-dessous.

Utilisateur Valeur binaire Valeur stockée (nombre entier)
User 1 11111111 255
User 2 00000000 0
User 3 10100000 160