Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola a todos,
He estado revisando una gran cantidad de mensajes tratando de resolver lo siguiente. Haré todo lo posible para explicárselo.
El modelo se basa en información sobre las instalaciones de la empresa. Estas instalaciones están relacionadas por una jerarquía que tiene 4 niveles
faclvl1 --> faclvl2 --> faclvl3 --> faclvl4
Una tabla de hechos (Tabla A) tiene varios registros pero para todas las instalaciones a pesar de su nivel en la jerarquía. La columna está id_fac.
Existen 2 tipos principales de instalaciones, las que se incluyen en la Tabla B y la Tabla C y las que sólo están en la Tabla C.
En la Tabla B, tengo las cuatro columnas con la Jerarquía (faclvl1 / faclvl2 / faclvl3 / faclvl4)
En la Tabla C, tengo todas las instalaciones en una columna y otra columna especificando el tipo de instalaciones
Por lo tanto, para los que están sólo en la Tabla C, la única manera de crear una relación se basa en el nombre de la instalación que se hace como: Child_Parent_ChildCount.
Un ejemplo de esto podría ser Car-Parkinglot-A-105-001, donde Car es el tipo de instalación y el niño, Parkinglot-A-105 es la identificación del padre y 001 es la numeración de este niño.
así que... lo que estoy tratando de hacer es extraer el elemento primario de la cadena a otra columna para generar la jerarquía como tabla B y, a continuación, combinar ambas tablas (la nueva y la tabla B)
Un ejemplo de la tabla final podría ser el siguiente:
Instalación | parking_lot |
Aparcamiento-A-105-001 | Estacionamiento-A-105 |
Estacionamiento-A-105 | Estacionamiento-A-105 |
Estacionamiento-C | Estacionamiento-C |
WtrDispenser-Parkinglot-B-101-005 | Estacionamiento-B-101 |
He visto varios mensajes de @ImkeF usando Text.Contains pero no puedo hacer que funcione.
Gracias a todos.
Finalmente he consigo resolverlo, probablemente, de la manera más ineficiente.
Dudo la tabla de ArcGIS y gesto una columna personalizada en la tabla original y la nueva. La columna personalizada tiene el valor de 1 para cada fila.
A continuación, comuniqué ambas tablas, haciendo coincidir con esta columna personalizada (creando una tabla masiva). A continuación, usé la función Text.Contains para identificar las filas que tiene dentro de la cadena Parent (agregando la condición de que ambos campos no deben tener la misma longitud de texto).
Eso es todo.
¡Gracias por tu contribución!
Gracias @FrankAT y @ImkeF por asistir a este tema.
Desafortunadamente no puedohacer las tablas orginales.
El problema con @FrankAT sugerencia es que no hay una identificación única para el padre, de hecho hay más de 200. La cosa es que necesito identificar las filas que contiene la cadena de otra fila dentro.
Permítanme ampliar el ejemplo:
Instalación | Padre |
WtrDispenser-OfficeComp-01-005 | OfficeComp-01 |
Aparcamiento-A-105-001 | Estacionamiento-A-105 |
Estacionamiento-A-105 | Estacionamiento-A-105 |
Estacionamiento-C | Estacionamiento-C |
WtrDispenser-Parkinglot-B-101-005 | Estacionamiento-B-101 |
SubStation-PwrStation-A-005 | PwrStation-A |
Después de todo, debería ser capaz de tenerlo así:
faclvl1 | faclvl2 |
WtrDispenser-OfficeComp-01-005 | OfficeComp-01 |
Aparcamiento-A-105-001 | Estacionamiento-A-105 |
WtrDispenser-Parkinglot-B-101-005 | Estacionamiento-B-101 |
SubStation-PwrStation-A-005 | PwrStation-A |
Gracias
Hola @brumero ,
Creo que el problema es cómo estructuras tus datos:
Niño | Padre | # | Concatenación con diferentes seperadores |
Coche | Estacionamiento-A-105 | 001 | Coche,Parkinglot-A-105,001 |
Esa es una manera de identificar la parte principal.
Saludos FrankAT
Gracias @FrankAT ,
Esta columna procede de una tabla de ArcGIS, por lo que no puedo volver a estructurar la información.
Gracias
Hola
¿puede dar un ejemplo de vida de ArcGis?
Saludos FrankAT
Claro, este es un corto extracto de la mesa.
Espero que pueda encontrar esto útil.
Muchas gracias
Hola @brumero ,
pruebe el siguiente código M:
// Table
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wck4s0g1ILMrOzEvPyS/RddQ1NDDVNTAwVIrViVZCl0AXdAYLhJcUuWQWF6TmFaeimOUE1GIINAuoLRYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Facility = _t]),
#"Inserted Text Before Delimiter" = Table.AddColumn(Source, "Text Before Delimiter", each Text.BeforeDelimiter([Facility], "Parkinglot"), type text),
#"Added Custom" = Table.AddColumn(#"Inserted Text Before Delimiter", "Custom", each Text.End([Facility],Text.Length([Facility]) - Text.Length([Text Before Delimiter]))),
#"Inserted Text Before Delimiter1" = Table.AddColumn(#"Added Custom", "Text Before Delimiter.1", each Text.BeforeDelimiter([Custom], "-", 2), type text)
in
#"Inserted Text Before Delimiter1"
Figura
Saludos FrankAT
Hola @brumero
¿@FrankAT solución funciona para usted?
Si no es así, proporcione datos de ejemplo de las tablas de entrada también que coincidan con la tabla de salida que proporciona. ¡Gracias!
Imke Feldmann (The BIccountant)
If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!
How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |