Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/write dataframe auto order df columns #1142

Prev Previous commit
Next Next commit
force infer_column_order=True if static_dimension_elements are passed
  • Loading branch information
Kevin-Dekker committed Sep 3, 2024
commit e0d61e0f0937c0a2b05532413f7831d23bce22a0
2 changes: 2 additions & 0 deletions TM1py/Services/CellService.py
Original file line number Diff line number Diff line change
Expand Up @@ -835,6 +835,8 @@ def write_dataframe(self, cube_name: str, data: 'pd.DataFrame', dimensions: Iter
if not dimensions:
dimensions = self.get_dimension_names_for_writing(cube_name=cube_name)

infer_column_order = True if static_dimension_elements else infer_column_order

if infer_column_order:
dimension_to_column_map = {dim: col for dim in CaseAndSpaceInsensitiveSet(dimensions) for col in data.columns if
col.lower().replace(' ', '') == dim.lower().replace(' ', '')}
Expand Down
7 changes: 4 additions & 3 deletions Tests/CellService_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1103,7 +1103,7 @@ def test_write_dataframe_ordering(self):
self.dimension_names[2].replace('3', ' 3').lower(): ["element 5", "element 5", "element 5"],
"Value": [1.0, 2.0, 3.0]})

self.tm1.cells.write_dataframe(self.cube_name, df)
self.tm1.cells.write_dataframe(self.cube_name, df, infer_column_order=True)

query = MdxBuilder.from_cube(self.cube_name)
query = query.add_hierarchy_set_to_column_axis(
Expand All @@ -1119,7 +1119,7 @@ def test_write_dataframe_ordering(self):
self.assertEqual(list(df["Value"]), values)

@skip_if_no_pandas
def test_write_dataframe_fixed_dimension_elements(self):
def test_write_dataframe_static_dimension_elements(self):
df = pd.DataFrame({
self.dimension_names[1]: ["element 1", "element 2", "element 3"],
"Value": [1.0, 2.0, 3.0]})
Expand All @@ -1144,13 +1144,14 @@ def test_write_dataframe_fixed_dimension_elements(self):
self.assertEqual(list(df["Value"]), values)

@skip_if_no_pandas
def test_write_dataframe_fixed_dimension_elements_all_fixed(self):
def test_write_dataframe_static_dimension_elements_all_static(self):
df = pd.DataFrame({
"Value": [1.0]})

self.tm1.cells.write_dataframe(
self.cube_name,
df,
infer_column_order=True,
static_dimension_elements={
self.dimension_names[1].replace('2', ' 2 ').lower(): "element 2",
self.dimension_names[0].replace('1', ' 1 ').lower(): "element 1",
Expand Down