Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. MK_QUERIES = {
  2. 'timeseries': {'query': """
  3. select date_time, value
  4. from mk_timeseries as ts
  5. join mk_master as master on (ts.curve_id = master.id)
  6. where master.area='{0}' and
  7. master.categories in {1} and
  8. master.data_type='{2}' and
  9. master.source_model='{3}' and {4}
  10. reference_date between '{5}' and '{6}'
  11. order by date_time
  12. """
  13. },
  14. 'instances': {'query': """
  15. select inst.date_time, avg(inst.value) as value
  16. from mk_instances as inst inner join
  17. (select date_time, curve_id, max(issue_date) as latest
  18. from mk_instances
  19. where reference_date between '{5}' and '{6}'
  20. group by date_time, curve_id) as v1
  21. join mk_master as master on (v1.curve_id=master.id)
  22. where master.area='{0}' and
  23. master.categories in {1} and
  24. master.data_type='{2}' and
  25. master.source_model in {3} and {4}
  26. inst.curve_id=v1.curve_id and
  27. inst.date_time=v1.date_time and
  28. inst.issue_date=v1.latest
  29. group by date_time
  30. order by date_time
  31. """,
  32. 'ids': {'ec00ens': [7661, 8057, 8237, 8273, 8327, 8363, 8399, 9585, 9819, 9873, 9909, 9945, 9169, 9783, 20098, 20368, 20386, 20422, 20584, 20638, 20692],
  33. 'ecmonthly': [9173, 9589, 9787, 9823, 9877, 9913, 9949, 7665, 8061, 8241, 8277, 8331, 8367, 8403, 20102, 20372, 20390, 20426, 20588, 20642, 20696]
  34. }
  35. }
  36. }
  37.  
  38. MK_SPECS = {
  39. 'consumption': {
  40. 'area': '',
  41. 'categories': ['con'],
  42. 'data_type': 'f',
  43. 'source_model': ['ec00ens', 'ecmonthly'],
  44. 'filter': ''
  45. },
  46. 'resudual_load': {
  47. 'area': '',
  48. 'categories': ['rdl'],
  49. 'data_type': 'f',
  50. 'source_model': ['ec00ens', 'ecmonthly'],
  51. 'filter': ''
  52. },
  53. 'nuclear_production': {
  54. 'area': '',
  55. 'categories': ['pro', 'nuc'],
  56. 'data_type': 'af',
  57. 'source_model': 'not a model',
  58. 'filter': ''
  59. },
  60. 'spot_price': {
  61. 'area': '',
  62. 'categories': ['pri', 'spot'],
  63. 'data_type': 'f',
  64. 'source_model': ['ec00'],
  65. 'filter': 'unit="eur/mwh" and '
  66. },
  67. 'ntc': {
  68. 'area': '',
  69. 'categories': ['exc', 'ntc'],
  70. 'data_type': 'f',
  71. 'source_model': ['not a model'],
  72. 'filter': 'name like "%{}%" and '
  73. }
  74. }
  75.  
  76. for zone in zones:
  77.  
  78. table = 'instances' if spec['data_type'] == 'f' else 'timeseries'
  79. categories = [' '.join(v) for v in permutations(spec['categories'])]
  80. data_type = spec['data_type']
  81. source_model = spec['source_model']
  82. query_filter = spec['filter']
  83.  
  84. query = MK_QUERIES[table]['query'].format(zone,
  85. '(' + str(categories).strip('[]') + ')',
  86. data_type,
  87. '(' + str(source_model).strip('[]') + ')',
  88. query_filter,
  89. start_date,
  90. end_date)
  91. #print(query)
  92. col_name = '_'.join(spec['categories'] + [zone])
  93. print('Collecting "{}" data from table "mk_{}"...'.format(col_name, table))
  94. df = query_to_df(cursor=cursor, sql_query=query)
  95.  
  96. df = df.rename(columns={'value': col_name})
  97. df.set_index('date_time', inplace=True)
  98. df.index = pd.to_datetime(df.index)
  99. df = df.astype(float)
  100. df = df.resample('H').mean()
  101. df = df.asfreq('h', 'bfill')
  102. frames.append(df)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement