def get_path_keys(self):
output = []
sorted_items = sorted(self.querableColumnsIdx.items(), key=operator.itemgetter(1))
clusteting_key_columns = []
partition_key_columns = []
idx_columns = []
regular_columns = []
ptt = []
for tp in sorted_items:
k = tp[0]
v = tp[1]
if v >= self.PARTITION_KEY_QUERY_COST and v < self.CLUSTERING_KEY_QUERY_COST:
partition_key_columns.append(k)
ptt.append(k)
if v < self.IDX_QUERY_COST and v >= self.CLUSTERING_KEY_QUERY_COST:
clusteting_key_columns.append(k)
elif v >= self.IDX_QUERY_COST and v < self.REGULAR_QUERY_COST:
idx_columns.append(k)
else:
regular_columns.append(k)
ckc_len = len(clusteting_key_columns)
if ckc_len == 0:
output.append((tuple(partition_key_columns), 1))
else:
i = 1
output.append((tuple(partition_key_columns), self.CLUSTERING_KEY_QUERY_COST))
for ckc in clusteting_key_columns:
ptt.append(ckc)
if i == ckc_len:
output.append((tuple(ptt), 1))
else:
output.append((tuple(ptt), self.CLUSTERING_KEY_QUERY_COST - i))
if len(idx_columns) != 0:
output.append((tuple(ptt + idx_columns), self.IDX_QUERY_COST - i))
i += 1
for idx_col in idx_columns:
output.append((tuple(idx_col), self.IDX_QUERY_COST))
for t in sorted_items:
output.append(((t[0]), self.REGULAR_QUERY_COST))
output.append(((self.get_row_id_column()), 1))
if ISDEBUG:
logger.log('path keys: {0}'.format(output))
return output
评论列表
文章目录