Tabeller i LuckyTemplates: Typer & Distinktioner

Jag vill ägna lite tid idag åt att prata om tabeller i LuckyTemplates. Vi stöter på tabeller hela tiden med varje problem, men vi spenderar egentligen inte mycket tid på att tänka på dem ensamma. Du kan se hela videon av denna handledning längst ner på den här bloggen.

Det var nyligen ett inlägg från LuckyTemplates-medlemmen, Ashton, som alltid kommer med bra, tankeväckande frågor. Hans fråga fick mig att tänka på ett mönster som jag ser ganska regelbundet och som jag vill ta upp i den här handledningen.

Det var inte ett misstag han gjorde, men det är ett vanligt misstag. Jag ser många gånger där folk skulle säga att de har problem med ett virtuellt bord, till exempel när det inte är ett virtuellt bord i första hand.

Det finns en verklig skillnad mellan typerna av tabeller i LuckyTemplates.

Analogin jag skulle ge är om någon sa, "Hej, jag har nyligen adopterat en hund och jag har problem med hunden och undrar om du kan hjälpa" och det är inte en hund, utan en varg. De är båda hundar, men det finns några ganska stora skillnader som du vill ta hänsyn till.

Så även om de alla är av samma familj, precis som tabellerna i LuckyTemplates, är de viktiga distinktioner som verkligen påverkar lösningen och hur du använder dessa tabeller. Så vad jag ville göra var att återkomma till Ashtons fråga och sedan gräva lite i skillnaderna mellan tabellerna du hittar i LuckyTemplates och visa hur det påverkar hur du hanterar dem.

Frågan var ganska enkel, men det är lite mer i den än vad det först verkar. Han hade en enkel datauppsättning som bara säger kunderna, vilken typ av frukt de köpte, kvantiteten och sedan bara ett indexnummer.

Tabeller i LuckyTemplates: Typer & Distinktioner

Han ville ha en skivare med multi-select-funktion så att om du valde säg apelsin skulle den dra upp alla kunder som köpte apelsiner, men den skulle också visa vad mer de köpte.

Tabeller i LuckyTemplates: Typer & Distinktioner

Så om vi stänger av detta val (orange) kan vi se hela datamängden. Vi kan också se att det är de två kunderna (Joe och Mary) som köpte apelsiner, men var och en hade också ett extra köp.

Tabeller i LuckyTemplates: Typer & Distinktioner

Och så, det första vi vet om är att fruktskäraren måste vara ett frånkopplat skivbord. Om det vore en vanlig skivare skulle du slå apelsin och den skulle i princip ta ut allt utom apelsin i bordet. Vi vet också, eftersom detta är dynamiskt, har vi ett virtuellt bordsproblem.

Så låt oss fördjupa oss i det här lite, men innan vi gör det, låt oss ta en titt på de olika typerna av tabeller som vi hittar i LuckyTemplates.

Innehållsförteckning

Tre typer av tabeller i LuckyTemplates

Det finns tre typer av bord som vi hittar regelbundet. Den första är den vanligaste och det är en fysisk tabell, och det här är verkligen din primära data. Närhelst du hämtar data eller anger data direkt via detta alternativ eller in, gör du en referens eller duplicering, eller så laddar du in data genom en tom fråga, som en datumtabell, det är en fysisk tabell.

Tabeller i LuckyTemplates: Typer & Distinktioner

En fysisk tabell är inte helt dynamisk, men den har alla dessa andra egenskaper som ökar filstorleken eftersom det är fysisk data. Den är tillgänglig i Power Query. Vanligtvis byggs relationerna i datamodellen genom fysiska relationer. Det behöver de inte vara, men det är de oftast. De används för primära data och du visualiserar dem antingen genom datavyn eller via Power Query.

Tabeller i LuckyTemplates: Typer & Distinktioner

En fysisk tabell är inte helt dynamisk, men den har alla dessa andra egenskaper som ökar filstorleken eftersom det är fysisk data. Den är tillgänglig i Power Query. Vanligtvis byggs relationerna i datamodellen genom fysiska relationer. Det behöver de inte vara, men det är de oftast. De används för primära data och du visualiserar dem antingen genom datavyn eller via Power Query.

Den som ofta förväxlas med den virtuella tabellen är den här beräknade tabellen eller vad vi också kan referera till som en DAX-uttryckstabell. Detta har en direkt analogi till beräknade kolumner som skapas genomuttryck. Detta görs via fliken Modellering och alternativet Ny tabell, och sedan anger du DAX-uttrycket.

Den som ofta förväxlas med den virtuella tabellen är den här beräknade tabellen eller vad vi också kan referera till som en DAX-uttryckstabell. Detta har en direkt analogi till beräknade kolumner som skapas genom DAX-uttryck. Detta görs via fliken Modellering och alternativet Ny tabell, och sedan anger du DAX-uttrycket.

Tabeller i LuckyTemplates: Typer & Distinktioner

Som du kan se från jämförelsetabellen nedan är den beräknade tabellen ganska annorlunda i profil från antingen den fysiska tabellen eller den virtuella tabellen. Det är inte helt dynamiskt.

Den behöver uppdateras för att kunna hämta den nya informationen. Det ökar den fysiska filstorleken. Till skillnad från en rak fysisk tabell är den inte tillgänglig i Power Query. Precis som en beräknad kolumn inte visas i Power Query, så gör inte en beräknad tabell det heller. Men det har de andra aspekterna av ett fysiskt bord.

Tabeller i LuckyTemplates: Typer & Distinktioner

Vanligtvis beräknade tabeller som används för att stödja tabeller och används oftare för felsökning. Det finns nu bättre verktyg som DAX Studio och Tabular Editor, så det används inte lika ofta för det. Du visar den här tabellen genom datavyn.

Och ärligt talat, liksom beräknade kolumner, är det i allmänhet något att hålla sig borta från. Det finns bättre sätt att göra saker på än genom uträknade tabeller.

Och då är analogin till mått sanna. Dessa skapas i samband med åtgärder genom DAX-åtgärdskoden. De är helt dynamiska, till skillnad från de andra två typerna av bord. De ökar inte filstorleken eftersom de är på begäran. Precis som mått, beräknas virtuella tabeller på begäran i minnet och används alla under loppet av sammanhang som de behövs för.

De är inte tillgängliga i Power Query. Du kan inte sätta en fysisk relation på dem. Om du relaterar dem i din datamodell gör du det med hjälp av virtuella relationer, oftast med.

Virtuella tabeller används för mellanliggande beräkningar i mått eftersom ett mått inte kan returnera ett tabellvärde och det måste returnera ett skalärt värde. Så du använder vanligtvis dem som den interimsberäkning på vilken du genererar dina skalare, som är den resulterande produkten av din åtgärd.

Du kan visualisera dessa tabeller i verktyg som DAX Studio, Tabular Editor eller New Table, vilket återigen förmodligen är det minst önskvärda sättet eftersom det belamrar din datamodell med en massa extra tabeller, om du inte tar bort detta.

DAX-måttlösning för ett virtuellt bord

Om vi ​​går tillbaka till Ashtons fråga, genom att titta på tabellen kan vi se att den är dynamisk. Vi kan också göra flera val och detta förändras helt i farten. Och därför vet vi att det är en virtuell tabell eftersom de andra två (fysiska och beräknade tabeller) inte är helt dynamiska. Vi vet också att det är ett frånkopplat bord, som jag nämnde i början.

Tabeller i LuckyTemplates: Typer & Distinktioner

Jag använde Rubber Duck-konceptet för att lösa detta. I en tidigare handledning har jag pratat om det här konceptet med gummiduckning, som utvecklar en konceptuell lösning på problemet innan du börjar gräva i den specifika DAX.

Och så, för gummianka-lösningen här, vad jag gjorde var i princip att sätta ihop detta frånkopplade skärbord. Sedan skördade jag värdet av dessa skärmaskiner. Därefter kom jag med en virtuell tabell som filtrerade klienter efter de som hade köpt valen i den frånkopplade tabellen.

Sedan tog jag den kundlistan och filtrerade vår ursprungliga datauppsättning av dessa kunder för att komma fram till kunderna och köpen som gjordes av dessa kunder, utöver slicervärdet.

Låt oss ta en titt på den specifika åtgärden för att se hur detta fungerade och några av de överväganden du har när du arbetar med virtuella tabeller.

Tabeller i LuckyTemplates: Typer & Distinktioner

Det första var att ta fram två skördemått för våra värderingar. Den första är värdet på den frånkopplade skäraren.

Eftersom vi hade multivalet i kravet innebar det att vi inte bara kunde använda. Så det jag gjorde är att användafunktion för att fånga potentiellt ett eller flera val i den frånkopplade slicern. För klienter, eftersom vi kommer att ha en klient på varje rad som vi utvärderar, kan vi använda SELECTEDVALUE.

Nästa sak jag gjorde var denna virtuella tabellvariabel ( VAR Buyers ) som börjar med. Sedan går det till att filtrerakunder genom att göra ett fruktköp eller inte som var i våra värderingar för den frånkopplade skivaren.

Vi kan kolla upp detta genom att göra en DAX-fråga. Vi kan göra det i antingen DAX Studio eller i Tabular Editor. Så låt oss ta vårt virtuella tabellmått här, kopiera det till Tabular Editor. Vi kommer att se till att det ger oss de värderingar som vi förväntar oss att se, vilket skulle vara Joe och Mary.

Tabeller i LuckyTemplates: Typer & Distinktioner

DAX-frågor returnerar alltid tabeller och de började alltid med EVALUATE, så vi lägger till EVALUATE här. Vi får dock inget i resultatet. Detta beror på att den valda skördvariabeln för frånkoppling av frukt ( SelDisconnFruit ) inte har någon medvetenhet om skivaren. Det är ur sitt sammanhang.

Så sättet att testa det är att på konstgjord väg ställa in det skivarvärdet. Vi kommer att ersätta SelDisconnFruit med ett litet bord här. Skriv in Orange (värdet på den skivaren) mellan snirkliga parenteser . Och nu får vi resultatet här, som är Joe och Mary. Med det fungerar den virtuella tabellen precis som vi trodde att den skulle.

Tabeller i LuckyTemplates: Typer & Distinktioner

Så nu kan vi gå tillbaka till vårt måttuttryck. En av de utmanande sakerna med virtuella tabeller är att de är lätta att skapa virtuella tabeller inom ett mått . Men du kan inte returnera en virtuell tabell som ett resultat av en åtgärd . Så vi måste returnera en skalär, men den fångar den relevanta aspekten av den virtuella tabellen.

Så här har vi den virtuella tabellen som talar om för oss vilka kunder som köpte frukterna som fanns i värdeskäraren. Vi kan ställa in en annan variabel ( VAR BuyerIn ) som säger att om den valda klienten fanns i den köparens tabell, får den en etta . Och om inte, får den en nolla .

Tabeller i LuckyTemplates: Typer & Distinktioner

Sedan tar vi resultatet av det och lägger det i filterrutan. Key Buyers- måttet, säger vi, är ett och det kommer att vara de kunder som köpte, i det här fallet, apelsiner.

Tabeller i LuckyTemplates: Typer & Distinktioner

Och genom att göra det filtrerar vi ner vår ursprungliga datatabell till rätt poster. Du kan se att den nu skapar den virtuella tabellen och den filtrerar korrekt baserat på varje val.




Slutsats

Det var det mesta jag ville ta upp idag. Det är ett ganska okomplicerat virtuellt tabellexempel, men med fokus på skillnaden mellan fysiska tabeller, beräknade tabeller och virtuella tabeller.

Det finns många intressanta frågor att återkomma till när det gäller virtuella tabeller, särskilt med felsökning av virtuella tabellmått. Det är något jag kommer att återkomma till inom de närmaste veckorna, men för tillfället är det hela den här handledningen.

Skål!


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.