Forum Discussion
Power Query Configurable / Dynamic If (instrucción) If
- 6 years ago
Gracias @artemus ,
que elude muy bien la combinación de las dependencias forumula con el contexto de fila.
¿Se trata de una limitación general al usar Expression.Evaluate o cree que el error se debe a alguna configuración específica dentro de este ejemplo?
@hnguyen76 ,Lo he reescrito ligeramente para que sea más fácil intercambiar el código de ejemplo con sus datos reales.
Además, he incluido una declaración "List.Select" para obtener el valor correcto de las condiciones evaluadas:let ConditionsFromExcelTable = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WykxT0lGKDkvNS8kvilWwVYhRCk7MLchJNYxRAkqUZKTmASmIkFKsDky9f1Fmun9BalFiSX6RZwpEX1JReoySQmJeikJ0cGVxSWouRNgxANmkoNTi0pwSQySj0NUq5BehGhDgj2yAY0CAP0J3SGpFiZ5zfl5JYmZesQbMGzoKcG8YxShpYvojFgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Hypothesis = _t, Condition = _t, Conclusion = _t, Result = _t]), AddFunctionColumToConditions = let Source = ConditionsFromExcelTable, #"Changed Type" = Table.TransformColumnTypes(Source,{{"Hypothesis", type text}, {"Condition", type text}, {"Conclusion", type text}, {"Result", type text}}), GenerateFunctions = Table.AddColumn(#"Changed Type", "Function", each Expression.Evaluate("each if " & [Condition] & " then """ & [Result] & """ else null", [Text.Contains = Text.Contains, Comparer.OrdinalIgnoreCase = Comparer.OrdinalIgnoreCase])) in GenerateFunctions, SourceData = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUQpOzC3ISTUCsYyBhG9inlKsTrSSEVwKpCg9H0i4FwWBpYzhUiBWUlE6kHQMAEuZwKVArKTUVKhULAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Vendor = _t, OrigOperatorId = _t, System = _t]), #"Changed Type" = Table.TransformColumnTypes(SourceData,{{"Vendor", type text}, {"OrigOperatorId", type text}, {"System", type text}}), Evaluate = Table.AddColumn( #"Changed Type", "Custom", each List.First(List.Select(List.Transform(AddFunctionColumToConditions[Function], (fn) => fn(_)), each _ <> null)) ) in Evaluate
Hola @hnguyen76 ,
Puede crear una columna condicional. Cuando desee cambiar If Statement, solo tiene que hacer clic en ese paso en lugar de cambiar el código manualmente en el Editor avanzado.
Para obtener más información, puede hacer referencia al blog para probarlo.
https://radacad.com/conditional-column-in-power-bi-using-power-query-you-can-do-anything
- hnguyen766 years ago
Resolver II
Hola @v-xuding-msft ,
La idea es desarrollar una solución y hacerla "sin contacto". La condición cambia las horas extras y nos gustaría permitir que el propietario de un producto cree sus propias hipótesis/conclusiones que se generarán sin alterar nada dentro de Power BI. Puede suponer que los usuarios no tendrán la capacidad de puede cualquier modificación grande o pequeña a un modelo de producción.
- v-xuding-msft6 years ago
Community Support
Hola @hnguyen76 ,
Desafortunadamente, como sé, no es compatible. Si realmente necesita esta característica implementada, puede enviar una idea en https://ideas.powerbi.com/ideas/.
- hnguyen766 years ago
Resolver II
@v-xuding-msft ,
Tendría que discrepar. Creo que tenemos todas las piezas necesarias. Actualmente tenemos la capacidad de agregar variables y funciones dentro de una columna personalizada. Reconozco plenamente que mi conocimiento actual de la consulta de energía no es suficiente para construir una solución como tal, pero mi intuición dice que es posible.la lógica de función prevista sería algo de este tipo:
1. cntrows - contar filas en la tabla de configuración
2. para i-1 a cntrows
x - x-i-// Este sería mi valor de hipótesis (si o si de lo contrario termina)
y'y'i' // Esta sería mi condición para establecer
z - z-i// Este sería mi resultado
3. Haga lógica comparativa para cada fila. Resultado de la devolución de la primera verdadera
4. Bucle iterativo: i-i++