Forum Discussion
¿Puedo ejecutar scripts de Python externos en el escritorio de Power BI?
- 4 years ago
Esta es una buena sugerencia: es posible que desee plantearla como una idea.
El problema (como yo lo veo) es la implementación interpretativa elegida por los desarrolladores de Power BI (Power Query) (básicamente Expression.Evaluate() ). Puede abusar del parámetro adicional en la llamada de Python para entregar la fuente del conjunto de datos, pero sigue siendo torpe. El mismo enfoque está presente en el lado visual de Power BI, por cierto, aún más restrictivo.
- 4 years ago
Entonces, aunque esto no respondió directamente a mi pregunta, me diste algunos términos de búsqueda que me llevaron a esta página:
https://blog.crossjoin.co.uk/2014/02/04/loading-power-query-m-code-from-text-files/
Donde pude hacer una técnica similar para importar un archivo python local como un var de cadena:
let PythonFile = Text.FromBinary(File.Contents("C:\test.py")), Source = Python.Execute(PythonFile) in SourceAhora, ¿cómo puedo poner una variable de entrada en el script de Python sin romper la importación de cadenas? Es posible que tenga que dividir el código python en dos archivos y compilar la cadena python importada en el código M antes de ejecutarlo como un bloque completo.
Sí, básicamente es volver al punto de partida. Lo que podría hacer es crear su propia convención de lenguaje que de alguna manera identifique sus variables en su código python, y luego haga un poco de manipulación de texto para dividir su cadena python en los lugares correctos y cortes en los nombres de las variables como lo espera Power Query ...
¡Esto en realidad resultó ser MUCHO más fácil de lo que esperaba!
Así que en mi script python traté de escapar de la cadena nombrándola así:
input_var = "&PowerBIvar&"Pero lo que funcionó muy bien fue seguir con esto en el Código M:
PythonFile = Text.FromBinary(File.Contents("C:\test.py")),
PythonString = Text.Replace(PythonFile,"&PowerBIvar&",PowerBIvar),
Output = Python.Execute(PythonString)