Forum Discussion
¿Puedo ejecutar scripts de Python externos en el escritorio de Power BI?
Realmente disfruto integrando scripts de Python en mis consultas, pero estoy empezando a encontrarme con un problema. Quiero usar parámetros de entrada para mis scripts de Python, y parece que la única forma de hacerlo también rompe el editor de Python incorporado y hace que la lectura del código M sea muy fea.
Source = Python.Execute("from urllib.parse import unquote#(lf)import re#(lf)import io#(lf)#(lf)input_url = """&SafeLinkURL&"""#(lf)table = """"""url;#(lf)""""""+input_url+""""""#(lf)""""""#(lf)df = pandas.read_csv(io.StringIO(table))#(lf)print(df)#(lf)"),
Me parece que una buena solución sería externalizar mejor el script python...
¿Hay alguna manera de ejecutar scripts locales externos de Python a través de la función Python.Execute que se pueda mantener fácilmente?
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.
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.
4 Replies
- Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
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 ...