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 mis salvadores,
Espero que estén bien. Necesito crear una nueva tabla basada en el cálculo de la Tabla 1 Mi tabla se ve así
Tabla 1:
Idno | Store_Number | Lento |
AA1 | S1 | y |
AA1 | S2 | n |
AA1 | S3 | y |
AA1 | S4 | y |
AA1 | S5 | n |
AA1 | S6 | y |
Debido a la descarga lenta en las tiendas otras tiendas se ven afectadas y por lo tanto un nuevo coulmn necesita ser creado como a continuación mostrando el problema que causa las tiendas. Por ejemplo: S4 se ve afectado debido a la descarga lenta en s1 y s3, ya que ambas tiendas están marcadas como "y"
Tabla 1 (Actualizado)
Idno | Store_Number | Lento | Afectados por |
AA1 | S1 | y | |
AA1 | S2 | n | S1 |
AA1 | S3 | y | S1 |
AA1 | S4 | y | S1,S3 |
AA1 | S5 | n | S1,S3,S4 |
AA1 | S6 | y | S1,S3,S4 |
Ahora necesito codificar para Afectados por Columna para mostrar las tiendas y también crear una nueva tabla (Como a continuación) que registra cada tienda afectada por en una fila como esta
Tabla 2:
Idno | Store_Number | Afectados por |
AA1 | S2 | S1 |
AA1 | S3 | S1 |
AA1 | S4 | S1 |
AA1 | S4 | S3 |
AA1 | S5 | S1 |
AA1 | S5 | S3 |
AA1 | S5 | S4 |
AA1 | S6 | S1 |
AA1 | S6 | S3 |
AA1 | S6 | S4 |
Mediante la creación de esta nueva tabla i m tratando de establecer una relación de uno a muchos de la que puedo extraer datos con fines de visulación. Gracias a la 🙂
Solved! Go to Solution.
En realidad, se puede hacer de una manera mucho, mucho más fácil si tiene una columna que especifica el orden en Table1 (o agrega un índice como sugiere @nandic). En mi toma anterior, de alguna manera (debió haber estado dormido) asumí que quería una solución que usaría la columna "Afectado por" en "Tabla1 (actualizado)". Esto sólo complica las cosas innecesariamente
Table2 =
GENERATE (
Table1,
SELECTCOLUMNS (
CALCULATETABLE (
DISTINCT ( Table1[Store_Number] ),
Table1[Index] < EARLIER ( Table1[Index] ),
Table1[Slow] = "y",
ALLEXCEPT ( Table1, Table1[IDNO] )
),
"Affected by", Table1[Store_Number]
)
)
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
En realidad, se puede hacer de una manera mucho, mucho más fácil si tiene una columna que especifica el orden en Table1 (o agrega un índice como sugiere @nandic). En mi toma anterior, de alguna manera (debió haber estado dormido) asumí que quería una solución que usaría la columna "Afectado por" en "Tabla1 (actualizado)". Esto sólo complica las cosas innecesariamente
Table2 =
GENERATE (
Table1,
SELECTCOLUMNS (
CALCULATETABLE (
DISTINCT ( Table1[Store_Number] ),
Table1[Index] < EARLIER ( Table1[Index] ),
Table1[Slow] = "y",
ALLEXCEPT ( Table1, Table1[IDNO] )
),
"Affected by", Table1[Store_Number]
)
)
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
NewTable = OriginalTable
Acabo de enterarme...
@janarbaskar ,
La primera tabla se puede actualizar con la nueva columna "Afectado por". En Power Query, agregue el índice para esta tabla.
Después de eso agregue esta columna calculada:
¿No entendía si ese es el resultado final o también necesitas la última mesa para hacer relación?
Salud
Nemanja
Hola nandic,
La solución de columna affecetd_by u gave se está ejecutando durante 30 minutos ya que mi conjunto de datos es enorme (en millones) hay una manera de no utilizar el filter() que i belive está aumentando el tiempo de ejecución
gracias de nuevo por su tiempo
hola nandic,
Lo sentimos por no hacer la pregunta claramente, necesito la parte de la tabla 2 donde cada tienda defectuosa se almacena como un registro.. Por ejemplo, ya que la tienda S4 se vio afectada por S1 y S3 y la nueva tabla que tiene que ser creada en líneas individuales de esta manera
AA1 | S4 | S1 |
AA1 | S4 | S3 |
Pero muchas gracias por el código de columna calculado que desgined utilizando alguna otra lógica . Su lógica es simple y elegante
Gracias de nuevo
Hola @janarbaskar
Esto sería más fácil en PQ, pero si lo desea en DAX, puede crear una tabla calculada. Table1 en el código es realmente lo que se muestra como Table1 actualizado:
Table1B =
GENERATE (
SUMMARIZE ( Table1, Table1[IDNO], Table1[Store_Number] ),
VAR affectedBy_ =
CALCULATE ( DISTINCT ( Table1[Affected by] ) )
VAR numItems_ =
IF (
LEN ( affectedBy_ ) = 0,
0,
LEN ( affectedBy_ ) - LEN ( SUBSTITUTE ( affectedBy_, ",", "" ) ) + 1
)
VAR baseT_ =
GENERATESERIES ( 1, numItems_ )
VAR resT_ =
ADDCOLUMNS (
baseT_,
"NewColumn",
VAR itemNum_ = [Value]
VAR pos1_ =
IF (
itemNum_ = 1,
0,
FIND (
UNICHAR ( 160 ),
SUBSTITUTE ( affectedBy_, ",", UNICHAR ( 160 ), itemNum_ - 1 ),
1,
0
)
)
VAR pos2_ =
VAR foundAt_ =
FIND (
UNICHAR ( 160 ),
SUBSTITUTE ( affectedBy_, ",", UNICHAR ( 160 ), itemNum_ ),
1,
0
)
RETURN
IF ( foundAt_ = 0, LEN ( affectedBy_ ) + 1, foundAt_ )
VAR extracted_ =
MID ( affectedBy_, pos1_ + 1, pos2_ - pos1_ - 1 )
RETURN
extracted_
)
RETURN
SELECTCOLUMNS ( resT_, "NewColumn", [NewColumn] )
)
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
Sólo wow :O... Mi affected_by código de columna por @nandic no ha terminado de ejecutarse todavía se actualizará y probará esto una vez que esté hecho...
Una vez más sólo wow y gracias.. Ustedes son leyendas
Y lo mismo en PQ (mucho más simple). Copie el código M siguiente en una consulta vacía para ver los pasos. "Tipo cambiado" es su Tabla1, el procesamiento comienza en "Añadido Personalizado"
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnQ0VNJRCgYRlUCsFKsDFzMCEnkQSSRRY6hKVFETuKgOUAWShCncEKCEDlAdkpwZsiawXCwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [IDNO = _t, Store_Number = _t, #"Slow " = _t, #"Affected by" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"IDNO", type text}, {"Store_Number", type text}, {"Slow ", type text}, {"Affected by", type text}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "NewColumn", each Text.Split([Affected by],",")),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "NewColumn"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Slow ", "Affected by"}),
#"Filtered Rows" = Table.SelectRows(#"Removed Columns", each ([NewColumn] <> ""))
in
#"Filtered Rows"
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
@AlB, 🙌 🙌🙌 🙌,🙌¡bien hecho para la solución dax!
Si no hubiera ninguna columna "Affected by" (creada con dax), ¿sería posible crear una solución completa basada solo en Power Query (lenguaje M)?
En otras palabras, ¿sería posible crear la columna "Afectado por" mediante Power Query?
Gracias
Claro, PQ puede hacer muchas cosas. Copie esto en una consulta en blanco para ver los pasos. Probablemente sería lento para las mesas grandes aunque
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnQ0VNJRCgYRlUqxOnABIyCRhyxgjK7CBF3AFF2LGURFLAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [IDNO = _t, Store_Number = _t, Slow = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"IDNO", type text}, {"Store_Number", type text}, {"Slow", type text}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "Affected by", each Text.Combine(Table.SelectRows(#"Added Index", (inner)=>inner[IDNO]=[IDNO] and inner[Slow]="y" and inner[Index]<[Index])[Store_Number], ",")),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Index"})
in
#"Removed Columns"
Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
@janarbaskar , desde la perspectiva de Power Query, la Tabla 1 (Actualizada) y la Tabla 2 son idénticas, pero solo mediante transformaciones diferentes.
Tengo dificultades para entender lo que quieres. 🤔
Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension! |
DAX is simple, but NOT EASY! |
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 |