Commit 9eaa424a authored by mouadh's avatar mouadh

format

parent d3571181
...@@ -93,10 +93,10 @@ class XmlaExecuteTools(): ...@@ -93,10 +93,10 @@ class XmlaExecuteTools():
xml = xmlwitch.Builder() xml = xmlwitch.Builder()
# only measure selected # only measure selected
if mdx_execution_result['columns_desc'][mdx_query_axis].keys() == [ if mdx_execution_result['columns_desc'][mdx_query_axis].keys() == [
self.executer.facts self.executer.facts
]: ]:
if len(mdx_execution_result['columns_desc'][mdx_query_axis][ if len(mdx_execution_result['columns_desc'][mdx_query_axis][
self.executer.facts]) == 1: self.executer.facts]) == 1:
# to ignore for tupls in itertools.chain(*tuples) # to ignore for tupls in itertools.chain(*tuples)
tuples = [] tuples = []
else: else:
...@@ -107,7 +107,7 @@ class XmlaExecuteTools(): ...@@ -107,7 +107,7 @@ class XmlaExecuteTools():
# query with on columns and on rows (without measure) # query with on columns and on rows (without measure)
elif mdx_execution_result['columns_desc'][ elif mdx_execution_result['columns_desc'][
'columns'] and mdx_execution_result['columns_desc']['rows']: 'columns'] and mdx_execution_result['columns_desc']['rows']:
# ['Geography','America'] # ['Geography','America']
tuples = [ tuples = [
zip(*[[[key] + list(row) zip(*[[[key] + list(row)
...@@ -138,7 +138,8 @@ class XmlaExecuteTools(): ...@@ -138,7 +138,8 @@ class XmlaExecuteTools():
if tupls[0][1] in self.executer.measures and len( if tupls[0][1] in self.executer.measures and len(
self.executer.selected_measures) > 1: self.executer.selected_measures) > 1:
with xml.Member(Hierarchy="[Measures]"): with xml.Member(Hierarchy="[Measures]"):
xml.UName('[Measures].[{0}]'.format(tupls[0][1])) xml.UName(
'[Measures].[{0}]'.format(tupls[0][1]))
xml.Caption('{0}'.format(tupls[0][1])) xml.Caption('{0}'.format(tupls[0][1]))
xml.LName('[Measures]') xml.LName('[Measures]')
xml.LNum('0') xml.LNum('0')
...@@ -149,7 +150,8 @@ class XmlaExecuteTools(): ...@@ -149,7 +150,8 @@ class XmlaExecuteTools():
continue continue
for tupl in tupls: for tupl in tupls:
tuple_without_minus_1 = self.get_tuple_without_nan(tupl) tuple_without_minus_1 = self.get_tuple_without_nan(
tupl)
# french caracteres # french caracteres
# TODO encode dataframe # TODO encode dataframe
...@@ -160,33 +162,48 @@ class XmlaExecuteTools(): ...@@ -160,33 +162,48 @@ class XmlaExecuteTools():
] ]
# todo ugly !! # todo ugly !!
with xml.Member(Hierarchy="[{0}].[{0}]".format(tuple_without_minus_1[0])): with xml.Member(Hierarchy="[{0}].[{0}]".format(
xml.UName('[{0}].[{0}].[{1}].{2}'.format(tuple_without_minus_1[0], tuple_without_minus_1[0])):
splited_df[tuple_without_minus_1[ xml.UName('[{0}].[{0}].[{1}].{2}'.format(
0]].columns[len( tuple_without_minus_1[0], splited_df[
tuple_without_minus_1) - first_att], tuple_without_minus_1[0]].columns[
'.'.join(['[' + str(i) + ']' for i in len(tuple_without_minus_1) -
tuple_without_minus_1[ first_att], '.'.join([
first_att - 1:] '[' + str(i) + ']'
]))) for i in
xml.Caption('{0}'.format(tuple_without_minus_1[-1])) tuple_without_minus_1[
first_att - 1:]
])))
xml.Caption('{0}'.format(
tuple_without_minus_1[-1]))
xml.LName('[{0}].[{0}].[{1}]'.format( xml.LName('[{0}].[{0}].[{1}]'.format(
tuple_without_minus_1[0], splited_df[tuple_without_minus_1[ tuple_without_minus_1[0], splited_df[
0]].columns[len(tuple_without_minus_1) - first_att])) tuple_without_minus_1[0]].columns[
xml.LNum('{0}'.format(len(tuple_without_minus_1) - first_att)) len(tuple_without_minus_1) -
first_att]))
xml.LNum('{0}'.format(
len(tuple_without_minus_1) -
first_att))
xml.DisplayInfo('131076') xml.DisplayInfo('131076')
# PARENT_UNIQUE_NAME must be before HIERARCHY_UNIQUE_NAME (todo change it in xsd) # PARENT_UNIQUE_NAME must be before HIERARCHY_UNIQUE_NAME (todo change it in xsd)
if len(tuple_without_minus_1[first_att - 1:]) > 1: if len(tuple_without_minus_1[first_att -
xml.PARENT_UNIQUE_NAME('[{0}].[{0}].[{1}].{2}'.format( 1:]) > 1:
tuple_without_minus_1[0], xml.PARENT_UNIQUE_NAME(
splited_df[tuple_without_minus_1[0]].columns[0], '[{0}].[{0}].[{1}].{2}'.format(
'.'.join([ tuple_without_minus_1[0],
'[' + str(i) + ']' splited_df[
for i in tuple_without_minus_1[first_att - 1:-1] tuple_without_minus_1[0]]
]))) .columns[0], '.'.join([
'[' + str(i) + ']'
xml.HIERARCHY_UNIQUE_NAME('[{0}].[{0}]'.format(tuple_without_minus_1[0])) for i in
tuple_without_minus_1[
first_att - 1:-1]
])))
xml.HIERARCHY_UNIQUE_NAME(
'[{0}].[{0}]'.format(
tuple_without_minus_1[0]))
return str(xml) return str(xml)
...@@ -325,7 +342,7 @@ class XmlaExecuteTools(): ...@@ -325,7 +342,7 @@ class XmlaExecuteTools():
if np.isnan(value): if np.isnan(value):
value = '' value = ''
with xml.Cell(CellOrdinal=str(index)): with xml.Cell(CellOrdinal=str(index)):
xml.Value(str(value),**{'xsi:type': 'xsi:long'}) xml.Value(str(value), **{'xsi:type': 'xsi:long'})
index += 1 index += 1
return str(xml) return str(xml)
...@@ -382,19 +399,30 @@ class XmlaExecuteTools(): ...@@ -382,19 +399,30 @@ class XmlaExecuteTools():
to_write = "[{0}].[{0}]".format(dim_diff) to_write = "[{0}].[{0}]".format(dim_diff)
if dim_diff == 'Measures': if dim_diff == 'Measures':
# if measures > 1 we don't have to write measure # if measures > 1 we don't have to write measure
if self.executer.facts in mdx_execution_result['columns_desc'][ if self.executer.facts in mdx_execution_result[
'all'] and len(mdx_execution_result['columns_desc'][ 'columns_desc']['all'] and len(
'all'][self.executer.facts]) > 1: mdx_execution_result['columns_desc'][
'all'][self.executer.facts]) > 1:
continue continue
else: else:
to_write = "[Measures]" to_write = "[Measures]"
with xml.HierarchyInfo(name=to_write): with xml.HierarchyInfo(name=to_write):
xml.UName(name="{0}.[MEMBER_UNIQUE_NAME]".format(to_write), **{'type': 'xs:string'}) xml.UName(
xml.Caption(name="{0}.[MEMBER_CAPTION]".format(to_write), **{'type': 'xs:string'}) name="{0}.[MEMBER_UNIQUE_NAME]".format(to_write),
xml.LName(name="{0}.[LEVEL_UNIQUE_NAME]".format(to_write), **{'type': 'xs:string'}) **{'type': 'xs:string'})
xml.LNum(name="{0}.[LEVEL_NUMBER]".format(to_write), **{'type': 'xs:int'}) xml.Caption(
xml.DisplayInfo(name="{0}.[DISPLAY_INFO]".format(to_write), **{'type': 'xs:unsignedInt'}) name="{0}.[MEMBER_CAPTION]".format(to_write),
**{'type': 'xs:string'})
xml.LName(
name="{0}.[LEVEL_UNIQUE_NAME]".format(to_write),
**{'type': 'xs:string'})
xml.LNum(
name="{0}.[LEVEL_NUMBER]".format(to_write),
**{'type': 'xs:int'})
xml.DisplayInfo(
name="{0}.[DISPLAY_INFO]".format(to_write),
**{'type': 'xs:unsignedInt'})
return str(xml) return str(xml)
...@@ -442,31 +470,63 @@ class XmlaExecuteTools(): ...@@ -442,31 +470,63 @@ class XmlaExecuteTools():
if axis_tables: if axis_tables:
with xml.AxisInfo(name=Axis): with xml.AxisInfo(name=Axis):
# many measures , then write this on the top # many measures , then write this on the top
if self.executer.facts in axis_tables.keys() and len(axis_tables[self.executer.facts]) > 1: if self.executer.facts in axis_tables.keys() and len(
axis_tables[self.executer.facts]) > 1:
with xml.HierarchyInfo(name='[Measures]'): with xml.HierarchyInfo(name='[Measures]'):
xml.UName(name="[Measures].[MEMBER_UNIQUE_NAME]", **{'type': 'xs:string'}) xml.UName(
xml.Caption(name="[Measures].[MEMBER_CAPTION]", **{'type': 'xs:string'}) name="[Measures].[MEMBER_UNIQUE_NAME]",
xml.LName(name="[Measures].[LEVEL_UNIQUE_NAME]", **{'type': 'xs:string'}) **{'type': 'xs:string'})
xml.LNum(name="[Measures].[LEVEL_NUMBER]", **{'type': 'xs:int'}) xml.Caption(
xml.DisplayInfo(name="[Measures].[DISPLAY_INFO]", **{'type': 'xs:unsignedInt'}) name="[Measures].[MEMBER_CAPTION]",
xml.PARENT_UNIQUE_NAME(name="[Measures].[PARENT_UNIQUE_NAME]", **{'type': 'xs:string'}) **{'type': 'xs:string'})
xml.HIERARCHY_UNIQUE_NAME(name="[Measures].[HIERARCHY_UNIQUE_NAME]", **{'type': 'xs:string'}) xml.LName(
name="[Measures].[LEVEL_UNIQUE_NAME]",
**{'type': 'xs:string'})
xml.LNum(
name="[Measures].[LEVEL_NUMBER]",
**{'type': 'xs:int'})
xml.DisplayInfo(
name="[Measures].[DISPLAY_INFO]",
**{'type': 'xs:unsignedInt'})
xml.PARENT_UNIQUE_NAME(
name="[Measures].[PARENT_UNIQUE_NAME]",
**{'type': 'xs:string'})
xml.HIERARCHY_UNIQUE_NAME(
name="[Measures].[HIERARCHY_UNIQUE_NAME]",
**{'type': 'xs:string'})
for table_name in axis_tables: for table_name in axis_tables:
if table_name != self.executer.facts: if table_name != self.executer.facts:
with xml.HierarchyInfo(name='[{0}].[{0}]'.format(table_name)): with xml.HierarchyInfo(
xml.UName(name="[{0}].[{0}].[MEMBER_UNIQUE_NAME]".format(table_name), name='[{0}].[{0}]'.format(table_name)):
**{'type': 'xs:string'}) xml.UName(
xml.Caption(name="[{0}].[{0}].[MEMBER_CAPTION]".format(table_name), **{'type': 'xs:string'}) name="[{0}].[{0}].[MEMBER_UNIQUE_NAME]".format(
xml.LName(name="[{0}].[{0}].[LEVEL_UNIQUE_NAME]".format(table_name), table_name),
**{'type': 'xs:string'}) **{'type': 'xs:string'})
xml.LNum(name="[{0}].[{0}].[LEVEL_NUMBER]".format(table_name), **{'type': 'xs:int'}) xml.Caption(
xml.DisplayInfo(name="[{0}].[{0}].[DISPLAY_INFO]".format(table_name), name="[{0}].[{0}].[MEMBER_CAPTION]".format(
**{'type': 'xs:unsignedInt'}) table_name),
xml.PARENT_UNIQUE_NAME(name="[{0}].[{0}].[PARENT_UNIQUE_NAME]".format(table_name), **{'type': 'xs:string'})
**{'type': 'xs:string'}) xml.LName(
xml.HIERARCHY_UNIQUE_NAME(name="[{0}].[{0}].[HIERARCHY_UNIQUE_NAME]".format(table_name), name="[{0}].[{0}].[LEVEL_UNIQUE_NAME]".format(
**{'type': 'xs:string'}) table_name),
**{'type': 'xs:string'})
xml.LNum(
name="[{0}].[{0}].[LEVEL_NUMBER]".format(
table_name),
**{'type': 'xs:int'})
xml.DisplayInfo(
name="[{0}].[{0}].[DISPLAY_INFO]".format(
table_name),
**{'type': 'xs:unsignedInt'})
xml.PARENT_UNIQUE_NAME(
name="[{0}].[{0}].[PARENT_UNIQUE_NAME]".format(
table_name),
**{'type': 'xs:string'})
xml.HIERARCHY_UNIQUE_NAME(
name="[{0}].[{0}].[HIERARCHY_UNIQUE_NAME]".
format(table_name),
**{'type': 'xs:string'})
return str(xml) return str(xml)
...@@ -535,10 +595,9 @@ class XmlaExecuteTools(): ...@@ -535,10 +595,9 @@ class XmlaExecuteTools():
tuple = "" tuple = ""
# not used dimensions # not used dimensions
unused_dimensions = list( unused_dimensions = list(
set(self.executer.get_all_tables_names(ignore_fact=True)) - set(self.executer.get_all_tables_names(ignore_fact=True)) - set(
set(table_name table_name
for table_name in mdx_execution_result['columns_desc'][ for table_name in mdx_execution_result['columns_desc']['all']))
'all']))
xml = xmlwitch.Builder() xml = xmlwitch.Builder()
if unused_dimensions: if unused_dimensions:
with xml.Axis(name="SlicerAxis"): with xml.Axis(name="SlicerAxis"):
...@@ -548,31 +607,35 @@ class XmlaExecuteTools(): ...@@ -548,31 +607,35 @@ class XmlaExecuteTools():
# TODO encode dataframe # TODO encode dataframe
# french caracteres # french caracteres
if type(self.executer.tables_loaded[dim_diff].iloc[0][ if type(self.executer.tables_loaded[dim_diff].iloc[
0]) == unicode: 0][0]) == unicode:
column_attribut = self.executer.tables_loaded[dim_diff].iloc[ column_attribut = self.executer.tables_loaded[
0][0].encode('utf-8', 'replace') dim_diff].iloc[0][0].encode('utf-8',
'replace')
else: else:
column_attribut = self.executer.tables_loaded[dim_diff].iloc[ column_attribut = self.executer.tables_loaded[
0][0] dim_diff].iloc[0][0]
with xml.Member(Hierarchy="[{0}].[{0}]".format(dim_diff)): with xml.Member(
xml.UName('[{0}].[{0}].[{1}].[{2}]'.format(dim_diff, Hierarchy="[{0}].[{0}]".format(dim_diff)):
self.executer.tables_loaded[ xml.UName('[{0}].[{0}].[{1}].[{2}]'.format(
dim_diff].columns[0], dim_diff, self.executer.tables_loaded[
column_attribut)) dim_diff].columns[0], column_attribut))
xml.Caption(str(column_attribut)) xml.Caption(str(column_attribut))
xml.LName('[{0}].[{0}].[{1}]'.format(dim_diff, xml.LName('[{0}].[{0}].[{1}]'.format(
self.executer.tables_loaded[dim_diff].columns[0])) dim_diff, self.executer.tables_loaded[
dim_diff].columns[0]))
xml.LNum('0') xml.LNum('0')
xml.DisplayInfo('2') xml.DisplayInfo('2')
# if we have zero on one only measures used # if we have zero on one only measures used
if len(self.executer.selected_measures) <= 1: if len(self.executer.selected_measures) <= 1:
with xml.Member(Hierarchy="[Measures]".format(dim_diff)): with xml.Member(
xml.UName('[Measures].[{0}]'.format(self.executer.measures[0])) Hierarchy="[Measures]".format(dim_diff)):
xml.Caption('{0}'.format(self.executer.measures[0])) xml.UName('[Measures].[{0}]'.format(
self.executer.measures[0]))
xml.Caption(
'{0}'.format(self.executer.measures[0]))
xml.LName('[Measures]') xml.LName('[Measures]')
xml.LNum('0') xml.LNum('0')
xml.DisplayInfo('0') xml.DisplayInfo('0')
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment