|
@@ -811,15 +811,18 @@ DROP TABLE IF EXISTS `%(table)s`;
|
|
|
|
|
|
|
|
return profile
|
|
return profile
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def _get_impala_profile_plan(self, query_id, profile):
|
|
def _get_impala_profile_plan(self, query_id, profile):
|
|
|
query_plan_re = "Query \(id=%(query_id)s\):.+?Execution Profile %(query_id)s" % {'query_id': query_id}
|
|
query_plan_re = "Query \(id=%(query_id)s\):.+?Execution Profile %(query_id)s" % {'query_id': query_id}
|
|
|
query_plan_match = re.search(query_plan_re, profile, re.MULTILINE | re.DOTALL)
|
|
query_plan_match = re.search(query_plan_re, profile, re.MULTILINE | re.DOTALL)
|
|
|
return query_plan_match.group() if query_plan_match else None
|
|
return query_plan_match.group() if query_plan_match else None
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def describe_column(self, notebook, snippet, database=None, table=None, column=None):
|
|
def describe_column(self, notebook, snippet, database=None, table=None, column=None):
|
|
|
db = self._get_db(snippet, self.cluster)
|
|
db = self._get_db(snippet, self.cluster)
|
|
|
return db.get_table_columns_stats(database, table, column)
|
|
return db.get_table_columns_stats(database, table, column)
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def describe_table(self, notebook, snippet, database=None, table=None):
|
|
def describe_table(self, notebook, snippet, database=None, table=None):
|
|
|
db = self._get_db(snippet, self.cluster)
|
|
db = self._get_db(snippet, self.cluster)
|
|
|
tb = db.get_table(database, table)
|
|
tb = db.get_table(database, table)
|
|
@@ -836,7 +839,7 @@ DROP TABLE IF EXISTS `%(table)s`;
|
|
|
'details': tb.details,
|
|
'details': tb.details,
|
|
|
'stats': tb.stats
|
|
'stats': tb.stats
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
def describe_database(self, notebook, snippet, database=None):
|
|
def describe_database(self, notebook, snippet, database=None):
|
|
|
db = self._get_db(snippet, self.cluster)
|
|
db = self._get_db(snippet, self.cluster)
|