Comment les données du robot Python doivent-elles être traitées ?

PHP中文网
Libérer: 2017-06-20 16:27:57
original
2506 Les gens l'ont consulté

1. Comprenez d'abord les fonctions suivantes

Définir la fonction longueur variable() char_length() fonction replace() fonction max()
Définir l'ensemble de variables @nom de la variable=valeur

set @address='中国-山东省-聊城市-莘县';select @address
Copier après la connexion

1.2. Différences entre la fonction length() et la fonction char_length()

select length('a')
,char_length('a')
,length('中')
,char_length('中')
Copier après la connexion

1.3. Combinaison de la fonction replace() et de la fonction length()

set @address='中国-山东省-聊城市-莘县';select @address
,replace(@address,'-','') as address_1
,length(@address) as len_add1
,length(replace(@address,'-','')) as len_add2
,length(@address)-length(replace(@address,'-','')) as _count
Copier après la connexion

etl cleaning field Comment déterminer combien de champs séparés ajouter à une nouvelle table de données lorsqu'il y a des séparateurs évidents

Calculer le nombre maximum de - caractères dans com_industry pour déterminer le nombre de champs à ajouter ? être divisé en Le nombre de champs dans ce tableau est de 3, il peut donc être divisé en 4 champs d'industrie, c'est-à-dire 4 niveaux d'industrie

select max(length(com_industry)-length(replace(com_industry,'-',''))) as _max_count
from etl1_socom_data
Copier après la connexion

1.4 Définir l'utilisation de la fonction d'interception de chaîne substring_index().

set @address='中国-山东省-聊城市-莘县';
select 
substring_index(@address,'-',1) as china,
substring_index(substring_index(@address,'-',2),'-',-1) as province,
substring_index(substring_index(@address,'-',3),'-',-1) as city,
substring_index(@address,'-',-1) as district
Copier après la connexion

1.5. Fonction de jugement conditionnel cas quand
cas quand alors quand alors sinon la valeur se termine comme nom de champ

select case when 89>101 then '大于' else '小于' end as betl1_socom_data
Copier après la connexion

2. >La première étape de création de table est dans la vidéo. L'index du champ

ne mentionne pas l'algorithme d'indexation. Il est recommandé d'utiliser l'algorithme BTREE pour améliorer l'efficacité des requêtes


2.1.nom du fichier kettle : trans_etl1_socom_data<🎜. >2.2. Inclure les contrôles : entrée de la table>>> sortie de la table

2.3. Direction du flux de données : s_socom_data>>>>etl1_socom_data



conversion de la bouilloire. 1 capture d'écran
2.4, entrée de table 2.4, nettoyage préliminaire du script SQL des champs com_district et com_industry

2.5, sortie de table

<code class="sql"><span class="hljs-keyword">select a.*,<span class="hljs-keyword">case <span class="hljs-keyword">when com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%业&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%织&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%育&#39; <span class="hljs-keyword">then <span class="hljs-literal">null <span class="hljs-keyword">else com_district <span class="hljs-keyword">end <span class="hljs-keyword">as com_district1
,<span class="hljs-keyword">case <span class="hljs-keyword">when com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%业&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%织&#39; <span class="hljs-keyword">or com_district <span class="hljs-keyword">like <span class="hljs-string">&#39;%育&#39; <span class="hljs-keyword">then <span class="hljs-keyword">concat(com_district,<span class="hljs-string">&#39;-&#39;,com_industry) <span class="hljs-keyword">else com_industry <span class="hljs-keyword">end <span class="hljs-keyword">as com_industry_total
,<span class="hljs-keyword">replace(com_addr,<span class="hljs-string">&#39;地 址:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_addr1
,<span class="hljs-keyword">replace(com_phone,<span class="hljs-string">&#39;电 话:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_phone1
,<span class="hljs-keyword">replace(com_fax,<span class="hljs-string">&#39;传 真:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_fax1
,<span class="hljs-keyword">replace(com_mobile,<span class="hljs-string">&#39;手机:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_mobile1
,<span class="hljs-keyword">replace(com_url,<span class="hljs-string">&#39;网址:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_url1
,<span class="hljs-keyword">replace(com_email,<span class="hljs-string">&#39;邮箱:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_email1
,<span class="hljs-keyword">replace(com_contactor,<span class="hljs-string">&#39;联系人:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_contactor1
,<span class="hljs-keyword">replace(com_emploies_nums,<span class="hljs-string">&#39;公司人数:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_emploies_nums1
,<span class="hljs-keyword">replace(com_reg_capital,<span class="hljs-string">&#39;注册资金:万&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_reg_capital1
,<span class="hljs-keyword">replace(com_type,<span class="hljs-string">&#39;经济类型:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_type1
,<span class="hljs-keyword">replace(com_product,<span class="hljs-string">&#39;公司产品:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_product1
,<span class="hljs-keyword">replace(com_desc,<span class="hljs-string">&#39;公司简介:&#39;,<span class="hljs-string">&#39;&#39;) <span class="hljs-keyword">as com_desc1<span class="hljs-keyword">from s_socom_data <span class="hljs-keyword">as a</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code><br/><br/><br/>
Copier après la connexion

Remarques sur les paramètres de sortie de la table
Remarques :
① Ne cochez pas l'option de table coupée lorsque des opérations incrémentielles du robot sont impliquées

②Problèmes de connexion aux données Sélectionnez la base de données dans laquelle la table dans la sortie de la table est située
③Problèmes de mappage de champs Assurez-vous que les champs dans le flux de données et le nombre de champs dans la table physique sont cohérents

3. Conversion de bouilloire etl2 nettoyage

Tout d'abord, créez le tableau et ajoutez 4 champs pour démontrer les étapes de la vidéo

L'index de champ ne mentionne pas l'algorithme d'indexation recommandé L'algorithme BTREE améliore l'efficacité des requêtes

Effectuez principalement le fractionnement et le nettoyage des champs sur le nouveau com_industry généré par etl1
3.1.kettle nom du fichier : trans_etl2_socom_data

3.2. Y compris les contrôles : entrée de la table>>> Direction du flux de données : etl1_socom_data>>>>etl2_socom_data

Remarques :
① Ne cochez pas l'option de table coupée lorsque des opérations incrémentielles du robot sont impliquées
②Sélectionnez la table pour les problèmes de connexion de données La base de données où se trouve la table dans la sortie
③Les problèmes de mappage de champ garantissent que le nombre des champs dans le flux de données et la table physique sont cohérents



Capture d'écran de la conversion de la bouilloire 2

3.4. Le script SQL divise com_industry et termine le nettoyage. de tous les champs. La relation temporelle entre les champs de capital enregistré peut être ajustée sans démontage détaillé ni ajustement du code
4. Inspection de la qualité de l'effet de nettoyage

4.1 Si les données de la source de données du robot correspondent les données du site Web
select a.*,case 
#行业为&#39;&#39;的值 置为空when length(com_industry)=0 then null
#其他的取第一个-分隔符之前else substring_index(com_industry,&#39;-&#39;,1)  end as com_industry1,case 
when length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=0 then null
#&#39;交通运输、仓储和邮政业-&#39; 这种值 行业2 也置为nullwhen length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=1 and length(substring_index(com_industry,&#39;-&#39;,-1))=0 then nullwhen length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=1  then substring_index(com_industry,&#39;-&#39;,-1)else substring_index(substring_index(com_industry,&#39;-&#39;,2),&#39;-&#39;,-1)end as com_industry2,case 
when length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))<=1 then nullwhen length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=2 then  substring_index(com_industry,&#39;-&#39;,-1)else substring_index(substring_index(com_industry,&#39;-&#39;,3),&#39;-&#39;,-1)end as com_industry3,case 
when length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))<=2 then nullelse substring_index(com_industry,&#39;-&#39;,-1)end as com_industry4from etl1_socom_data as a
Copier après la connexion

Si le robot d'exploration et le traitement des données sont traités ensemble, le jugement a déjà été fait lors de l'exploration. Cette étape peut être omise. Si vous vous connectez aux collègues du robot d'exploration en amont, cette étape doit être jugée en premier. sinon, le nettoyage sera inutile. Généralement, les collègues du robot d'exploration sont tenus de stocker l'URL demandée pour un traitement ultérieur des données afin de vérifier la qualité des données

4.2 Calculer la source de données du robot et le volume de données de chaque table de données de nettoyage etl

🎜>

Remarque : le volume de données des trois tables sans filtrage d'agrégation dans le script SQL doit être égal

4.2.1 La requête SQL pour la table suivante est dans la même base de données. dans la même base de données, la table doit être suivie de. Le nom de la base de données

n'est pas recommandé lorsque la quantité de données est importante


4.2.2 Comparaison de la sortie totale de la table une fois la conversion de la bouilloire terminée.

select count(1) from s_socom_dataunion all
select count(1) from etl1_socom_dataunion all
select count(1) from etl2_socom_data
Copier après la connexion

La quantité totale de données émises par la table de la bouilloire
4.3 Vérifier la qualité du nettoyage etl
Assurez-vous que le les deux premières étapes sont correctes et l'auto-inspection du travail de nettoyage etl responsable du traitement des données commence à nettoyer la source de données. La vérification du script d'écriture sur le terrain du site Web socom nettoie principalement la région et l'industrie et remplace les champs redondants dans d'autres domaines. Par conséquent, une vérification de script est adoptée.

Trouver l'url de la page et les données du site Web pour vérification

là où elles sont écrites comme ceci Il est pratique de vérifier l'état de nettoyage d'un certain champ

Comparaison des données de cette page et des données de nettoyage final de la table etl2_socom_data

select * 
from etl2_socom_data 
where com_district is null and length(com_industry)-length(replace(com_industry,&#39;-&#39;,&#39;&#39;))=3
Copier après la connexion

Données de la page Web
Données de la table etl2_socom_data
Les travaux de nettoyage sont terminés.
Si vous rencontrez des problèmes pendant le processus d'apprentissage ou souhaitez obtenir des ressources d'apprentissage, vous êtes invités à rejoindre le groupe d'échange d'apprentissage

626062078, apprenons Python ensemble !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal