Auswählen der Granularität für eine Spalte oder Tabelle basierend auf den Anforderungen

Abgeschlossen

Granularität ist eine der wichtigsten Entwurfsentscheidungen, die Sie beim Erstellen eines Datenmodells treffen. Sie definiert die Detailebene , die in Ihren Tabellen erfasst wird, und wirkt sich direkt auf Die Speicherkosten, die Abfrageleistung und die analytischen Fragen aus, die Sie beantworten können. Als Dateningenieur hilft Ihnen das Verständnis der Granularität beim Entwerfen von Tabellen, die geschäftsanforderungen erfüllen und gleichzeitig effiziente Vorgänge gewährleisten.

In dieser Einheit wird erläutert, was granularität im Kontext der dimensionalen Modellierung bedeutet und wie verschiedene Granularitätsoptionen basierend auf den Anforderungen Ihrer Organisation ausgewertet werden.

Grundlegendes zur Granularität

Granularität, manchmal als "Korn" bezeichnet, beschreibt die Detailebene, die jede Zeile in einer Tabelle darstellt. In einer Faktentabelle bestimmt die Granularität, welches Geschäftsereignis oder welche Messung in jeder Zeile erfasst wird. In einer Dimensionstabelle bestimmt das Korn, wie Entitäten dargestellt und versioniert werden.

Betrachten Sie ein IoT-Sensordatenszenario. Sie könnten Ihre Faktentabelle auf verschiedenen Granularitätsebenen entwerfen:

Diagramm, in dem erläutert wird, welche Granularität dargestellt wird.

  • Millisekunden-Granularität: Jede Zeile stellt einen einzelnen Sensorwert dar, der auf Millisekundenebene erfasst wird. Dadurch werden die detailliertesten Informationen erfasst, einschließlich präziser Zeitstempel, Sensorwerte und Geräte-IDs für jede Messung.

  • Sekundär aggregierte Granularität: Jede Zeile stellt den durchschnittlichen, minimalen oder maximalen Sensorwert für ein Gerät pro Sekunde dar. Einzelne Lesewerte werden in statistiken pro Sekunde zusammengefasst.

  • Minutengenaue Aggregierte Granularität: Jede Zeile stellt aggregierte Sensorstatistiken für ein Gerät während einer gesamten Minute dar. Dies bietet die geringsten Details, erfordert jedoch den geringsten Speicherplatz.

Das korn, das Sie auswählen, wirkt sich auf alles nach unten aus. Sobald Sie details durch Aggregation verlieren, können Sie es nicht wiederherstellen. Wenn in der minutenaggregierten Tabelle dargestellt wird, dass Sensor X während einer bestimmten Minute eine Durchschnittstemperatur von 75°C hatte, können Sie nicht ermitteln, welche Millisekunden Temperaturspitzen hatten oder den genauen Moment identifizieren, an dem eine Anomalie auftrat.

Bewerten von Faktoren, die Granularitätsentscheidungen beeinflussen

Die Auswahl der geeigneten Granularität erfordert einen Ausgleich mehrerer konkurrierender Bedenken. Die richtige Wahl hängt von Ihrem spezifischen Geschäftskontext und technischen Einschränkungen ab.

Geschäftsanforderungen bestimmen das Aggregationsintervall

Die analytischen Fragen, die Ihre Organisation beantworten muss, sollte der Hauptfaktor bei der Bestimmung der Granularität sein. Fragen Sie sich: Was ist die detaillierteste Analysestufe ?

Wenn Betriebsingenieure Geräteanomalien auf Millisekundenebene erkennen müssen, reicht das Aggregat pro Minute nicht aus. Wenn die Verwaltung nur Stundenauslastungszusammenfassungen nach Produktionslinie benötigt, verschwendet die Speicherung jedes Sensorwertes Ressourcen.

Betrachten Sie folgende Szenarios:

Geschäftsanforderung Minimale Granularität erforderlich
Erkennen von Geräteschwingungsstörungen in Echtzeit Millisekunden-Ereignisebene
Analysieren von Temperaturtrends für eine vorausschauende Wartung Zweite Aggregatebene
Überwachen von stündlichem Energieverbrauch pro Gerät Minuten-Aggregatebene
Tägliche Produktionsmetriken nach Anlage melden Stündliche Aggregat-Ebene

Abfragemuster beeinflussen die Leistung

Die Art und Weise, wie Benutzer Ihre Daten abfragen, beeinflusst die optimale Granularität. Wenn Abfragen in der Regel auf höhere Ebenen filtern und aggregieren, entsteht beim Speichern von übermäßig detaillierten Daten ein unnötiger Verarbeitungsaufwand. Jede Abfrage muss mehr Zeilen scannen und aggregieren, als nötig.

Gleichzeitig verhindert das Speichern von Daten mit zu grober Granularität, dass Benutzer einen Drilldown ausführen, um detaillierte Fragen zu beantworten. Das Auffinden des Gleichgewichts erfordert das Verständnis aktueller und erwarteter Abfragemuster.

Speicher- und Berechnungskosten sammeln sich an

Feinere Granularität bedeutet mehr Zeilen, wodurch die Speicherkosten erhöht werden. Außerdem erhöht sich die Berechnungskosten , da Abfragen mehr Daten verarbeiten müssen. Im Azure Databricks steigen diese Kosten im Laufe der Zeit an, da sich immer mehr historische Daten ansammeln.

Eine Fertigungsstätte mit Tausenden von Sensoren, die Lesewerte in Millisekundenintervallen erfassen, kann täglich Milliarden von Zeilen in der feinsten Granularität generieren. Durch das Aggregieren auf Sekunden- oder Minutenstatistiken kann die Anzahl der Zeilen um 99% oder mehr reduziert werden, was direkt in niedrigere Speicher- und Abfragekosten übersetzt wird.

Compliance- und Auditanforderungen sind wichtig

Regulatorische Anforderungen erfordern manchmal spezifische Granularitätsstufen. Finanzdienstleistungsorganisationen müssen häufig Details auf Transaktionsebene für Auditzwecke aufbewahren, unabhängig von den Speicherkosten. Organisationen im Gesundheitswesen müssen möglicherweise einzelne Patienteninteraktionen aus Compliancegründen nachverfolgen.

Wenn die Einhaltung Ihre Granularitätsentscheidung steuert, dokumentieren Sie die Anforderungen klar und deutlich. Diese Begründung hilft, wenn Projektbeteiligte fragen, warum Sie mehr Details speichern, als analytische Anforderungen allein erforderlich wären.

Granularität auf Faktentabellen anwenden

Faktentabellen profitieren am meisten von sorgfältigen Granularitätsentscheidungen, da sie in der Regel die größten Datenmengen enthalten. Das Korn einer Faktentabelle wird durch die Kombination ihrer Dimensionsschlüssel bestimmt.

Eine Umsatzfaktentabelle mit Dimensionsschlüsseln für Datum, Produkt, Kunde und Geschäft hat ein Aggregationsintervall von "eine Zeile pro Produkt pro Kunde pro Geschäft pro Tag" Jede individuelle Kombination dieser Dimensionswerte erzeugt eine eigene Zeile. Durch das Hinzufügen eines Zeitdimensionsschlüssels auf Stundenebene würde die Granularität in "eine Zeile pro Produkt pro Kunde pro Geschäft pro Stunde" geändert, was die Zeilenanzahl erheblich erhöht.

Tabelle, in der erläutert wird, wie eine Stundendimension zu einer Faktentabelle hinzugefügt wird, erhöht die Anzahl der Zeilen.

Von Bedeutung

Deklarieren Sie das Granularitätsniveau Ihrer Faktentabelle explizit, bevor Sie Spalten hinzufügen. Die Getreideerklärung dient als Vertrag, der alle nachfolgenden Designentscheidungen leitet. Beispiel: "Diese Faktentabelle enthält eine Zeile pro Auftragsposition".

Überlegen Sie beim Entwerfen von Faktentabellen, ob Sie Folgendes benötigen:

  • Atomkorn: Die detaillierteste Ebene, die im Quellsystem erfasst wurde. Die Auswahl von Atomkorn bietet maximale analytische Flexibilität , da Sie immer nach oben aggregieren, aber nie nach unten disaggregatieren können.

  • Aggregatkorn: Vorab zusammengefasste Daten auf einer höheren Ebene als die Quelle. Aggregierte Faktentabellen verbessern die Abfrageleistung für allgemeine analytische Muster, beschränken jedoch die Fragen, die Benutzer beantworten können.

Viele Organisationen verwalten sowohl atomische als auch aggregierte Faktentabellen, wobei aggregierte Tabellen als Leistungsoptimierung verwendet werden und gleichzeitig atomische Details für ad-hoc-Analysen beibehalten werden. In Azure Databricks können materialisierte Ansichten diese Aggregattabellen automatisch verwalten und aktualisieren, während sich die zugrunde liegenden Atomdaten ändern.

Anwenden der Granularität auf Dimensionstabellen

Dimensionstabellen haben auch eine Granularität, die jedoch anders funktioniert als die Granularität von Faktentabellen. Die Granularität bestimmt, wie Sie Ihre Geschäftseinheiten abbilden und versionieren.

Für eine Kundendimension können Sie Folgendes auswählen:

  • Eine Zeile pro Kunde: Der aktuelle Status der einzelnen Kunden, der beim Ändern von Attributen (SCD Type 1) aktualisiert wird.
  • Eine Zeile pro Kunde pro Version: Eine neue Zeile für jede signifikante Änderung, wobei historische Zustände beibehalten werden (SCD Type 2).
  • Eine Zeile pro Kunde pro Zeitraum: Regelmäßige Momentaufnahmen, die Kundenattribute in regelmäßigen Abständen erfassen.

Das von Ihnen gewählte Dimensions-Aggregationsintervall muss mit der Körnung Ihrer Faktentabelle übereinstimmen. Wenn Ihre Faktentabelle einzelne Transaktionen mit Ersatzschlüsseln zur Kundendimension verfolgt, muss Ihr Kundendimensions-Aggregationsintervall diese Beziehung unterstützen. Eine Transaktion, die auf Kundenversion 5 verweist, muss in der Lage sein, diese bestimmte Version in der Dimensionstabelle zu finden.

Abwägungen bei der Auswahl der Granularität

Keine einzelne Granularitätsauswahl ist universell richtig. Bei jeder Entscheidung handelt es sich um Kompromisse, die Sie anhand Ihrer spezifischen Anforderungen bewerten müssen.

Überlegung Feine Granularität Grobe Granularität
Analytische Flexibilität Hoch - kann detaillierte Fragen beantworten Niedrig – auf aggregierte Analyse beschränkt
Speicherkosten Höher – mehr Zeilen zum Speichern Niedriger - weniger Zeilen
Abfrageleistung Langsamer für aggregierte Abfragen Schneller für häufige Muster
Historische Analyse Unterstützt Zeitpunktanalyse Kann historische Details verlieren
Compliance-Unterstützung Besser für Überwachungsanforderungen Darf keine Vorschriften erfüllen

Wenn Sie unsicher sind, ist es oft sicherer, mit einer feineren Granularität zu beginnen . Sie können später immer aggregierte Tabellen für die Leistungsoptimierung erstellen, aber Sie können keine Details wiederherstellen , die nie erfasst wurden. In dieser Anleitung wird jedoch davon ausgegangen, dass Sie über das Budget und die Infrastruktur verfügen, um anfangs eine feinkörnigere Speicherung zu unterstützen.

Wenn Sie wissen, wie Sie die geeignete Granularität auswählen, können Sie Datenmodelle entwerfen, die die analytischen Anforderungen Ihrer Organisation unterstützen, während Sie die Kosten effektiv verwalten. Die Implementierungsdetails zum Erstellen und Laden von Tabellen in Ihrer ausgewählten Granularität in Azure Databricks werden in späteren Einheiten behandelt.