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

Product-ID (refererende sleutel)VerkoopbedragTransactiedatum
11001-10-2012
120002-10-2012
25030-9-2012
31021-8-2012

Productcatalogus

Product-ID (primaire sleutel)Productnaam
110inch-tablet
2Smartphone
3Bureaulamp
4Memorystick

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-IDProductnaamProduct-IDVerkoopbedragTransactiedatum
110inch-tablet11001-10-2012
110inch-tablet120002-10-2012
2Smartphone25030-9-2012
3Bureaulamp31021-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.

 

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.