If both Start Date and End Dates are columns in the data source, then they will each come in as their own dimensions within Tableau.
Thanks for your answer. However, these are not date datatype columns--they are surrogate foreign key sequence ID fields pointing to the Date dimension table. In effect, what we have here are multiple relationships between the same two tables with rolenames on each relationship. This is a common design pattern in schemas and very common in data warehouses. Another example in this data warehouse: we have a name/address table having Address_ID as the PK. The Fact table has the columns Order_By, Recorded_By, Shipped_By, Received_By and each of these columns hold the value of an Address_ID record. Ideally, I'd like to load each dimension table only once.
OK. I found the answer to my own question. All you have to do is give your table a different unique Table Alias name each time it is reused and give each field a different Field Alias name that is unique across the connection. I do not know if Tableau is smart enough to load the dimension only once.
It appears that while Tableau supports multiple rolename relationships between two tables there is a bug in how it names the attributes. For example, if a Fact table has the columns Order_By, Recorded_By, Shipped_By, Received_By and each of these FK columns hold the value of an Address table PK then Tableau will create attributes with the name "Address1 City", "Address2 City", "Address3 City", etc. You can try to rename these "Order By City", Recorded By City", etc. but when you save the workbook the renamed attributes revert back to the "Address1 City" default names.