Cómo procesar los datos del rastreador de Python
1. Primero comprenda las siguientes funciones:
establecer la función de longitud variable() char_length() función de reemplazo() función max()
1.1, establecer la variable establecer @variable nombre=valor
set @address='China-Provincia de Shandong-Ciudad de Liaocheng-Condado de Xinxian'; seleccione @address
1.2, la diferencia entre la función length() y la función char_length()
Seleccione longitud('a')
,char_length('a')
,longitud('in')
,char_length('in ') p>
1.3 Combinación de la función reemplazar() y la función length()
Establecer @address='China-Shandong Province-Liaocheng-Xinxian' select @address
,reemplazar(@dirección,'-',' ') como dirección_1
,longitud(@dirección) como len_add1
,longitud(reemplazar(@dirección,' -', '')) as len_add2
,length(@address)-length( replace(@address,'-','')) as _count
etl Borrar divisores con obvio Cómo determinar cuántos campos divididos agregar a una nueva tabla
Calcule cuántos símbolos hay en com_industry para determinar cuántos campos agregar. El valor máximo + 1 es el número de campos que. se puede dividir.
Hay 3 campos en esta tabla, por lo que se puede dividir en 4 campos industriales, es decir, 4 categorías industriales
select max(length(com_industry)-length(replace(com_industry,'-',' ' )) como _max_count
de etl1_ socom_data
1.4 Establecer la variable substring_index() Uso de la función de interceptación de cadenas
set @address='China-Shandong. Provincia -Liaocheng-Xinxian';
seleccione
substring_index(@dirección dirección,'-',1) como china,
substring_index(substring_index(@ dirección ,'-',2),'-',-1) como provincia,
substring_index(substring_index(@ dirección,'-',3),'-',-1) como ciudad,
substring_index(@address,'-',-1) como distrito
1.5 Función de juicio condicional caso cuando
caso cuando entonces cuando entonces el valor termina como. nombre del campo
seleccione caso cuando 89> 1. Nombre del archivo Kettle: trans_etl1_socom_data
2.2 Incluir controles: entrada de tabla >>> salida de tabla
2.3. dirección del flujo: s_socom_data >>>etl1_socom_data
Captura de pantalla de la transformación de la caldera 1
2.4. Entrada de tabla 2.4. Inicialización del script SQL Limpieza de campos com_district y com_industry
Elija una .
*, caso cuando com_district es como '%Industry' o com_district como '%Weaving' o com_district como '%Yukon', entonces null, de lo contrario, com_district termina como com_district1
、caso cuando com_ District es como '%industry' o com_district como '%weaving' o com_district como '%yuk' y luego concat(com_district,'-',com_industry) de lo contrario, com_industry termina como com_ Industry_total
, reemplaza (com_addr,'Address:','') como com_addr1
,reemplazar(com_phone,'Teléfono:','') como com_phone1
,reemplazar(com_fax,'Fax:','') como com_fax,'Fax:' ,'') como com_fax,'Fax:','') como com_fax,'Fax:','') como com_phone1
,reemplazar(com_fax,'fax:'') como com_fax,' fax:'','') as com_fax,'fax:'',''') as com_fax 'fax:',''') as com_fax1
,replace(com_mobile,'teléfono:' ,'') como com_mobile1
,reemplazar(com_url,'url:','') como com_url1
,reemplazar(com _email,'Email:','') como com_email1
,replace(com_contactor,'Contacto:','') as com_contactor1
,replace(com_emploies_nums,'Número de personas en la empresa:','') as com_emploies_nums1
,reemplazar(com_reg_capital,'Capital registrado: 10,000','') como com_reg_capital1
,reemplazar(com_type,'Tipo económico:','') como com_type1
,reemplazar(com_product,'Producto de la empresa:','') como com_product1
,reemplazar(com_desc,'Perfil de la empresa:','') como com_desc1de s_socom_data como
2.5. Salida de tabla
Notas sobre la configuración de salida de tabla
Nota:
① No marque la opción de tabla de recorte cuando se trata de operaciones incrementales del rastreador
②Problema de conexión de datos: seleccione la base de datos donde se encuentra la tabla en la salida de la tabla
③Problema de asignación de campos Asegúrese de que el número de campos en el flujo de datos sea el mismo que el número de campos en la tabla física
p>
3. Limpieza etl2 de conversión de hervidor
Primero cree una tabla y agregue cuatro pasos de demostración en el video
El índice del campo no menciona el algoritmo de índice. Se recomienda utilizar el algoritmo BTREE para mejorar la eficiencia de la consulta.
Realice principalmente división y limpieza de campos en el nuevo com_industry generado por etl1
3 Problemas de mapeo de campos
1.1.Nombre de archivo de Kettle: trans_etl2_socom_data
3.2 Incluye controles: entrada de formulario >>> salida de formulario
3.3 Dirección del flujo de datos: etl1_socom_data >>> etl2_socom_data
Notas:
①. Para operaciones incrementales que involucran rastreadores, no marque la opción para cortar la tabla
②Problemas de conexión de datos Seleccione la base de datos donde se encuentra la tabla en la salida de la tabla
③Problemas de asignación de campos Asegúrese de que los campos en el flujo de datos El número de campos es el mismo que el número de campos en la tabla física El número de campos correspondientes es el mismo
Tomando el fondo del bote y convirtiéndolo en 2
.3.4. Secuencia de comandos SQL dividida com_industry Complete la limpieza de todos los campos La relación de tiempo del campo de capital registrado no es cuidadosa Simplemente desmonte y ajuste el código
seleccione a.*,case
# El valor de la industria se establece en nulo cuando longitud(com_industry)=0 y luego nulo
#Otro toma primero - separador antes de lo contrario substring_index(com_industry,'-',1) ?finaliza como com_industry1,case p>
cuando length(com_industry)-length(replace( com_industry,'-','' ))=0 entonces null
#'Transporte, almacenamiento y post-' Este valor Industry2 es también se establece en nulo cuando length(com_industry)-length(replace( com_industry,'-',''))= 1 y length(substring_index(com_industry,'-',-1))=0 y luego null cuando length(com_industry)-length (reemplazar (com_industry,'-',''))=1? Luego substring_index(com_industry,'-',-1)de lo contrario substring_index(substring_index(com_industry,'-',2),'-',-1)end como com_industry2,case
Cuando length(com_industry)-length(replace(com_industry,' -',''))<=1 entonces null cuando length(com_industry)-length(replace(com_industry,'- ','')=2) termina como com_industry2,case
.',' '))=2 y luego ?substring_index(com_industry,'-',-1)else substring_index(substring_index(com_industry,' -',3),'-',-1)end as com_industry3 ,case
cuando length(com_industry)-length(replace(com_industry,'-',''))<=2 entonces null además substring_index(com_industr
y,'-',-1)termina como com_industry4de etl1_socom_data como
4. Efecto de limpieza de la inspección de calidad
4.1 Si los datos de la fuente de datos del rastreador son consistentes con los datos del sitio web
Si el trabajo en sí se maneja mediante el rastreo y el procesamiento de datos juntos, ya se ha juzgado durante el rastreo, por lo que este paso se puede omitir. Si se trata de conectarse con colegas rastreadores ascendentes, este paso debe juzgarse primero. De lo contrario, la limpieza será inútil. Generalmente, los colegas del rastreador deben almacenar la URL de solicitud para facilitar el procesamiento de datos posterior y verificar la calidad de los datos.
4.2 Calcule la fuente de datos del rastreador y el volumen de datos de cada etl para limpiar los datos. table
Nota: El script SQL no El volumen de datos resumidos de las tres tablas filtradas debe ser igual
4.2.1. Consulta SQL si la siguiente tabla está en la misma base de datos. De lo contrario, se debe agregar el nombre de la base de datos donde se encuentra la tabla después de
No recomendado para grandes cantidades de datos
select count(1) from s_socom_dataunion all
p>
seleccione el recuento (1) de etl1_socom_dataunion all
seleccione el recuento(1) de etl2_socom_data
4.2 Comparación de tablas 2.2 Comparación de la producción total de la tabla después de la conversión de la caldera p>
Salida total de la mesa de hervidor
4.3 Verificar limpieza etl La calidad de la limpieza se lleva a cabo y otros campos se reemplazan con campos redundantes, por lo que es necesario usar un script para verificar
Buscar page_url y los datos del sitio para verificar
Buscar page_url y los datos del sitio están verificados
dónde está escrito así, por lo que es fácil ver cómo está un campo limpio
seleccione *
de etl2_socom_data
donde com_district está vacío y longitud(com_industry )-length(replace(com_industry,'-','')) =3
Compare los datos de esta página con los datos finales limpios de la tabla etl2_socom_data
Datos de la página web
Datos de la tabla etl2_socom_data
Limpieza completada.