Verbinding maken met een aangepaste SQL-query
Opmerking: Het gebruik van een aangepaste SQL kan de prestaties van een werkmap beïnvloeden. Door met een DBA te werken bent u verzekerd van de best mogelijke aangepaste SQL-query. Om de bewerkingen uit te voeren die nodig zijn voor het bouwen van weergaven in Tableau Desktop, moet Tableau WAAR, GROEPEREN OP en andere SQL-clausules kunnen beheren. Omdat een aangepaste SQL-query deze elementen kan bevatten en Tableau deze niet in de bestaande SQL kan invoegen, moet Tableau de aangepaste SQL-instructie in een select-instructie plaatsen. Wanneer een aangepaste SQL-verbinding langzaam werkt of een fout oplevert, komt dit vaak doordat Tableau Desktop de aangepaste SQL aan het plaatsen is.
In de meeste databases kunt u verbinding maken met een specifieke query in plaats van met de gehele dataset. Omdat de SQL-syntaxis van iedere database net iets anders is, kan de aangepaste SQL die u gebruikt om verbinding te maken met de ene database afwijken van de aangepaste SQL die u gebruikt om verbinding te maken met een andere. Het gebruik van een aangepaste SQL kan echter handig zijn als u precies weet welke informatie u nodig hebt en u weet hoe u SQL-query's schrijft.
Er zijn meerdere veelvoorkomende redenen om een aangepaste SQL te gebruiken. U kunt een aangepaste SQL onder andere gebruiken om uw data in tabellen te verenigen, velden te herschikken om joins op basis van meerdere databases uit te voeren, uw data te herstructureren of de omvang ervan te verkleinen voor analyse.
Voor databronnen uit Excel- en tekstbestanden is deze optie alleen beschikbaar in werkmappen die zijn gemaakt vóór Tableau Desktop 8.2 of bij gebruik van Tableau Desktop op Windows met de bestaande verbinding. Met Excel- of tekstbestanden kunt u als volgt verbinding maken via de bestaande verbinding: maak verbinding met het bestand en klik in het dialoogvenster Openen op het vervolgkeuzemenu Openen en selecteer vervolgens Openen met bestaande verbinding.
OPMERKING: vanaf Tableau 2020.2 worden oudere Excel- en tekstverbindingen niet meer ondersteund. Zie het document Alternatieven voor verouderde verbinding in Tableau Community voor alternatieven voor het gebruik van de oude verbinding.
Verbinding maken met een aangepaste SQL-query
Nadat u verbinding hebt gemaakt met uw data, dubbelklikt u op de optie Nieuwe aangepaste SQL op de pagina Databron.
Typ of plak de query in het tekstvak. De query moet uit één SELECT*-instructie bestaan.
Klik op OK als u klaar bent.
Wanneer u op OK klikt, wordt de query uitgevoerd en wordt de aangepaste SQL-querytabel in de logische laag van het canvas weergegeven. Alleen relevante velden uit de aangepaste SQL-query worden in het dataraster op de pagina Databron weergegeven.
Zie Het Tableau-datamodel voor meer informatie over de logische en fysieke lagen van het canvas.
Voorbeelden van aangepaste SQL-query's
Uw tabellen verticaal samenvoegen (vereniging)
Als u data aan elkaar moet koppelen, kunt u de optie Vereniging gebruiken in de fysieke laag van het canvas in Tableau. In sommige gevallen ondersteunt uw database deze optie niet. In plaats daarvan kunt u dan aangepaste SQL gebruiken.
Stel dat u bijvoorbeeld de volgende twee tabellen heeft: november en december.
November | December |
---|---|
U kunt de volgende aangepaste SQL-query gebruiken om de tweede tabel (december) toe te voegen aan de eerste tabel (november):
SELECT * FROM November UNION ALL SELECT * FROM December
Het resultaat van de query ziet er in het dataraster als volgt uit:
Zie Uw data verenigen voor meer informatie over de optie Vereniging.
Het datatype van een veld wijzigen om een join op basis van meerdere databases uit te voeren
Wanneer u een join wilt maken van twee tabellen in de fysieke laag van het canvas, moet het datatype van de velden waar u een join van maakt hetzelfde zijn. Als het datatype van de velden niet hetzelfde is, kunt u aangepaste SQL gebruiken om het datatype (cast) van het veld te wijzigen voordat u de join maakt.
Stel dat u twee tabellen (Hoofd en Sub) wilt samenvoegen met respectievelijk de velden Root en ID. Het Root-veld is een nummertype en het ID-veld een tekenreekstype. U kunt de volgende aangepaste SQL-query gebruiken om het datatype van Root te wijzigen van een nummer in een tekenreeks, zodat u met behulp van de velden Root en ID een join kunt maken van de Hoofd- en Subtabel.
SELECT
[Main].[Root] AS [Root_Number]
CAST([Main].[Root] AS INT] AS [Root_String]
FROM [Main]
Het resultaat van deze query toont het oorspronkelijke Root-veld en het Root-veld als een tekenreeks.
Zie Joins maken van uw data voor meer informatie over het maken van joins en joins op basis van meerdere databases.
Uw data kleiner maken
Als u met zeer grote datasets werkt, kunt u soms tijd besparen als u eerst de omvang van de data verkleint.
Stel dat u bijvoorbeeld een grote tabel heeft met de naam FischerIris. U kunt de volgende aangepaste SQL-query gebruiken om de opgegeven kolommen en records op te halen, waardoor de dataset waarmee u verbinding maakt vanuit Tableau, wordt verkleind.
SELECT
[FischerIris].[Species] AS [Species],
[FischerIris].[Width] AS [Petal Width],
COUNT([FischerIris].[ID]) AS [Num of Species]
FROM [FischerIris]
WHERE [FischerIris].[Organ] = 'Petal'
AND [FischerIris].[Width] > 15.0000
GROUP BY [FischerIris].[Species], [FischerIris].[Width]
Uw data herstructureren (draaien)
Soms werkt u in een tabel die vóór de analyse moet worden geherstructureerd. Hoewel een taak van dit type in de fysieke laag van het canvas in Tableau kan worden uitgevoerd met opties als draaien, ondersteunt uw database dit mogelijk niet. In zo'n geval kunt u in plaats daarvan een aangepaste SQL gebruiken.
Stel, u bent bezig met de volgende tabel:
Om de structuur ervan te wijzigen en uw data te optimaliseren voor analyse in Tableau, kunt u de volgende aangepaste SQL-query gebruiken:
SELECT Table1.Season ID AS [Season ID],
Table1.Items - Don't like AS [Quantity],
"Don't Like" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table.Items - Defective AS [Quantity],
"Defective" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table1.Items - Too big AS [Quantity],
"Too Big" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS Season ID,
Table1.Items - Too small AS [Quantity]
"Too Small" AS [Reason]
FROM Table1
Het resultaat van de query ziet er in het dataraster als volgt uit:
Zie Data draaien van kolommen naar rijen voor meer informatie over draaien.
Uw data samenvoegen (een join maken) en aggregeren
Als u tabellen wilt combineren en uw data wilt aggregeren, kunt u in de fysieke laag van het canvas in Tableau zowel opties voor het maken van een join als standaardaggregaties gebruiken. In sommige gevallen kan het nodig zijn om een aangepaste SQL gebruiken.
In dit voorbeeld hebt u de volgende twee tabellen: Orders en Leveranciers.
Orders | Leveranciers |
---|---|
U kunt de volgende aangepaste SQL-query gebruiken om het aantal orders te bepalen en een join links te maken in de tabellen Orders en Leveranciers:
SELECT Vendors.Name,COUNT(Orders.Order) AS Number Of Orders
FROM Orders
LEFT JOIN Vendors
ON Orders.VendorID=Vendors.VendorID
GROUP BY Name;
De query resulteert in het volgende:
Zie Joins maken van uw data voor meer informatie over het maken van joins.
Fouten wanneer er naar dubbele kolommen wordt verwezen
Als uw aangepaste SQL-query naar dubbele kolommen verwijst, kunnen er fouten optreden wanneer u een van de kolommen in uw analyse in Tableau probeert te gebruiken. Dit kan ook gebeuren als de query geldig is. Zie de volgende query als voorbeeld:
SELECT * FROM
authors, titleauthor WHERE authors.au_id = titleauthor.au_id
De query is geldig, maar het veld au_id is dubbelzinnig omdat het in dit geval zowel in de tabel "authors" als in de tabel "titleauthor" voorkomt. Tableau maakt verbinding met de query, maar u krijgt een foutmelding wanneer u het veld au_id probeert te gebruiken. Dit komt doordat Tableau niet weet welke tabel u bedoelt.
Opmerking: De best practice is om waar mogelijk kolomaliassen te definiëren met een AS-clausule in een aangepaste SQL-query. De reden hiervoor is dat elke database zijn eigen regels heeft voor het automatisch genereren van een kolomnaam op het moment dat er geen alias wordt gebruikt.
Een aangepaste SQL-query bewerken
Aangepaste SQL-query's bewerken
- In het canvas op de pagina Databron dubbelklikt u op de aangepaste SQL-query in de logische laag.
- Wijs de aangepaste SQL-tabel in de fysieke laag aan met de muis totdat de pijl wordt weergegeven.
- Klik op de pijl en selecteer vervolgens Aangepaste SQL-query bewerken.
- Bewerk de aangepaste SQL-query in het dialoogvenster.
Naam van een aangepaste SQL-query wijzigen
Wanneer u een aangepaste SQL-query naar de logische laag van het canvas sleept, geeft Tableau deze een standaardnaam: Aangepaste SQL-query, Aangepaste SQL-query1, enzovoort. U kunt de standaardnaam wijzigen in een toepasselijkere naam.
- Selecteer op de pagina Databron (in de logische laag van het canvas) de vervolgkeuzepijl in de aangepaste SQL-querytabel en selecteer Naam wijzigen.
- Voer de naam in die u wilt gebruiken voor uw aangepaste SQL-query.
Parameters in een aangepaste SQL-query gebruiken
U kunt parameters in een aangepaste SQL-queryinstructie gebruiken om een constante waarde te vervangen door een dynamische waarde. Vervolgens kunt u de parameter in de werkmap bijwerken om de verbinding te wijzigen. U kunt bijvoorbeeld verbinding maken met een aangepaste SQL-query die webverkeerdata levert voor een bepaalde pagina met een page-ID. In plaats van een constante waarde te gebruiken voor de page-ID-waarde in de SQL-query, kunt u een parameter invoegen. Nadat u de verbinding hebt afgerond, kunt u een parameterbesturingselement in de werkmap weergeven. Gebruik het parameterbesturingselement om de page-ID uit te schakelen en data voor elke interessante pagina op te halen, zonder dat u de verbinding hoeft te bewerken of dupliceren.
In Tableau Desktop kunt u rechtstreeks vanuit het dialoogvenster Aangepaste SQL een parameter maken of parameters gebruiken die deel uitmaken van de werkmap. Als u een nieuwe parameter maakt, kan deze net als elke andere parameter in de werkmap worden gebruikt. Zie Parameters maken voor meer info.
Voor webauthoring (in Tableau Cloud of Tableau Server) kunt u een bestaande parameter gebruiken die vanuit Tableau Desktop is gepubliceerd. U kunt geen nieuwe parameter maken in webauthoring.
Een parameter aan een aangepaste SQL-query toevoegen
- Wijs de tabel op de pagina Databron in het canvas aan met de muis totdat het bewerkingspictogram wordt weergegeven en klik vervolgens op de knop Bewerken.
- Klik onderaan het dialoogvenster op Parameter invoegen.
- Selecteer een constante waarde in de SQL-instructie en kies vervolgens in het vervolgkeuzemenu Parameter invoegen de parameter die u in plaats daarvan wilt gebruiken. Als u nog geen parameter hebt aangemaakt, selecteert u Een nieuwe parameter maken. Volg de instructies van Parameters maken om een parameter aan te maken.
Opmerking: Parameters kunnen alleen letterlijke waarden vervangen. Ze kunnen geen expressies of ID's zoals tabelnamen vervangen.
In het onderstaande voorbeeld retourneert de aangepaste SQL-query alle orders die als Urgent zijn gemarkeerd. In de aangepaste SQL-instructie bepaalt de constante waarde de volgordeprioriteit. Als u de verbinding wilt wijzigen om de orders met hoge prioriteit te zien, moet u de databron bewerken.
In plaats van vele varianten van dezelfde query te maken en te onderhouden, kunt u de waarde van de constante volgordeprioriteit vervangen door een parameter. De parameter moet alle mogelijke waarden voor Volgordeprioriteit bevatten.
Nadat u een parameter hebt gemaakt, kunt u deze in de SQL-instructie invoegen om de constante waarde te vervangen.
Nadat u klaar bent met het bewerken van de verbinding, wordt de nieuwe parameter weergegeven in het gebied Parameters onderaan het deelvenster Data en wordt het parameterbesturingselement weergegeven aan de rechterkant van de weergave. Terwijl u verschillende waarden selecteert, wordt de verbinding bijgewerkt.
Opmerking: Als u een extract gebruikt, moet u het vernieuwen om de wijzigingen in de parameter weer te geven. Als u een databron publiceert die aangepaste SQL-parameters gebruikt, worden deze parameters opgenomen. De parameters worden overgezet naar alle werkmappen die verbinding maken met de databron.
Tableau Catalog-ondersteuning voor aangepaste SQL
Ondersteuning voor aangepaste SQL in Tableau Catalog is afhankelijk van de aangepaste SQL-query.
Tableau Catalog is beschikbaar als onderdeel van het Databeheer-aanbod voor Tableau Server en Tableau Cloud. Zie 'Over Tableau Catalog' in de Help bij Tableau Server of Tableau Cloud voor meer informatie over Tableau Catalog.
Ondersteunde query's
Tableau Catalog ondersteunt aangepaste SQL-query's die voldoen aan de ANSI SQL-2003-standaard. Er zijn drie uitzonderingen hierop bekend:
- Tijdzone-expressies
- Multiset-expressies
- Tableau-parameters
Vanaf 2021.4 ondersteunt Tableau Catalog ook het gebruik van het Transact-SQL-dialect (T-SQL) in aangepaste SQL, met de volgende uitzonderingen:
- Tips
- FOR-componenten
- OPENROWSET-, OPENXML- en OPENJSON-functies
- Scalaire ODBC-functies
- FOR SYSTEM_TIME
- TABLESAMPLE
- MATCH-expressie
- CONTAINS-expressie
- FREETEXT-expressie
Vanaf Tableau Cloud oktober 2023 en Tableau Server 2023.3 biedt Tableau Catalog ook ondersteuning voor aangepaste SQL-query's die PostgreSQL gebruiken. Hierbij gelden de volgende uitzonderingen:
- XML-functie
- JSON-functies en -operators
Ondersteunde features en functies
Tableau Catalog ondersteunt de volgende extra functie voor databronnen, werkmappen en flows met verbindingen die de MySQL- of PostgreSQL-stuurprogramma's gebruiken, zoals Amazon Aurora voor MySQL, Amazon RedShift, Pivotal Greenplum Database, MemSQL, Denodo en andere.
- MySQL GROUP_CONCAT-functie
- PostgreSQL-arrays
- PostgreSQL EXTRACT()-functie
Andere aangepaste SQL-scenario's en -functies werken mogelijk ook, maar Tableau test of ondersteunt deze niet specifiek.
Ondersteunde herkomst
Wanneer een asset aangepaste SQL gebruikt, wordt een bericht met de knop Aangepaste SQL-query tonen weergegeven op het tabblad Herkomst van de assetpagina. Klik op de knop om de aangepaste SQL te zien die in de verbinding wordt gebruikt. Als u vervolgens de aangepaste SQL naar uw klembord wilt kopiëren, klikt u op Kopiëren.
Sommige typen aangepaste SQL kunnen ervoor zorgen dat de upstream-herkomst onvolledig is. Wanneer dit gebeurt, wordt er een bericht met die informatie weergegeven. Kaarten met veldgegevens bevatten mogelijk geen links naar verbonden kolommen, of tonen mogelijk helemaal geen verbonden kolommen. Kaarten met kolomdetails bevatten mogelijk geen links naar velden die de kolom gebruiken, of tonen mogelijk helemaal geen velden.
Als u de herkomst van een tabel onderzoekt, houdt u er dan rekening mee dat Tableau Catalog geen mogelijkheid biedt om kolominformatie in de herkomst voor tabelmetadata weer te geven die met behulp van een aangepaste SQL zijn verzameld. Als andere assets echter dezelfde tabel gebruiken en geen aangepaste SQL gebruiken, kan Tableau Catalog mogelijk informatie weergeven over de kolommen die via deze andere assets zijn ontdekt.
In de volgende schermopname is de tabel factAccountOpportunityByQuarter geïndexeerd omdat deze door een databron wordt gebruikt. Omdat er echter naar wordt verwezen door een aangepaste SQL-query, is de kolominformatie niet beschikbaar.
In het geval dat meer dan één databron, werkmap of flow een tabel gebruikt, worden alle assets downstream van de tabel die een aangepaste SQL-query gebruikt, uitgesloten wanneer filters op kolomniveau worden toegepast. Hierdoor worden er minder downstream-assets in de herkomst weergegeven dan er daadwerkelijk worden gebruikt.
Zie "Herkomst gebruiken voor impactanalyse" in de Tableau Server(Link wordt in een nieuw venster geopend) of Help bij Tableau Cloud(Link wordt in een nieuw venster geopend) voor meer informatie over het gebruiken van herkomst.