Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Cadena de texto

Buenos días,

A ver si alguien me puede ayudar:

Tengo dos tablas:

Tabla 1

Número
glusterblock-storage-provisioner-dc-1-3rg3j4
busqueda-ms-002-5
liquidación comercialpagos-2-00er4
drupal-cms-asyb-21-02

Tabla 2

NúmeroValor
glusterblock-storage-provisioner-dc123
busqueda-ms45
pagos de liquidación comercial33
drupal-cms-asyb54


Necesitaría traer el valor de la tabla 2 a la tabla 1 y para ello la función DAX debería recorrer el texto de la tabla 2 hasta que coincidiera con el texto de la tabla 1. La teoría la sé pero no logro llevarlo a una sentencia DAX.
Como se ve, no siguen un patrón en el que pueda hacer un split por "-".

He probado con la siguiente sentencia pero no ajusta la búsqueda al 100%:

Valor = DÓNDE TextbeforeQM =
IZQUIERDA(
'Tabla 1'[Nombre],
DÓNDE mylen1 =
ENCONTRAR ( "-", 'Tabla 1'[Nombre], 1, 0 )
DEVOLUCIÓN
SI ( mylen1 = 0, SOLAMENTE ( 'Tabla 1'[Nombre] ), mylen1 - 1 )
)
DEVOLUCIÓN
VALOR DE BÚSQUEDA (Tabla 2 [Valor] ,Tabla 2 [Nombre], TextbeforeQM )
¿alguna idea por favor?
Un saludo y gracias de entemano
  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    La solución era mucho más simple que la forma en que la estaba expresando. Estaba obsesionado con DAX cuando hay una función de power query que resuelve el problema.
    Es Table.FuzzyNestedJoin...

4 Replies

  • @jemalosa , algo así

    Valor = VAR TextbeforeQM =
    LEFT(
    'Tabla 1'[Nombre],
    VAR mylen1 =
    FIND ( "-", 'Tabla 1'[Nombre], 1, 0 )
    RETURN
    IF ( mylen1 = 0, LEN ( 'Tabla 1'[Nombre] ), mylen1 - 1 )
    )
    RETURN
    maxx (filter('Tabla 2', 'Tabla 2' [Nombre]= TextbeforeQM ),'Tabla 2' [Valor])

    ¿Cuál es el resultado esperado?

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola amitchandak,

      Gracias por su ayuda,

      He probado su solución y me aporta los mismos valores que con la solución que ya había probado.

      Hay ciertas cadenas de texto que no me aportan el valor.

      ¿Alguna idea?

      Tabla 1Valor
      desafíos-compromisos-lote-7-d25lg
      desafíos-compromisos-9-tpq55
      desafíos-compromisos-9-x8jvx

      Tabla 2Valor
      desafíos-compromisos2
      desafíos-compromisos-lote1

      Saludos

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Trataré de explicarlo mejor:

      Tengo una tabla con miles de filas similar a:

      Cuadro 1
      alertmanager-main-0-rdes34
      alertmanager-main-1
      alertmanager-main-2-234r
      apa-app-9-vr6
      apa-app-4
      cluster-events-kafka-11
      cluster-events-kafka-2-23t5

      Tengo otra tabla similar a esta que contiene un campo de valor:

      Tabla 2 Valor
      alertmanager-main 3
      apa-app 1
      cluster-events-kafka 1


      Necesito encontrar los valores de la tabla 2 en la tabla 1. Para las filas 1,2 y 3 de la Tabla 1 el valor sería "3".
      Para las filas 4 y 5 el valor sería "1" y para las filas 6 y 7 el valor sería "1".

      Como puede ver, los nombres de la Tabla 1 no tienen un patrón igual, ya que pueden tener 1 o dos guiones.

      ¿Cómo podría hacer una búsqueda para que cuando haga coincidir el nombre de la tabla 2 con la parte común del nombre de la tabla 1 pueda encontrar el valor?

      Saludos

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        La solución era mucho más simple que la forma en que la estaba expresando. Estaba obsesionado con DAX cuando hay una función de power query que resuelve el problema.
        Es Table.FuzzyNestedJoin...