Jupyter Notebook версия предыдущего Stackoverflow Python Вопрос - Лучший / Самый чистый способ определения Python Константы - PullRequest
0 голосов
/ 08 января 2020

Я пишу сценарий Python в записной книжке Jupyter для выполнения 20+ длинных SQL запросов. Я определил строки запроса SQL в отдельном файле queryStrings.ipynb, и основная часть кода находится в файле analytics2020.ipynb.

Этот старый пост StackOverflow описывает хороший чистый способ определения списков констант в отдельном файле (см. Последний ответ ... тот, что у Неда Батчелдера)

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)
    

Однако, когда я пытаюсь запустить это, я получаю сообщение об ошибке:

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

ModuleNotFoundError: No module named 'queryStrings'

Предыдущий пост, который я цитировал, говорит мне, что это должно работать. Возможно, у меня есть подозрение, что это потому, что эти файлы - файлы .ipynb Jupyter Notebook, а не простые ванильные файлы .py.

Буду признателен за любую помощь в решении этой проблемы! Большое спасибо.

1 Ответ

1 голос
/ 10 января 2020

Я провел некоторое исследование и нашел способ сделать это в Jupyter, используя класс% store.

Поэтому в queryStrings.ipynb я добавил строку:

%store q_CurrWeekiOSDailySessionCountDuration

Затем в analytics2020. ipynb я добавил тогда строчку

%store -r q_CurrWeekiOSDailySessionCountDuration

а потом presto! Это сработало.

...