Använda DirectQuery i Power BI Desktop
När du ansluter till en datakälla med Power BI Desktop kan du importera en kopia av data. För vissa datakällor kan du också ansluta direkt till datakällan utan att importera data med hjälp av DirectQuery. I den här artikeln beskrivs skillnaderna mellan anslutningslägena Import och DirectQuery och hur du ansluter till datakällor med DirectQuery. Den omfattar även överväganden och begränsningar för användning av DirectQuery, till exempel prestanda och säkerhet.
Om du vill ta reda på om en datakälla stöder DirectQuery kan du visa den fullständiga listan över tillgängliga datakällor som finns i artikeln Anslutningsappar i Power Query, som även gäller för Power BI. Välj den artikel som beskriver den datakälla som du är intresserad av i listan över anslutningsappar som stöds och se sedan avsnittet i anslutningsappens artikel med titeln Funktioner som stöds. Om DirectQuery inte visas i det avsnittet för datakällans artikel stöds inte DirectQuery för den dataanslutningen.
Här är skillnaderna mellan att använda anslutningslägena Import och DirectQuery:
Import: En kopia av data från de valda tabellerna och kolumnerna importeras till Power BI Desktop. När du skapar eller interagerar med visualiseringar använder Power BI Desktop importerade data. Om du vill se underliggande dataändringar efter den första importen eller den senaste uppdateringen måste du importera den fullständiga semantiska modellen igen för att uppdatera data.
DirectQuery: Inga data importeras till Power BI Desktop. För relationskällor kan du välja tabeller och kolumner som ska visas i fönstret Power BI Desktop-data. För flerdimensionella källor som SAP Business Warehouse (SAP BW) visas dimensioner och mått för den valda kuben i fönstret Data . När du skapar eller interagerar med visualiseringar frågar Power BI Desktop den underliggande datakällan, så att du alltid visar aktuella data.
När du skapar eller interagerar med en visualisering med DirectQuery måste du fråga den underliggande källan. Den tid som krävs för att uppdatera visualiseringen beror på den underliggande datakällans prestanda. Om de data som behövs för att hantera begäran nyligen begärdes använder Power BI Desktop de senaste data för att minska den tid som krävs för att visa visualiseringen. Om du väljer Uppdatera från menyfliksområdet Start uppdateras alla visualiseringar med aktuella data.
Många datamodellering och datatransformeringar är tillgängliga när du använder DirectQuery, men med vissa prestandabaserade begränsningar. Mer information om DirectQuery-fördelar, begränsningar och rekommendationer finns i DirectQuery i Power BI.
DirectQuery-fördelar
Några fördelar med att använda DirectQuery är:
Med DirectQuery kan du skapa visualiseringar över mycket stora semantiska modeller, där det skulle vara omöjligt att importera alla data med föraggregering.
DirectQuery-rapporter använder alltid aktuella data. Om du ser underliggande dataändringar måste du uppdatera data och det kan vara omöjligt att importera om stora semantiska modeller för att uppdatera data.
Den semantiska modellbegränsningen på 1 GB gäller inte för DirectQuery.
Ansluta med DirectQuery
Så här ansluter du till en datakälla med DirectQuery:
I gruppen Start i menyfliksområdet Power BI Desktop väljer du Hämta data och väljer sedan en datakälla som DirectQuery stöder, till exempel SQL Server.
I dialogrutan för anslutningen går du till Dataanslutningsläge och väljer DirectQuery.
Publicera till Power BI-tjänsten
Du kan publicera DirectQuery-rapporter till usluga Power BI, men du måste vidta extra åtgärder för att usluga Power BI ska kunna öppna rapporterna.
Om du vill ansluta usluga Power BI till andra DirectQuery-datakällor än Azure SQL Database, Azure Synapse Analytics (tidigare SQL Data Warehouse), Amazon Redshift och Snowflake Data Warehouse installerar du en lokal datagateway och registrerar datakällan.
Om du använde DirectQuery med molnkällor som Azure SQL Database, Azure Synapse, Amazon Redshift eller Snowflake Data Warehouse behöver du ingen lokal datagateway. Du måste fortfarande ange autentiseringsuppgifter för usluga Power BI för att öppna den publicerade rapporten. Utan autentiseringsuppgifter uppstår ett fel när du försöker öppna en publicerad rapport eller utforska en semantisk modell som skapats med en DirectQuery-anslutning.
Så här anger du autentiseringsuppgifter för att öppna rapporten och uppdatera data:
I usluga Power BI går du till arbetsytan och letar upp den semantiska modell som använder DirectQuery i arbetsytans innehållslista.
Välj ikonen Fler alternativ tre vågräta punkter bredvid namnet på den semantiska modellen och välj sedan Inställningar.
Under autentiseringsuppgifter för datakälla anger du autentiseringsuppgifterna för att ansluta till datakällan.
Kommentar
Om du använde DirectQuery med en Azure SQL Database som har en privat IP-adress måste du använda en lokal gateway.
Beaktanden och begränsningar
Vissa Power BI Desktop-funktioner stöds inte i DirectQuery-läge, eller så har de begränsningar. Vissa funktioner i usluga Power BI, till exempel snabba insikter, är inte heller tillgängliga för semantiska modeller som använder DirectQuery. När du bestämmer dig för om du vill använda DirectQuery bör du överväga de här funktionsbegränsningarna. Tänk också på följande faktorer:
Prestanda- och belastningsöverväganden
DirectQuery skickar alla begäranden till källdatabasen, så den nödvändiga uppdateringstiden för visuella objekt beror på hur lång tid det tar för den underliggande källan att returnera resultat. Fem sekunder eller mindre är den rekommenderade svarstiden för att ta emot begärda data för visuella objekt. Uppdateringstider över 30 sekunder ger en oacceptabelt dålig upplevelse för användare som använder rapporten. En fråga som tar längre tid än fyra minuter i usluga Power BI och användaren får ett fel.
Belastningen på källdatabasen beror också på antalet Power BI-användare som använder den publicerade rapporten, särskilt om rapporten använder säkerhet på radnivå (RLS). Uppdateringen av en icke-RLS-instrumentpanel som delas av flera användare skickar en enda fråga till databasen, men uppdatering av en instrumentpanelspanel som använder RLS kräver en fråga per användare. De ökade frågorna ökar belastningen avsevärt och kan påverka prestanda.
Gräns på 1 miljon rader
DirectQuery definierar en gräns på 1 miljon rader för data som returneras från molndatakällor, som är alla datakällor som inte är lokala. Lokala källor är begränsade till en definierad nyttolast på cirka 4 MB per rad, beroende på en egen komprimeringsalgoritm eller 16 MB för hela det visuella objektet. Premium-kapaciteter kan ange olika maximala radgränser enligt beskrivningen i blogginlägget om nya kapacitetsinställningar för Power BI Premium.
Power BI skapar frågor som är så effektiva som möjligt, men vissa genererade frågor kan hämta för många rader från den underliggande datakällan. Den här situationen kan till exempel inträffa med ett enkelt diagram som innehåller en kolumn med hög kardinalitet med aggregeringsalternativet inställt på Ingen beräkning. Det visuella objektet får bara ha kolumner med en kardinalitet under 1 miljon eller använda lämpliga filter.
Radgränsen gäller inte för aggregeringar eller beräkningar som används för att välja den semantiska modellen DirectQuery returnerar, bara för de rader som returneras. Frågan som körs på datakällan kan till exempel aggregera 10 miljoner rader. Så länge data som returneras till Power BI är mindre än 1 miljon rader kan frågan returnera resultatet korrekt. Om data är över 1 miljon rader visar Power BI ett fel, förutom i Premium-kapacitet med olika administratörsuppsättningsgränser. Felet anger: Resultatuppsättningen för en fråga till en extern datakälla har överskridit den maximala tillåtna storleken på raderna "1000000".
Säkerhetsfrågor
Som standard ansluter alla användare som använder en publicerad rapport i usluga Power BI till den underliggande datakällan med hjälp av de autentiseringsuppgifter som angetts efter publiceringen. Den här situationen är densamma som för importerade data. Alla användare ser samma data, oavsett säkerhetsregler som den underliggande källan definierar.
Om du behöver säkerhet per användare implementerad med DirectQuery-källor använder du antingen RLS eller konfigurerar Kerberos-begränsad autentisering mot källan. Kerberos är inte tillgängligt för alla källor. Mer information finns i Säkerhet på radnivå (RLS) med Power BI och Konfigurera Kerberos-baserad enkel inloggning från usluga Power BI till lokala datakällor.
Andra DirectQuery-begränsningar
Några andra begränsningar för att använda DirectQuery är:
Om Power Query uređivač frågan är alltför komplex uppstår ett fel. Om du vill åtgärda felet måste du antingen ta bort det problematiska steget i Power Query uređivač eller växla till importläge. Flerdimensionella källor som SAP BW kan inte använda Power Query uređivač.
Automatisk datum-/tidshierarki är inte tillgänglig i DirectQuery. DirectQuery-läget stöder inte datumkolumnsgranskning efter år, kvartal, månad eller dag.
För tabell- eller matrisvisualiseringar finns det en gräns på 125 kolumner för resultat som returnerar mer än 500 rader från DirectQuery-källor. Dessa resultat visar en rullningslist i tabellen eller matrisen som gör att du kan hämta mer data. I så fall är det maximala antalet kolumner i tabellen eller matrisen 125. Om du måste inkludera fler än 125 kolumner i en enskild tabell eller matris kan du överväga att skapa mått som använder
MIN
,MAX
,FIRST
ellerLAST
, eftersom de inte räknas mot det här maxvärdet.Du kan inte ändra från Import till DirectQuery-läge. Du kan växla från DirectQuery-läge till Importläge om du importerar alla nödvändiga data. Det går inte att växla tillbaka, främst på grund av funktionsuppsättningen som DirectQuery inte stöder. DirectQuery-modeller över flerdimensionella källor, till exempel SAP BW, kan inte heller växlas från DirectQuery till importläge på grund av olika behandling av externa mått.
Beräknade tabeller och beräknade kolumner som refererar till en DirectQuery-tabell från en datakälla med enkel inloggningsautentisering (SSO) stöds i usluga Power BI med en tilldelad delningsbar molnanslutning och/eller detaljerad åtkomstkontroll.