Inleiding

Voltooid

U kunt een DAX-formule (Data Analysis Expressions) schrijven om een berekende tabel toe te voegen aan het model. Met de formule kunnen bestaande modelgegevens worden gedupliceerd of getransformeerd om een nieuwe tabel te produceren.

Notitie

Een berekende tabel kan geen verbinding maken met externe gegevens. Als u dat wilt doen, moet u Power Query gebruiken.

Een formule van een berekende tabel moet een tabelobject retourneren. Met de eenvoudigste formule kan een bestaande modeltabel worden gedupliceerd.

Berekende tabellen hebben een paar nadelen: Ze zorgen voor een groter formaat modelopslag en kunnen ervoor zorgen dat meer tijd nodig is om gegevens te vernieuwen. De reden hiervoor is dat berekende tabellen opnieuw worden berekend wanneer ze formuleafhankelijkheden hebben bij vernieuwde tabellen.

Een tabel dupliceren

In de volgende sectie wordt een veelvoorkomend ontwerpprobleem beschreven dat kan worden opgelost door een berekende tabel te maken. Download en open eerst het bestand Adventure Works DW 2020 M03.pbix en schakel vervolgens over naar het modeldiagram.

In het modeldiagram ziet u dat de tabel Verkoop drie relaties heeft met de tabel Datum .

In het modeldiagram worden drie relaties weergegeven, omdat de verkoopgegevens in de tabel Verkoop zijn opgeslagen op orderdatum, verzenddatum en einddatum. Als u de kolommen OrderDateKey, ShipDateKey en DueDateKey bekijkt, ziet u dat één relatie wordt vertegenwoordigd door een ononderbroken lijn. Dit is de actieve relatie. De andere relaties, weergegeven door stippellijnen, zijn inactieve relaties.

Notitie

Er kan slechts één actieve relatie bestaan tussen twee modeltabellen.

Beweeg in het diagram met de cursor over de actieve relatie om de gerelateerde kolommen te markeren. Dit is hoe u het modeldiagram gebruikt om informatie te krijgen over gerelateerde kolommen. In dit geval filtert de actieve relatie de kolom OrderDateKey in de tabel Sales . Filters die worden toegepast op de tabel Datum , worden dus doorgegeven aan de tabel Sales om te filteren op orderdatum; ze filteren nooit op verzenddatum of einddatum.

De volgende stap is het verwijderen van de twee inactieve relaties tussen de tabel Date en de tabel Sales . Als u een relatie wilt verwijderen, klikt u er met de rechtermuisknop op en selecteert u vervolgens in het contextmenu de optie Verwijderen. Zorg ervoor dat u beide inactieve relaties verwijdert.

Voeg vervolgens een nieuwe tabel toe zodat rapportgebruikers Verkoop kunnen filteren op verzenddatum. Schakel over naar de rapportweergave en selecteer vervolgens op het linttabblad Modelleren vanuit de groep Berekeningende optie Nieuwe tabel.

Voer in de formulebalk (onder het lint) de volgende definitie van de berekende tabel in en druk op Enter.

Ship Date = 'Date'

Met de definitie van de berekende tabel worden de gegevens van de tabel Date gedupliceerd om een nieuwe tabel te produceren met de naam Verzenddatum. De tabel Verzenddatum heeft precies dezelfde kolommen en rijen als de tabel Date . Wanneer de gegevens van de tabel Datum worden vernieuwd, wordt de tabel Verzenddatum opnieuw berekend, zodat deze altijd gesynchroniseerd zijn.

Ga naar het modeldiagram en let op de toevoeging van de tabel Verzenddatum .

Maak vervolgens een relatie tussen de kolom DateKey in de tabel Verzenddatum en de kolom ShipDateKey in de tabel Sales . U kunt de relatie maken door de kolom DateKey in de tabel Verzenddatum naar de kolom ShipDateKey in de tabel Sales te slepen.

In een berekende tabel worden alleen gegevens gedupliceerd; Er worden geen modeleigenschappen of -objecten, zoals zichtbaarheid van kolommen of hiërarchieën, gedupliceerd. U moet deze indien nodig instellen voor de nieuwe tabel.

Tip

U kunt de namen van kolommen van een berekende tabel wijzigen. In dit voorbeeld is het een goed idee om de namen van de kolommen te wijzigen, zodat hun doel duidelijker is. De naam van de kolom Fiscaal jaar in de tabel Verzenddatum kan bijvoorbeeld worden gewijzigd in Fiscaal verzendjaar. Wanneer velden uit de tabel Verzenddatum in visuals worden gebruikt, worden de namen ervan automatisch opgenomen in bijschriften, zoals de titel van de visual of aslabels.

Als u het ontwerp van de tabel Verzenddatum wilt voltooien, kunt u het volgende doen:

  • Wijzig de namen van de volgende kolommen:
    • Datum wordt Verzenddatum
    • Fiscaal jaar wordt Fiscaal verzendjaar
    • Fiscaal kwartaal wordt Fiscaal verzendkwartaal
    • Maand wordt Verzendmaand
    • Volledige datum wordt Volledige verzenddatum
  • Sorteer de kolom Volledige verzenddatum op de kolom Verzenddatum.
  • Sorteer de kolom Verzendmaand op de kolom MonthKey.
  • Verberg de kolom MonthKey.
  • Maak een hiërarchie met de naam Fiscaal, met de volgende drie niveaus:
    • Fiscaal verzendjaar
    • Fiscaal verzendkwartaal
    • Verzendmaand
    • Volledige verzenddatum
  • Markeer de tabel Verzenddatum als een datumtabel met behulp van de kolom Verzenddatum.

Berekende tabellen zijn handig in scenario's waarbij meerdere relaties tussen twee tabellen bestaan, zoals eerder beschreven. Ze kunnen ook worden gebruikt om een datumtabel toe te voegen aan uw model. Datumtabellen zijn vereist om speciale tijdsfilters toe te passen, bekend als time intelligence.

Een datumtabel maken

In het volgende voorbeeld wordt een tweede berekende tabel gemaakt, dit keer met behulp van de CALENDARAUTO DAX-functie.

Creatie de berekende tabel Vervaldatum met behulp van de volgende definitie.

Due Date = CALENDARAUTO(6)

De CALENDARAUTO DAX-functie gebruikt één optioneel argument, het nummer van de laatste maand van het jaar, en retourneert een tabel met één kolom. Als u geen maandnummer doorgeeft, wordt ervan uitgegaan dat de waarde 12 is (voor december). Voorbeeld: bij Adventure Works eindigt het fiscale jaar elk jaar op 30 juni, dus wordt de waarde 6 (voor juni) doorgevoerd.

Met de functie worden alle datum- en datum/tijd-kolommen in het model gescand om de vroegste en laatste opgeslagen datumwaarden te bepalen. Vervolgens wordt een volledige set datums gegenereerd die alle datums in het model beslaan, zodat volledige jaren met datums worden geladen. Als de vroegste datum die is opgeslagen in uw model bijvoorbeeld 15 oktober 2021 is, is de eerste datum die door de CALENDARAUTO functie wordt geretourneerd 1 juli 2021. Als de laatste datum die is opgeslagen in het model 15 juni 2022 is, is de laatste datum die door de CALENDARAUTO functie wordt geretourneerd 30 juni 2022.

CALENDARAUTO De functie garandeert dat aan de volgende vereisten voor het markeren van een datumtabel wordt voldaan:

  • De tabel moet een kolom bevatten van het gegevenstype Datum.
  • De kolom moet volledige jaren bevatten.
  • Er mogen geen datums ontbreken in de kolom.

Tip

U kunt ook een datumtabel maken met behulp van de CALENDAR DAX-functie en twee datumwaarden doorgeven, die het datumbereik vertegenwoordigen. De functie genereert één rij voor elke datum in het bereik. U kunt doorgeven in statische datumwaarden of in expressies die de vroegste/laatste datums ophalen uit specifieke kolommen in het model.

Schakel vervolgens over naar de gegevensweergave en selecteer vervolgens in het deelvenster Velden de tabel Vervaldatum . Bekijk nu de kolom met datums. Mogelijk wilt u ze in een andere volgorde plaatsen en de vroegste datum in de eerste rij weergeven. Selecteer hiervoor de pijl in de kolomkop Datum en sorteer vervolgens in oplopende volgorde.

Notitie

Het rangschikken of filteren van kolommen heeft geen invloed op de manier waarop de waarden worden opgeslagen. Met deze functies kunt u de gegevens verkennen en begrijpen.

Nu de kolom Datum is geselecteerd, bekijkt u het bericht in de statusbalk (in de linkerbenedenhoek). Hierin wordt beschreven hoeveel rijen in de tabel zijn opgeslagen en hoeveel afzonderlijke waarden de geselecteerde kolom bevat.

Wanneer er net zoveel tabelrijen als afzonderlijke waarden zijn, betekent dit dat de kolom unieke waarden bevat. Er zijn twee redenen waarom dit een belangrijke factor is: Het voldoet aan de vereisten om een datumtabel te markeren, en maakt mogelijk dat deze kolom in een modelrelatie wordt gebruikt als de één-zijde.

De berekende tabel Vervaldatum wordt telkens opnieuw berekend wanneer een tabel met een datumkolom wordt vernieuwd. Met andere woorden, wanneer een rij wordt geladen in de tabel Verkoop met een orderdatum van 1 juli 2022, wordt de tabel Vervaldatum automatisch uitgebreid met datums tot het einde van het volgende jaar: 30 juni 2023.

Voor de tabel Einddatum zijn extra kolommen vereist ter ondersteuning van de bekende vereisten voor filteren en groeperen, met name op jaar, kwartaal en maand.