PowerShell Advanced Series

13. Separar 'Nombre Completo' en columnas

13. Split 'Full Name' Into Columns

Dividir una columna única usando el primer espacio como delimitador para obtener PrimerNombre y Apellidos por separado.

Split a single full-name column using the first space as a delimiter to create separate FirstName and LastName fields.

⚠️ Advertencia de ciberseguridad y producción ⚠️ Cybersecurity and production warning

Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, carpetas compartidas, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.

This exercise is for learning and testing only. Do not run scripts against real data, production environments, shared folders, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.

Objetivo del ejercicio

Exercise objective

Transformar una columna de nombre completo en columnas más útiles para reportes, cargas a sistemas, validaciones, búsquedas, correspondencia y segmentación.

Transform a full-name column into fields that are more useful for reporting, system imports, validation, search, correspondence, and segmentation.

Datos sintéticos

Synthetic data

EmployeeIDNombreCompleto
1001Juan Carballo
1002Maria Gonzalez
1003Pedro Martinez
1004Ana Ruiz Lopez
1005Carlos

Ejemplo base

Base example

$datos | Select-Object *,
@{Name="PrimerNombre"; Expression={$_.NombreCompleto.Split(' ', 2)[0]}},
@{Name="Apellidos"; Expression={$_.NombreCompleto.Split(' ', 2)[1]}}

Resultado esperado

Expected result

EmployeeIDNombreCompletoPrimerNombreApellidos
1001Juan CarballoJuanCarballo
1002Maria GonzalezMariaGonzalez
1003Pedro MartinezPedroMartinez
1004Ana Ruiz LopezAnaRuiz Lopez
1005CarlosCarlos

Script completo

Complete script

# ==========================================================
# PowerShell Advanced Topic 13
# Split Full Name Into Separate Columns
# ==========================================================

$inputFile  = "C:\Data\Employees.csv"
$outputFile = "C:\Data\Employees_Name_Split.csv"

$datos = Import-Csv $inputFile

$resultado = $datos | Select-Object *,
@{
    Name = "PrimerNombre"
    Expression = {
        if ($_.NombreCompleto -match "\s") {
            $_.NombreCompleto.Split(' ', 2)[0]
        }
        else {
            $_.NombreCompleto
        }
    }
},
@{
    Name = "Apellidos"
    Expression = {
        if ($_.NombreCompleto -match "\s") {
            $_.NombreCompleto.Split(' ', 2)[1]
        }
        else {
            ""
        }
    }
}

$resultado | Export-Csv $outputFile -NoTypeInformation -Encoding UTF8

Write-Host "Process completed."
Write-Host "Output file: $outputFile"

Aplicaciones reales

Real-world applications

  • Preparar listas de empleados, estudiantes o clientes.
  • Separar campos para mail merge, cartas o certificados.
  • Normalizar columnas antes de importar a CRM, HRIS o SIS.
  • Mejorar búsquedas y segmentaciones en Power BI.
  • Prepare employee, student, or customer lists.
  • Split fields for mail merge, letters, or certificates.
  • Normalize columns before importing into CRM, HRIS, or SIS systems.
  • Improve search and segmentation in Power BI.

Recomendaciones

Recommendations

  • Validar nombres con un solo valor antes de exportar.
  • No asumir que todos los nombres tienen la misma estructura.
  • Conservar la columna original para auditoría.
  • Revisar apellidos compuestos manualmente si el proceso es crítico.
  • Validate single-token names before exporting.
  • Do not assume every name follows the same structure.
  • Keep the original column for auditability.
  • Manually review compound names when the process is business-critical.

Valor del tópico

Topic value

Este caso parece simple, pero es fundamental en procesos de limpieza de datos. Separar correctamente nombres permite mejorar reportes, integraciones, comunicaciones y procesos downstream.

This case looks simple, but it is fundamental in data-cleaning workflows. Properly splitting names improves reporting, integrations, communications, and downstream processes.