以前 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 中似乎不起作用。我创建了两个单独的文件
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.
'''
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
然后转瞬即逝!成功了。
我正在 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 中似乎不起作用。我创建了两个单独的文件
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. '''
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
然后转瞬即逝!成功了。