Image de l'étiquette basée sur l'entrepôt de données Hive

000x000 2022-07-24 00:20:04 阅读数:572

imagetiquettebassurentrep

HiveEntrepôt de données

Pour créer un portrait d'utilisateur, il faut d'abord créer un entrepôt de données,Pour stocker les données de l'étiquette utilisateur.HiveEst basé surHadoopOutils d'entrepôt de données pour,DépendancesHDFSStockage des données,FourniSQLLa langue peut être interrogée et stockée dansHDFSDonnées dans.Généralement utilisé pour le développementHiveEn tant qu'entrepôt de données,Stocke les données pertinentes telles que les étiquettes et les bibliothèques de fonctionnalités utilisateur.

"Le père de l'entrepôt de données" W.H.Inmon In《Building the Data Warehouse》(Version chinoise《Entrepôt de données(Page du livre original4Édition)》)Définition dans un livreL'entrepôt de données est"Une approche thématique、Intégration、Non volatile、Variable dans le temps、.Ensemble de données à l'appui de la prise de décisions par les gestionnaires".

  • Orientation thématique: Les données de la base de données des entreprises sont principalement destinées au traitement des transactions,Les systèmes opérationnels sont séparés les uns des autres,Et les données de l'entrepôt de données sont organisées par thème.

  • Intégration:Les données stockées dans l'entrepôt de données sont extraites de la base de données des entreprises,Mais ce n'est pas une simple copie des données originales,Il a été extrait.、Nettoyage、Conversion(ETL)Attendre le travail.La base de données des entreprises enregistre les comptes courants pour chaque traitement d'entreprise.Ces données ne conviennent pas au traitement analytique,Un certain nombre de calculs sont nécessaires avant d'entrer dans l'entrepôt de données,En même temps, jeter des données qui ne sont pas traitées par analyse.

  • Non volatile:En règle générale, seules les données à court terme sont stockées dans les bases de données commerciales,Les données sont donc instables,Enregistrer les transitoires de changement de données dans le système.La plupart des données de l'entrepôt de données représentent des données à un moment donné dans le passé.,Utilisé principalement pour la recherche、Analyse,Pas aussi souvent modifié qu'une base de données dans un système d'affaires,Une fois l'entrepôt de données général construit, il est principalement utilisé pour accéder à,Sans modification ni suppression.

  • Variation dans le temps:L'entrepôt de données se concentre sur les données historiques,Charger périodiquement de nouvelles données de la base de données des entreprises et de la base de données des journaux dans l'ordre chronologique pour ajouter,Avec attribut temps.

Le processus d'extraction des données dans l'entrepôt de données est illustré dans la figure ci - dessous..

Dans le processus de modélisation de l'entrepôt de données,Il s'agit principalement de l'élaboration de modèles de tableaux de faits et de tableaux de dimensions.:

Le tableau des faits est conçu principalement autour des processus opérationnels,Les scénarios d'application comprennent principalement:Tableau des faits de la transaction,Tableau des faits de l'instantané périodiqueEtTableau des faits instantanés cumulatifs:

  • Tableau des faits de la transaction:Utilisé pour décrire les processus opérationnels,Selon l'unicité du processus opérationnel ou du processus opérationnel multiple, il peut être divisé en un seul tableau des faits transactionnels et un tableau des faits transactionnels multiples..Où le tableau des faits d'une seule transaction enregistre chaque processus opérationnel séparément,Les activités suivantes sont consignées dans le tableau des faits de la commande:,Les opérations de paiement sont comptabilisées dans le tableau des faits de paiement..Le tableau des faits Multi - transactions contient différents processus opérationnels dans le même tableau,Si vous commandez、Paiement、Les processus opérationnels tels que la signature et la réception sont consignés dans un tableau.,Déterminer quel processus opérationnel appartient en ajoutant des champs.Lorsqu'il existe des similitudes entre les différents processus opérationnels, il peut être envisagé de placer plusieurs processus opérationnels dans des tableaux de faits Multi - transactions..

  • Tableau des faits de l'instantané périodique:Mesure de l'état de l'entreprise à un intervalle de temps déterminé.Par exemple, voir la proximité d'un utilisateur1Montant des paiements annuels、Proche1Achats annuels、Proche30Jours de connexion quotidiens, etc..

  • Tableau des faits instantanés cumulatifs:Utilisé pour voir l'intervalle de temps entre les différents événements,Par exemple, analyser le temps qu'un utilisateur passe de l'achat au paiement、Durée de la commande à la fin de la commande, etc..En général, il s'applique aux processus opérationnels qui ont un cycle temporel clair.

Les tableaux de dimensions sont principalement utilisés pour décrire divers aspects des attributs de fait,Par exemple,La dimension des produits de base comprend le prix des produits de base、Réduction、Marque (s)、Le fabricant original、Informations sur le modèle, etc..Au cours de l'élaboration du tableau des dimensions,Souvent, les dimensions changent lentement,Les dimensions à variation lente sont généralement utilisées:①Outrepasser les valeurs des dimensions,écraser les données historiques;②Conserver plusieurs enregistrements,Différencier en insérant un champ de colonne de dimension;③Tableau de partition de la date de développement,Attributs de la dimension quotidienne de l'enregistrement quotidien des données de partition;④Développer une table zip pour le stockage complet en fonction du temps.

Utilisé principalement dans les systèmes d'imagerieHiveEn tant qu'entrepôt de données,Développer des tableaux de dimensions et de faits appropriés pour stocker les étiquettes、Population、Données pertinentes appliquées au niveau de service.HiveSQL Techniques avancées .

Stockage de partitions

Si vous développez une étiquette utilisateur en une grande table large,Des dizaines de types d'étiquettes sont placés sous cette large table,Alors tous les jours, le portrait de la grande montreETLLe travail prendra beaucoup de temps,Et il n'est pas facile d'ajouter des types d'étiquettes à ce tableau large.

Pour résoudre ce problème,ETLUne question qui prend beaucoup de temps,Vous pouvez commencer par les aspects suivants:

  • Stockage des partitions de données,Exécuter les tâches séparément;

  • Réglage des performances du script Tag;

  • Élaboration de tableaux intermédiaires fondés sur des sources de données communes à certaines étiquettes.

Voici un sous - Tableau des étiquettes des utilisateurs、Solutions pour le stockage de partitions.

Caractéristiques démographiques selon le système d'indicateurs d'étiquetage、Propriétés comportementales、Consommation des utilisateurs、Contrôle des risques、Les attributs sociaux et d'autres dimensions établissent respectivement la table d'étiquettes correspondante pour stocker les données d'étiquettes correspondantes par table..Comme le montre la figure ci - dessous.

  • Tableau des attributs démographiques:dw.userprofile_attritube_all

  • Feuille de propriétés du comportement:dw.userprofile_action_all

  • Tableau de consommation des utilisateurs:dw.userprofile_consume_all

  • Tableau de contrôle des risques:dw.userprofile_riskmanage_all

  • Feuille de propriétés sociales:dw.userprofile_social_all

Par exemple, créer un tableau large des attributs de population de l'utilisateur:

La même chose.,Utilisateurs autresidDimensions(Par exemple:cookieid、deviceid、registeridAttendez.)Stockage des données de l'étiquette pour,Vous pouvez également utiliser la structure du tableau dans le cas ci - dessus.

Dans la création ci - dessus, développer des étiquettes d'utilisateur connexes en établissant une large table des dimensions des attributs de population,Afin d'améliorer l'efficacité de l'insertion et de la requête des données,InHiveComment les tables de partition peuvent être utilisées,Stocker les données dans un répertoire différent.InHiveUtiliserselectLa requête scanne généralement toutes les données de la table entière,Il faudra beaucoup de temps pour numériser les données qui ne sont pas actuellement demandées,Pour numériser une partie des données d'intérêt dans le tableau,Introduit lors de la construction de la tablepartitionLe concept de.Au moment de la requête,Peut passerHivePour contrôler la quantité de données parcourues à la fois.Hive SQLIdées d'optimisation.

Convergence des étiquettes

Dans les cas mentionnés dans la section précédente,Chaque étiquette de l'utilisateur est insérée sous la section correspondante,Mais pour un utilisateur,Toutes les étiquettes qui l'ont frappé sont stockées sous différentes partitions.Pour faciliter l'analyse et la recherche,Les étiquettes des utilisateurs doivent être agrégées.

Une fois les étiquettes rassemblées, toutes les étiquettes d'un utilisateur sont regroupées en un seul champ.,La structure du tableau est conçue comme suit::

CREATE TABLE `dw.userprofile_userlabel_map_all`
(
    `userid`     string COMMENT 'userid',
    `userlabels` map<string,string> COMMENT 'tagsmap',
)
    COMMENT 'userid Agrégation des étiquettes des utilisateurs'
    PARTITIONED BY ( `data_date` string COMMENT 'Date des données')

DéveloppementudfFonctions“cast_to_json”Assembler les étiquettes de l'utilisateur enjsonString,Exécuter la commande convergera par étiquette stockée dans la partition:

insert overwrite table dw.userprofile_userlabel_map_all partition(data_date= "data_date")  
  select userid,  
         cast_to_json(concat_ws(',',collect_set(concat(labelid,':',labelweight)))) as userlabels
      from “Tableau des étiquettes pour chaque dimension de l'utilisateur” 
    where data_date= " data_date " 
group by userid

Le format de stockage de l'étiquette utilisateur après agrégation est indiqué dans la figure.:

L'agrégation des étiquettes sur le corps de l'utilisateur facilite la recherche et le calcul.Par exemple,Dans les produits de portrait,Saisissez l'utilisateuridPuis en interrogeant directement le tableau,Analyser les étiquettesidAprès le poids de l'étiquette correspondante,Afficher les informations de l'utilisateur à l'avant

ID-MAP

Lors du développement du label utilisateur,Il y a un élément très important——ID-MApping,C'est - à - dire que l'identité de l'utilisateur provenant de différentes sources est reconnue comme le même sujet par des moyens de données..Propriétés de l'utilisateur、Les données liées au comportement sont dispersées entre différentes sources de données,AdoptionID-MAppingCapable de concaténer le comportement de l'utilisateur dans différents scénarios,Éliminer les îlots de données.La figure ci - dessous montre les relations multiples entre l'utilisateur et l'appareil.DécrypterOne ID Technologie de base dans ID-Mapping.

La figure ci - dessous montre le comportement d'un même utilisateur sur différentes plateformes..

Par exemple,,L'utilisateur n'est pas connectéAppDans l'état de,InAppAccès au site、Lors de la recherche de contenu connexe,L'appareil est enregistréid(C'est - à - dire:cookieid)Données comportementales pertinentes.Et l'utilisateur se connecteAppAprès,Accès à、Collection、Le numéro de compte est enregistré pour les actions liées à la commande, etc.id(C'est - à - dire:userid)Données comportementales pertinentes.Même si c'est le même utilisateur,Mais il n'y a pas de communication entre les données de comportement enregistrées lors de la connexion et de la non - connexion de l'appareil.AdoptionID-MAppingPasse. userid Et cookieid Correspondance entre,Vous pouvez vous connecter à l'utilisateur、Capturez la trace de comportement d'un appareil lorsqu'il n'est pas connecté.

Voici un exemple de la façon de passerHiveDeETLTravaux achevésID-MappingNettoyage des données.

Le changement lent des dimensions est une façon courante de concevoir des tables de dimensions,Les dimensions ne sont pas constantes,Ça change lentement avec le temps..Comme le numéro de téléphone de l'utilisateur、Les informations telles que les boîtes aux lettres peuvent changer en fonction de l'état de l'utilisateur,De plus, les prix des produits de base peuvent être ajustés au fil du temps..Donc, dans la conception des utilisateurs、Les tableaux isométriques des marchandises sont conçus pour être développés avec des dimensions à variation lente.Encore une fois,Dans la conceptionID-MappingTableau,Parce qu'un utilisateur peut se connecter sur plusieurs appareils,Un appareil peut également être connecté par plusieurs utilisateurs,Envisagez donc d'utiliser une table de dimensions à variation lente pour enregistrer ce changement d'état à différents moments dans le temps..

.Les tables zip sont conçues pour les tables de dimensions à variation lente,Enregistrer tous les changements d'état d'une chose du début à l'état actuel.

Dans l'image ci - dessus,Enregistré par la table zipuseridChaque association est différentecookieidSituation.Par exemple:useridPour44463729Utilisateurs de,In20190101Connectez - vous à un appareil ce jour - là,In6Un autre appareil s'est connecté ce jour - là..Parmi euxstart_dateIndique la date de début de l'enregistrement,end_dateIndique la date de fin de l'enregistrement,Quandend_datePour99991231Heure,Indique que l'enregistrement est toujours valide.

Tout d'abord, vous devez obtenircookieidEtuseridEnregistrements d'accès simultanés.Dans les cas suivants:,ods.page_event_logC'est le Journal des points d'enfouissement.,ods.page_view_logEst la table du Journal d'accès,Ce qui sera obtenuuseridEtcookieidInsertion d'informationscookieid-useridTableau des relations(ods.cookie_user_signin)Moyenne.Le Code est exécuté comme suit::

INSERT OVERWRITE TABLE ods.cookie_user_signin PARTITION (data_date = '${data_date}')
  SELECT t.*
    FROM (
         SELECT userid,
                cookieid,
                from_unixtime(eventtime,'yyyyMMdd') as signdate
           FROM ods.page_event_log      -- Liste des points d'enfouissement
           WHERE data_date = '${data_date}'
        UNION ALL
         SELECT userid,
                cookieid,
                from_unixtime(viewtime,'yyyyMMdd') as signdate
           FROM ods.page_view_log   -- Tableau des journaux d'accès
           WHERE data_date = '${data_date}'
           ) t

CréationID-MapUne montre zip,Ajouter chaque jour àods.cookie_user_signinLes données du tableau sont comparées aux données historiques du tableau zip,Mise à jour en cas de modification ou d'ajout de données.

CREATE TABLE `dw.cookie_user_zippertable`(
`userid` string COMMENT 'Numéro de compteID', 
`cookieid` string COMMENT 'MatérielID', 
`start_date` string COMMENT 'start_date', 
`end_date` string COMMENT 'end_date')
COMMENT 'id-mapFermeture éclair'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

Une fois la création terminée,Tous les joursETLProgrammer la mise à jour des données àID-MappingDans la table zip,Les tâches sont les suivantes:.

INSERT OVERWRITE TABLE dw.cookie_user_zippertable
SELECT t.* 
  FROM (
      SELECT t1.user_num,
             t1.mobile,
             t1.reg_date,
             t1.start_date,
             CASE WHEN t1.end_date = '99991231' AND t2.userid IS NOT NULL THEN '${data_date}'
                  ELSE t1.end_date
             END AS end_date
       FROM dw.cookie_user_zippertable t1
    LEFT JOIN (  SELECT *
                 FROM ods.cookie_user_signin
                WHERE data_date='${data_date}'
              )t2
           ON t1.userid = t2.userid
UNION
       SELECT userid,
              cookieid,
              '${data_date}' AS start_date,
              '99991231' AS end_date
        FROM ods.cookie_user_signin
       WHERE data_date = '${data_date
       }'
          ) t

Dans le tableau d'écriture des données,Comme le montre la figure ci - dessus.

Pour cette table zip,Peut voir un jour(Par exemple:20190801)Données instantanées pour.

select  * 
from dw.cookie_user_zippertable 
where start_date<='20190801' and end_date>='20190801'

Par exemple,Il y a actuellement un enregistrementuseridEtcookieidTableau des relations d'association, Mais pour beaucoup à beaucoup d'enregistrements (UnuseridCorrespond à plusieurscookieidEnregistrement,Et uncookieidCorrespond à plusieursuseridEnregistrement).Vous pouvez voir un point dans le temps à partir de la date de la table zipuseridCorrespondantcookieid.Voir un utilisateur(Par exemple:32101029)Un jour(Par exemple:20190801)Appareils associésid.

select cookieid 
from dw.cookie_user_zippertable 
where userid='32101029' and start_date<='20190801' and end_date>='20190801'

L'image ci - dessus montre l'utilisateur'32101029'A été connecté dans l'histoire3Matériel,Le périphérique de connexion de l'utilisateur à un moment donné peut être trouvé en définissant une période de temps.

Une attention particulière doit être accordée àuseridAveccookieidPlusieurs à plusieurs associations de,Associer sans condition,Risque élevé de gonflement des données:

Dans la pratique,Il y aura beaucoup de besoinsuseridEtcookieidCas de corrélation.Par exemple,Besoin deuseridDimension développe cet utilisateur près de30Nombre d'achats par jour、Montant de l'achat、Durée de connexion、Onglet jours de connexion, etc..Les deux premières étiquettes peuvent être facilement traitées par algorithme à partir de la Feuille de données d'affaires correspondante,Et la durée de connexion、Les données pour les jours de connexion sont stockées dans les données de journal pertinentes,Log Data Sheet recordeduseridAveccookieidPour plusieurs à plusieurs relations.Ainsi, lors de l'élaboration des étiquettes en fonction des besoins opérationnels,Pour bien définir le calibre de l'étiquette.

Résumé

Le contenu de ce numéro est présenté au moyen d'une étude de cas.userid Et cookieid Une solution pour passer,Dans la pratique, il existe également la nécessité de mettre les utilisateurs sur différentes plateformes(Par exemple:WebFin etAppFin)Un scénario d'application qui passe par le comportement.

Copyright:Cet article est[000x000]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2022/205/202207240018085765.html