def _column_object_from_column_xml(root_xml, column_xml): field_object = Field.from_column_xml(column_xml) local_name = field_object.id metadata_record = _get_metadata_xml_for_field(root_xml, local_name) if metadata_record is not None: field_object.apply_metadata(metadata_record) return _ColumnObjectReturnTuple(field_object.id, field_object)
def process_columns(self): sub_elems = self._datasourceTree.findall('*') last_aliases_index = -1 first_column_index = -1 for i in range(len(sub_elems)): if sub_elems[i].tag == 'column' and first_column_index < 0: first_column_index = i if sub_elems[i].tag == 'aliases': last_aliases_index = i column_index = max(first_column_index, last_aliases_index + 1) if column_index <= 0: raise LookupError( "no column nor aliases element found in the data source") for name, field in self._fields.items(): if field.id not in self._existing_column_fields: x = Field.create_field_xml(field.id, field.caption, field.datatype, field.role, field.type) Field.set_description(field.description, x) self._datasourceXML.insert(column_index, x)
def _column_object_from_metadata_xml(metadata_xml): field_object = Field.from_metadata_xml(metadata_xml) return _ColumnObjectReturnTuple(field_object.id, field_object)
for field in datasource.fields.values(): field_attributes = [ field.id, field.caption, field.alias, field.datatype, field.role, field.is_quantitative, field.is_ordinal, field.is_nominal, field.calculation, field.default_aggregation, field.description ] print(field_attributes) # file_name = "C:\\Users\\jj2362\\Desktop\\docs in\\standard frequent flyer.tds" file_name = "C:\\Users\\jj2362\\Desktop\\Sheet1 (Visual_Analytics_TOC_DataSimulated).tds" # file_name = "C:\\Users\\jj2362\\Desktop\\docs in\\Master.twb" file_type = xml_open(file_name) base = file_type.getroot() print(base.tag) if base.tag == 'datasource': document = tableaudocumentapi.Datasource.from_file(file_name) process_datasources(document) else: document = Workbook(file_name) for datasource in document.datasources: process_datasources(datasource) print("") # for datasource in workbook.datasources: test = Field() print(test._attributes)
def test_field_throws_if_no_data_passed_in(self): with self.assertRaises(AttributeError): Field()