以前 Stackoverflow 的 Jupyter Notebook 版本 Python 问题 - Best/Cleanest 定义 Python 常量的方法

Jupyter Notebook version of previous Stackoverflow Python Question - Best/Cleanest way to define Python Constants

我正在 Jupyter notebook 中编写一个 Python 脚本来处理 运行 20+ 长 SQL 查询。我在单独的文件 queryStrings.ipynb 中定义了 SQL 查询字符串,代码的主体在文件 analytics2020.ipynb 中。

这个旧的 Whosebug post 描述了一个很好的干净的方法来定义一个单独文件的常量列表(参见最后一个答案......来自 Ned Batchelder 的那个)

python-best-cleanest-way-to-define-constant-lists-or-dictionarys

然而,这在 Jupyter Notebook 中似乎不起作用。我创建了两个单独的文件

  1. queryStrings.ipynb

    q_CurrWeekiOSDailySessionCountDuration = '''
    with session_boundaries as (
    SELECT
        e.cust_id_attr_value
       ,e.event_timestamp
       ,DATEDIFF(minutes, LAG(e.event_timestamp) OVER(PARTITION BY e.cust_id_attr_value ORDER BY e.event_timestamp), e.event_timestamp) AS inactivity_time
       ,LAG(e.event_timestamp) OVER(PARTITION BY e.cust_id_attr_value ORDER BY e.event_timestamp) as prior_event_timestamp
    FROM
       APPLICATIONDB e
    WHERE
       event_data:"c-platform-m-os" = 'iOS' AND 
       event_timestamp BETWEEN \'{:s}\' AND \'{:s}\'
    )
    select 
        session_date,
        sum(num_sessions) as total_sessions,
    
     etc. etc. 
     ''' 
    
  2. analytics2020.ipynb

    import pandas as pd
    
    
    
    import numpy as np
    
    from queryStrings import q_CurrWeekiOSDailySessionCountDuration
    
    print('===== q_CurrWeekiOSDailySessionCountDuration ====')
    
    print(q_CurrWeekiOSDailySessionCountDuration)
    

但是,当我尝试 运行ning 时,出现错误:

26 from queryStrings import q_CurrWeekiOSDailySessionCountDuration
     27 print('===== q_CurrWeekiOSDailySessionCountDuration ====')
     28 print(q_CurrWeekiOSDailySessionCountDuration)

ModuleNotFoundError: No module named 'queryStrings'

我引用的前一个 post 然而告诉我这应该有效。也许我有一种预感,这是因为这些文件是 Jupyter Notebook .ipynb 文件而不是普通的 vanilla .py 文件。

如果您能帮助解决这个问题,我们将不胜感激!非常感谢。

我做了一些研究,找到了一种在 Jupyter 中使用 %store class 来做到这一点的方法。

所以在 queryStrings.ipynb 我添加了行:

%store q_CurrWeekiOSDailySessionCountDuration

然后在 analytics2020.ipynb 我添加了行

%store -r q_CurrWeekiOSDailySessionCountDuration

然后转瞬即逝!成功了。