Referentiële integriteit aannemen voor joins
In sommige gevallen kunt u de queryprestaties voor joins verbeteren door de optie voor Referentiële integriteit aannemen te selecteren in het menu Data. Wanneer u deze optie gebruikt, neemt Tableau de tabel waarvoor een join is gemaakt alleen op in de query als er specifiek naar wordt verwezen door velden in de weergave.
Deze instelling is geschikt als u weet dat uw data referentiële integriteit hebben (zie de definitie hieronder), maar uw database referentiële integriteit niet afdwingt of niet kan afdwingen. Als u de mogelijkheid hebt om referentiële integriteit in uw database te configureren, is dat een betere optie dan deze instelling, omdat het de prestaties in zowel de database als in Tableau kan verbeteren. De optie Referentiële integriteit aannemen in Tableau kan alleen de prestaties aan de kant van Tableau beïnvloeden. Als uw data geen referentiële integriteit hebben en u deze instelling inschakelt, zijn de queryresultaten mogelijk niet betrouwbaar.
Om te begrijpen wat referentiële integriteit is, kunt u zich voorstellen dat u verbinding maakt met verkoopdata die uit twee tabellen bestaan: Verkoop en Productcatalogus. Deze twee tabellen worden hieronder weergegeven:
Verkoop
| Productcatalogus
|
Omdat alle verkochte producten in de Productcatalogus vermeld moeten staan, heeft elke rij in de tabel Verkoop een overeenkomstige rij in de tabel Productcatalogus. Wanneer u een join van deze twee tabellen maakt op basis van de Product-ID, krijgt u een tabel die er als volgt uitziet:
Product-ID | Productnaam | Product-ID | Verkoopbedrag | Transactiedatum |
1 | 10inch-tablet | 1 | 100 | 1-10-2012 |
1 | 10inch-tablet | 1 | 2000 | 2-10-2012 |
2 | Smartphone | 2 | 50 | 30-9-2012 |
3 | Bureaulamp | 3 | 10 | 21-8-2012 |
Stel dat u een weergave maakt om het verkoopbedrag per regio te bekijken. Als u het veld Verkoopbedrag naar de weergave sleept, kan dit standaard een query opleveren die er als volgt uitziet:
SELECT SUM([Sales Amount]) FROM [Sales] S INNER JOIN [Product Catalog] P ON S.ProductID = P.ProductID
Door Referentiële integriteit aannemen te selecteren, vertelt u Tableau dat de tabellen waarvoor een join is gemaakt, referentiële integriteit hebben. Met andere woorden, u bevestigt dat de tabel Verkoop altijd een overeenkomstige rij in de tabel Productcatalogus heeft. Omdat dat waar is, heeft Tableau geen informatie uit de tabel Productcatalogus nodig om deze resultaten te retourneren. Wanneer u het veld Verkoopbedrag naar de weergave sleept, kan Tableau de query vereenvoudigen tot:
SELECT SUM([Sales Amount]) FROM [Sales]
Deze vereenvoudigde query kan vaak sneller resultaten opleveren omdat de join-bewerking wordt verwijderd. Deze optie heeft alleen invloed op binnenste joins en niet op databronnen met één enkele tabel.