Si vous utilisez ** japonais pour le nom du dossier ou le nom du bloc-notes **, utilisez dbutils.notebook.run pour en utiliser un autre Il y a des cas où une erreur se produit lors de l'appel d'un notebook
J'ai un ordinateur portable avec la structure de dossiers suivante
/Users/xxx@yyy.jp
 |-MyNotebook
 |-Mon cahier
 |-MyNotebookCaller
 |-Appelant MyNotebook
 |-tester
   |-MyNotebook
   |-MyNotebookCaller
Parmi ceux-ci, dans les cas suivants, l'appel d'un autre Notebook à l'aide de dbutils.notebook.run a échoué.
MyNotebook Callertest/MyNotebookCallerDans les cas suivants, l'appel a réussi sans problème.
--Lorsque «japonais est utilisé» pour le nom du cahier appelé
-/Users/[email protected]/Mon notebook
--Lorsque «japonais est utilisé» pour le nom du dossier de stockage du notebook appelé
-/Users/[email protected]/test/MyNotebook
C'est un processus simple d'appel en passant des paramètres de MyNotebookCaller ou MyNotebook Caller à MyNotebook, et en imprimant les paramètres reçus dans MyNotebook.
/Users/xxx@yyy.jp/MyNotebook
dbutils.widgets.text("param1", "111")
dbutils.widgets.text("param2", "222")
print("param1:{},param2:{}".format(dbutils.widgets.get("param1"), dbutils.widgets.get("param2")))
#/Users/xxx@yyy.jp/Identique à mon carnet
/Users/xxx@yyy.jp/MyNotebookCaller
#Cmd1 Appelez MyNotebook dans le même dossier
dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
#Cmd2 Call My Notebook dans le même dossier
dbutils.notebook.run(
  "./Mon cahier",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
#Appeler mon notebook dans le dossier de test Cmd3
dbutils.notebook.run(
  "./tester/MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
#/Users/xxx@yyy.jp/Identique à MyNotebookCaller
#/Users/xxx@yyy.jp/Identique à mon carnet
#Cmd1 Appelez MyNotebook dans le même dossier
dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
#Cmd2 Appelez MyNotebook dans le dossier un niveau supérieur
dbutils.notebook.run(
  "../MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
Essayez d'appeler MyNotebook dans le même dossier depuis /Users/[email protected]/MyNotebook Caller
Cmd1 Appelez MyNotebook dans le même dossier
dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
En conséquence, j'ai obtenu une WorkflowException.
Il semble qu'une erreur ait été renvoyée en utilisant le japonais, qui est un caractère autre que des caractères latins (jeu de caractères ASCII).
com.databricks.WorkflowException: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_PARAMETER_VALUE: Only Latin1 (ASCII) characters are currently supported. Any international characters must be removed or replaced in workflow_context
Même si j'appelle MyNotebook dans le dossier de test,
Cmd2 Appelez MyNotebook dans le dossier de test
dbutils.notebook.run(
  "./tester/MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
Cela a également provoqué une exception WorkflowException
com.databricks.WorkflowException: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_PARAMETER_VALUE: Only Latin1 (ASCII) characters are currently supported. Any international characters must be removed or replaced in workflow_context
Essayez d'appeler MyNotebook dans le même dossier depuis /Users/[email protected]/test/MyNotebookCaller
Cmd1 Appelez MyNotebook dans le même dossier
dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
Cela a également abouti à une exception WorkflowException
com.databricks.WorkflowException: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_PARAMETER_VALUE: Only Latin1 (ASCII) characters are currently supported. Any international characters must be removed or replaced in workflow_context
japonais est utilisé pour le nom du carnet appeléEssayez d'appeler / Users / xxx @ yyy.jp / MyNotebook depuis /Users/[email protected]/MyNotebookCaller
Cmd2 Call My Notebook dans le même dossier
dbutils.notebook.run(
  "./Mon cahier",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
Le processus s'est terminé normalement même si le japonais a été utilisé pour le nom du cahier de l'appelé. Il semble que les paramètres passés sont également affichés correctement.
param1:val1,param2:val2
japonais est utilisé pour le nom du dossier de stockage du notebook appeléEssayez d'appeler /Users/[email protected]/test/MyNotebook depuis /Users/[email protected]/MyNotebookCaller
Appeler mon notebook dans le dossier de test Cmd3
dbutils.notebook.run(
  "./tester/MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)
Le processus s'est terminé normalement même si le japonais était utilisé pour le nom de dossier du bloc-notes appelé. Il semble que les paramètres passés sont également affichés correctement.
param1:val1,param2:val2
Soyez prudent lorsque vous utilisez le japonais pour les noms de dossier et les noms de bloc-notes
Recommended Posts