Använda DirectQuery i Power BI Desktop

När du ansluter till din datakälla i Power BI Desktop kan du alltid importera en kopia av data till Power BI Desktop. En annan metod är tillgänglig för vissa datakällor: att ansluta direkt till datakällan med DirectQuery.

Datakällor som stöds

Du kan se en fullständig lista med de datakällor som har stöd för DirectQuery i Datakällor som stöds av DirectQuery.

Så ansluter du med DirectQuery

När du använder Hämta data för att ansluta till en datakälla som stöds av DirectQuery kan du i dialogrutan för anslutning välja hur du vill ansluta. I Power BI Desktop går du till menyfliksområdet Start och väljer Hämta data>SQL Server. I dialogrutan SQL Server-databas så har Läge för dataanslutning alternativen Import och DirectQuery:

Alternativen Import och DirectQuery i dialogrutan SQL Server-databas, Power BI Desktop

Här är skillnaderna mellan att välja Import och DirectQuery:

  • Import: Valda tabeller och kolumner importeras till Power BI Desktop. När du skapar eller interagerar med en visualisering använder Power BI Desktop importerade data. Om du vill se dataändringar som gjorts sedan den senaste importen måste du uppdatera dina data, och då läses hela datamängden in på nytt.

  • DirectQuery: Inga data importeras eller kopieras till Power BI Desktop. För relationella källor visas valda tabeller och kolumner i listan Fält. Flerdimensionella källor som SAP Business Warehouse dimensioner och mått i den markerade kuben visas i listan Fält. När du skapar eller interagerar med en visualisering kör Power BI Desktop frågor mot den underliggande datakällan, så du visar alltid aktuella data.

Många datamodelleringar och datatransformationer är tillgängliga när du använder DirectQuery, men med vissa begränsningar. När du skapar eller interagerar med en visualisering måste du köra frågor mot den underliggande källan. Hur lång tid det tar att uppdatera visualiseringen beror på den underliggande datakällans prestanda. När de data som behövs för att hantera förfrågan nyligen har använts så använder Power BI Desktop den nyligen använda versionen för att kunna visa det visuella objektet snabbare. Om du väljer Uppdatera från menyfliksområdet Start uppdateras alla visualiseringar med aktuella data.

I artikeln Power BI och DirectQuery beskrivs DirectQuery i detalj. Du kan även läsa mer om fördelar, begränsningar och viktiga överväganden när du använder DirectQuery i de här avsnitten.

Fördelar med att använda DirectQuery

Det finns några fördelar med att använda DirectQuery:

  • Med DirectQuery kan du skapa visualiseringar över mycket stora datamängder där det annars inte skulle praktiskt genomförbart att först importera alla data med förhandsaggregering.
  • Underliggande dataändringar kan göra att data måste uppdateras. I en del rapporter kan behovet av att visa aktuella data medföra stora dataöverföringar, och då är det inte rimligt att importera alla data. I DirectQuery-rapporter används å andra sidan alltid aktuella data.
  • Datamängdsbegränsning på 1 GB gäller inte för DirectQuery.

Överväganden och begränsningar

Det finns några begränsningar när du använder DirectQuery:

  • Om Power Query-redigeraren frågan är alltför komplex uppstår ett fel. Du kan åtgärda felet genom att antingen ta bort det problematiska steget i Power Query-redigeraren eller importera data i stället för att använda DirectQuery. För flerdimensionella källor som SAP Business Warehouse finns det inga Power Query-redigeraren.

  • Beräknade tabeller och kolumner som refererar till en DirectQuery-tabell från en datakälla med enkel inloggning som autentisering, stöds inte i Power BI-tjänsten.

  • Automatiskt datum/tid är inte tillgängligt i DirectQuery. Till exempel stöds inte särskild behandling av datumkolumner (öka detaljnivån med hjälp av år, kvartal, månad eller dag) i DirectQuery-läge.

  • Det finns en gräns på en miljon rader för molnkällor (vilket är alla datakällor som inte är lokala), med lokala källor begränsade till en definierad nyttolast på cirka 4 MB per rad (beroende på egenutvecklad komprimeringsalgoritm) eller 16 MB datastorlek för hela det visuella objektet. Vissa gränser kan öka när du använder Premium-kapacitet. Den här begränsningen påverkar inte aggregeringar eller beräkningar som används till att skapa datamängden som returneras med DirectQuery. Den gäller bara de rader som returneras. Premium-kapaciteter kan ange gränser för maximalt antal rader, så som beskrivs i det här inlägget.

    Du kan till exempel aggregera 10 000 000 rader med din fråga som körs mot datakällan. Frågan returnerar resultatet av aggregeringen till Power BI med DirectQuery om de Power BI-data som returneras innehåller färre än 1 000 000 rader. Om över 1 miljon rader returneras från DirectQuery så returnerar Power BI ett fel (såvida inte i Premium-kapacitet används, och radantalet understiger den administratörsfastställda gränsen).

  • Det finns en gräns på 125 kolumner i en tabell eller matris för resultat som har fler än 500 rader för DirectQuery-källor. När du visar ett resultat som innehåller fler än 500 rader i en tabell eller matris visas en rullningslist 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 enda tabell eller matris bör du överväga att skapa mått med MIN, MAX, FIRST eller LAST eftersom de inte räknas mot det här maxvärdet.

  • Du kan inte ändra från import till DirectQuery-läge. Även om det går att växla en modell från DirectQuery-läge till importläge så måste alla nödvändiga data importeras. Det går heller inte att växla tillbaka, främst på grund av de funktioner som inte stöds i DirectQuery-läge. Du kan inte heller växla DirectQuery-modeller över flerdimensionella källor som SAP BW från DirectQuery till import eftersom externa mått behandlas annorlunda.

  • Det finns ett känt problem i DirectQuery när du filtrerar en datumkolumn som innehåller 31 december 9999, som ofta används som en särskild datumplatshållare när den faktiska datuminformationen inte hämtades. Även om det är vanligt att filtrera datumet den 31 december 9999 från din analys, filtrerar inte filtret is eller is not korrekt ut det speciella datumet. För att undvika felaktig filtrering när det datumet finns använder du är på eller efter eller är på eller före för att filtrera efter det speciella datumet. I följande exempel finns mer information för att förstå potentiella filtreringsproblem och det bästa sättet att undvika dem.

    I det här exemplet använder vi en enkel datauppsättning som bara innehåller två rader med data med två datum. Datumen formateras i format som är vanliga i USA: månaden följt av dagen följt av året. Den första raden innehåller datumet 5 mars 2022 och den andra raden innehåller den 31 december 9999:

    Exempeldata för att förklara filterproblem med det särskilda datumet den 31 december 9999. Data innehåller två rader: den första raden innehåller 5 mars 2022 och den andra raden innehåller den 31 december 9999

    Om du vill isolera eller ta bort de rader som innehåller 31 december 9999 skapar du förmodligen ett filter för kolumnen som innehåller datumen och ställer in det så att det visar objekt när värdet är eller inte är lika med 31 december 9999, som du ser i följande bild. Observera dock att de returnerade resultaten inte är vad som förväntas, eftersom det visuella objektet inte returnerar några data i stället för att returnera en rad som förväntat:

    Om du anger ett filter för att visa objekt när värdet är eller inte är lika med den 31 december filtrerar 9999 alla data och returnerar därmed felaktiga resultat.

    Men om du ställer in filtret på att visa objekt när värdet är på eller före eller är på eller efter den 31 december, returnerar 9999 det förväntade resultatet:

    Om du ställer in ett filter på är på eller före 31 december returnerar 9999 rätt resultat: raderna som innehåller 31 december 9999 tas bort.

    Om du anger ett filter till på eller efter den 31 december returnerar 9999 rätt resultat: endast de rader som innehåller den 31 december 9999 returneras.

Att tänka på när du använder DirectQuery

Du måste tänka på följande tre punkter när du använder DirectQuery:

  • Prestanda och belastning: Alla DirectQuery-förfrågningar skickas till källdatabasen, så hur lång tid det tar att uppdatera ett visuellt objekt beror på hur lång tid tar att svara med frågeresultatet. Rekommenderad svarstid är högst fem sekunder (där begärda data returneras) när du använder DirectQuery för visuella objekt, maximal rekommenderad är 30 sekunder. Om det tar längre blir upplevelsen för användaren oacceptabel. När en rapport har publicerats till Power BI-tjänsten kan alla frågor som tar längre tid än några minuter avbrytas och användaren får då ett felmeddelande.

    Belastningen på källdatabasen bör också övervägas, baserat på antalet Power BI-användare som kommer att använda den publicerade rapporten. Att använda säkerhet på radnivå (RLS) kan också ha stor inverkan. En panel på instrumentpanelen som delas av flera användare och inte har RLS genererar en enda fråga till databasen. Om RLS används för panelen innebär det dock att en uppdatering kräver en fråga per användare, vilket avsevärt ökar belastningen på källdatabasen och kan påverka systemets prestanda.

    Power BI skapar så effektiva frågor som möjligt. I en del situationer kan dock den fråga som genereras vara så ineffektiv att uppdateringar misslyckas. Ett exempel på det här är när en genererad fråga returnerar ett mycket stort antal rader från datakällan i serverdelen. I så fall ser du följande fel:

    The resultset of a query to external data source has exceeded
    

    Den här situationen kan uppstå med ett enkelt diagram som innehåller en mycket hög kardinalitet-kolumn med aggregeringsalternativet inställt på Sammanfatta inte. Det visuella objektet måste ha kolumner med en kardinalitet under 1 miljon, eller så måste du använda lämpliga filter.

  • Säkerhet: Som standard kan alla användare som använder en publicerad rapport ansluta till datakällan i serverdelen med de autentiseringsuppgifter som anges efter publiceringen till Power BI-tjänsten. Samma sak gäller för data som importeras: alla användare ser samma data, oavsett vilka säkerhetsregler som har definierats för källan i serverdelen.

    Kunder som vill implementera användarbaserad säkerhet för DirectQuery-källor bör antingen använda RLS eller konfigurera Kerberos-begränsad autentisering mot källan. Kerberos är inte tillgängligt för alla källor. Läs mer om RLS. Läs mer om Kerberos i DirectQuery.

  • Funktioner som stöds: Det är inte alla funktioner i Power BI Desktop som stöds i DirectQuery-läge, och andra funktioner har begränsningar. Dessutom är det vissa funktioner i Power BI-tjänsten (som Snabbinsikter) som inte är tillgängliga för datamängder som använder DirectQuery. När du bestämmer om du ska använda DirectQuery bör du ha de här begränsningarna i åtanke.

Anteckning

När du använder DirectQuery med Azure SQL Database och en privat IP-adress krävs en lokal gateway.

Registrera dig på Power BI-tjänsten

Rapporter som skapas med DirectQuery kan publiceras i Power BI-tjänsten.

Om den använda datakällan inte behöver den lokala datagatewayen (Azure SQL Database, Azure Synapse Analytics (tidigare SQL Data Warehouse)eller Redshift) måste du ange autentiseringsuppgifter innan Power BI-tjänst visar den publicerade rapporten. Gör så här för att ange autentiseringsuppgifterna:

  1. Logga in i Power BI.

  2. Välj kugghjulsikonen i Power BI-tjänsten och sedan alternativet Inställningar.

    Inställningar, Power BI-tjänsten

  3. På sidan Inställningar i Power BI-tjänsten väljer du fliken Datamängder, den datamängd som använder DirectQuery och sedan Redigera autentiseringsuppgifter.

  4. Lägg till autentiseringsuppgifterna. Annars inträffar ett fel när du öppnar en publicerad rapport eller utforskar en datamängd som har skapats via en DirectQuery-anslutning.

Om du vill skapa en dataanslutning för andra datakällor än Azure SQL Database, Azure Synapse Analytics (tidigare SQL Data Warehouse), Redshift eller Snowflake Data Warehouse som använder DirectQuery, installerar du en lokal datagateway och registrerar datakällan. Mer information finns i Vad är en lokal datagateway?

Nästa steg

Mer information om DirectQuery finns i följande resurser: