in cid/common.py [0:0]
def get_view_query(self, view_name: str) -> str:
""" Returns a fully compiled AHQ """
# View path
view_definition = self.resources.get('views').get(view_name, dict())
cur_required = view_definition.get('dependsOn', dict()).get('cur')
if cur_required and self.cur.hasSavingsPlans and self.cur.hasReservations and view_definition.get('spriFile'):
view_file = view_definition.get('spriFile')
elif cur_required and self.cur.hasSavingsPlans and view_definition.get('spFile'):
view_file = view_definition.get('spFile')
elif cur_required and self.cur.hasReservations and view_definition.get('riFile'):
view_file = view_definition.get('riFile')
elif view_definition.get('File'):
view_file = view_definition.get('File')
else:
logger.critical(
f'\n"{view_name}" view information is incorrect, skipping')
# Load TPL file
template = Template(resource_string(view_definition.get(
'providedBy'), f'data/queries/{view_file}').decode('utf-8'))
# Prepare template parameters
columns_tpl = dict()
columns_tpl.update({
'cur_table_name': self.cur.tableName if cur_required else None,
'athena_database_name': self.athena.DatabaseName if view_definition.get('parameters', dict()).get('athenaDatabaseName') else None
})
for k,v in view_definition.get('parameters', dict()).items():
if k == 'athenaDatabaseName':
param = {'athena_database_name': self.athena.DatabaseName}
elif v.get('value'):
param = {k:v.get('value')}
else:
value = None
while not value:
value = click.prompt(f"Required parameter: {k} ({v.get('description')})", default=v.get('value'), show_default=True)
param = {k:value}
# Add parameter
columns_tpl.update(param)
# Compile template
compiled_query = template.safe_substitute(columns_tpl)
return compiled_query