From 302b43f9511050b608cee313f1dfccfa33ba14d3 Mon Sep 17 00:00:00 2001 From: jaybythebay Date: Tue, 1 Mar 2022 01:21:58 -0800 Subject: [PATCH 1/2] made dataframe with fields --- .gitignore | 3 ++ samples/show-fields/fields_to_csv.py | 42 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 samples/show-fields/fields_to_csv.py diff --git a/.gitignore b/.gitignore index 994e968..5708398 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,6 @@ tasks.json #Jekyll docs/_site + +#Local venv +venv/ diff --git a/samples/show-fields/fields_to_csv.py b/samples/show-fields/fields_to_csv.py new file mode 100644 index 0000000..fcf7124 --- /dev/null +++ b/samples/show-fields/fields_to_csv.py @@ -0,0 +1,42 @@ +############################################################ +# Step 1) Use Datasource object from the Document API +############################################################ +from tableaudocumentapi import Datasource +import xml.etree.ElementTree as ET +import pandas as pd +from tabulate import tabulate + +############################################################ +# Step 2) Open the .tds we want to inspect +############################################################ +sourceTDS = Datasource.from_file('world.tds') + +############################################################ +# Step 3) Print out all of the fields and what type they are +############################################################ +print('----------------------------------------------------------') +print('--- {} total fields in this datasource'.format(len(sourceTDS.fields))) +print('----------------------------------------------------------') + +field_list = [] + +for count, field in enumerate(sourceTDS.fields.values()): + + if field.description is not None: + description_xml = ET.fromstring(field.description) + description_without_tags = description_xml[0][0].text + else: + description_without_tags = None + + field_dict = {'name': field.name, + 'datatype': field.datatype, + 'calculation': field.calculation, + 'default_aggregation': field.default_aggregation, + # 'description': field.description, + 'description_raw': description_without_tags} + + field_list.append(field_dict) + +df = pd.DataFrame(field_list) +print(tabulate(df, headers='keys', tablefmt='psql')) + From 9d2a1a0339f3dbbab909a516d01c9956794a2463 Mon Sep 17 00:00:00 2001 From: jaybythebay Date: Tue, 1 Mar 2022 03:15:11 -0800 Subject: [PATCH 2/2] add fields --- samples/show-fields/fields_to_csv.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/samples/show-fields/fields_to_csv.py b/samples/show-fields/fields_to_csv.py index fcf7124..c19f689 100644 --- a/samples/show-fields/fields_to_csv.py +++ b/samples/show-fields/fields_to_csv.py @@ -29,12 +29,16 @@ description_without_tags = None field_dict = {'name': field.name, + 'caption': field.caption, + 'role': field.role, + 'type': field.type, 'datatype': field.datatype, 'calculation': field.calculation, 'default_aggregation': field.default_aggregation, # 'description': field.description, 'description_raw': description_without_tags} + field_list.append(field_dict) df = pd.DataFrame(field_list)