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)
예제 #2
0
 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)
예제 #4
0
    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)
예제 #5
0
 def test_field_throws_if_no_data_passed_in(self):
     with self.assertRaises(AttributeError):
         Field()