hannahemeredith
Tengo más de 87000 respuestas de una encuesta y una de las preguntas era códigos postales. Estoy tratando de filtrar a través de los códigos postales y deshacerme de respuestas como «234», «V3g1s4», «no, gracias», etc. El uso de las funciones de filtro funciona para deshacerme de los espacios en blanco, pero para tantas respuestas, ¿cómo puedo Me deshago de las respuestas inválidas de manera eficiente? Estoy buscando un método para filtrar las respuestas no numéricas y las respuestas de menos o más de 5 dígitos.
En una nota al margen, si alguien conoce la mejor aplicación de mapas para usar dentro de PowerBi, ¡comparta! Estoy trabajando con varias características diferentes. ArcGis no puede mostrar la cantidad de códigos postales que tengo.
greg_deckler
Quizás:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjE2MDNRitWJVjIyhtBlxumGxRBmXr5CSUZiXnYxmAdWamqmFBsLAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Int32.From([Column1])), #"Removed Errors" = Table.RemoveRowsWithErrors(#"Added Custom", {"Custom"}), #"Duplicated Column" = Table.DuplicateColumn(#"Removed Errors", "Custom", "Custom - Copy"), #"Calculated Text Length" = Table.TransformColumns(Table.TransformColumnTypes(#"Duplicated Column", {{"Custom - Copy", type text}}, "en-US"),{{"Custom - Copy", Text.Length, Int64.Type}}), #"Filtered Rows" = Table.SelectRows(#"Calculated Text Length", each ([#"Custom - Copy"] = 5)), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "Custom - Copy"}) in #"Removed Columns"
sinergizado
Si desea validar los códigos postales, es posible que deba dar un paso más. Validación básica, lo único que puede verificar es si el código postal es numérico o no (solo EE. UU.). Hay expresiones regulares para los códigos postales, pero no tuvimos mucha suerte con ellos ya que solo tenemos datos de EE. UU., aunque podría ser útil si está recibiendo códigos postales de EE. UU. y Canadá.
Requerimos que se ingrese un código postal de 5 dígitos (solo EE. UU.) en nuestros micrositios. La entrada principal para los clientes potenciales no deseados es «12345»… que es un código postal válido (Schenectady, NY), por lo que debemos usar otros criterios para eliminar los clientes potenciales no deseados de esta región. El punto es que, si tiene 5 dígitos, puede verse bien, pero aún podría ser un código postal no válido.
Recurrimos a la compra de datos de código postal de: https://www.zip-codes.com/ que se actualiza mensualmente. Esto tiene el beneficio adicional de proporcionarnos datos adicionales: condado, ciudad, estado, longitud, latitud, códigos de área, etc. Tenemos un paso de limpieza de datos antes de cargar los datos en Power BI. Con estos datos, podemos usar una unión SQL para determinar si tenemos un código postal no válido o no (con excepciones).
greg_deckler
Quizás:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjE2MDNRitWJVjIyhtBlxumGxRBmXr5CSUZiXnYxmAdWamqmFBsLAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Int32.From([Column1])), #"Removed Errors" = Table.RemoveRowsWithErrors(#"Added Custom", {"Custom"}), #"Duplicated Column" = Table.DuplicateColumn(#"Removed Errors", "Custom", "Custom - Copy"), #"Calculated Text Length" = Table.TransformColumns(Table.TransformColumnTypes(#"Duplicated Column", {{"Custom - Copy", type text}}, "en-US"),{{"Custom - Copy", Text.Length, Int64.Type}}), #"Filtered Rows" = Table.SelectRows(#"Calculated Text Length", each ([#"Custom - Copy"] = 5)), #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "Custom - Copy"}) in #"Removed Columns"
hannahemeredith
En respuesta a greg_deckler
De acuerdo, soy un poco analfabeto en lo que respecta a la sintaxis. Intenté pegar el código y me dio esto:
greg_deckler
En respuesta a hannahemeredith
Sí, no puedo hacer eso, comencé con una consulta de Ingresar datos. Cree una consulta en blanco y péguela en mi código. Básicamente, lo que hice fue crear una columna personalizada con esta fórmula:
=Int32.Desde([Column1])
Esto devuelve un número si es un número o un error si no lo es. Luego hice clic derecho en esta columna y elegí «Eliminar errores». Entonces podría seleccionar esta columna y elegir Transformar | Extracto | Longitud. Luego filtre a solo 5. Finalmente, simplemente elimine esta columna.
Debería quedarse con su columna original con solo códigos postales válidos.
hannahemeredith
En respuesta a greg_deckler
¡Increíble! ¡Muchas gracias!