Я пишу сценарий Python в записной книжке Jupyter для выполнения 20+ длинных SQL запросов. Я определил строки запроса SQL в отдельном файле queryStrings.ipynb, и основная часть кода находится в файле analytics2020.ipynb.
Этот старый пост StackOverflow описывает хороший чистый способ определения списков констант в отдельном файле (см. Последний ответ ... тот, что у Неда Батчелдера)
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)
Однако, когда я пытаюсь запустить это, я получаю сообщение об ошибке:
26 from queryStrings import q_CurrWeekiOSDailySessionCountDuration
27 print('===== q_CurrWeekiOSDailySessionCountDuration ====')
28 print(q_CurrWeekiOSDailySessionCountDuration)
ModuleNotFoundError: No module named 'queryStrings'
Предыдущий пост, который я цитировал, говорит мне, что это должно работать. Возможно, у меня есть подозрение, что это потому, что эти файлы - файлы .ipynb Jupyter Notebook, а не простые ванильные файлы .py.
Буду признателен за любую помощь в решении этой проблемы! Большое спасибо.