Bei der Erstellung von zusammenfassenden Berichten mit SAS© (sei es über SAS© Data Integration Studio oder in Base SAS©-Code) ist die Prozedur PROC TABULATE ein leistungsstarkes Werkzeug. Es kommt jedoch häufig vor, dass beim Absenden des Jobs eine blockierende Fehlermeldung auftritt, die etwa so aussieht:
Der erste Reflex ist oft, an einen Softwarefehler oder einen fehlenden Hotfix zu denken. In der großen Mehrheit der Fälle handelt es sich jedoch um ein grundlegendes Syntaxproblem, das mit der Logik von PROC TABULATE zusammenhängt.
Die goldene Regel: CLASS vs. VAR
Um den Fehler zu verstehen, muss man verstehen, wie SAS© die Daten in dieser Prozedur verarbeitet. Im Gegensatz zu anderen Prozeduren verlangt PROC TABULATE, dass jede in der TABLE-Anweisung erwähnte Variable vorab definiert wird.
SAS© muss wissen, wie die Variable zu behandeln ist:
Handelt es sich um eine Klassifikationsvariable, die Zeilen oder Spalten erstellen wird?
Handelt es sich um eine numerische Variable, für die Statistiken (Summen, Mittelwerte) berechnet werden?
Wenn eine Variable in der TABLE-Anweisung erscheint, ohne deklariert worden zu sein, kennt SAS© ihren Verwendungstyp nicht, daher der Fehler "unknown".
Um dieses Problem zu beheben, müssen Sie die Verwendung Ihrer Variablen mit den Anweisungen CLASS und VAR definieren.
Die CLASS-Anweisung: Verwenden Sie sie für kategoriale Variablen (z.B. Abteilung, Kursname, Sektion). Dies sind die Variablen, die die "Buckets" oder Gruppierungen erstellen.
Die VAR-Anweisung: Verwenden Sie sie für Analysevariablen (z.B. Gesamtkosten, Gehalt). Dies sind die Variablen, mit denen die Berechnungen durchgeführt werden.
Konkretes Beispiel
Stellen Sie sich vor, Sie möchten eine Kreuztabelle erstellen, die den Kursnamen mit der Abteilung, der Sektion und den Gesamtkosten kreuzt.
Der falsche Code (der den Fehler erzeugt):
Der korrigierte Code:
Hier definieren wir course_name, department und section als Klassifikationsvariablen und tot_cost als die zu analysierende Variable.
Bevor Sie den technischen Support kontaktieren oder nach einem Software-Patch suchen, überprüfen Sie immer Ihre Syntax. Wenn Sie eine Variable in der Struktur Ihrer Tabelle (TABLE) verwenden, stellen Sie sicher, dass sie entweder in der CLASS-Anweisung oder in der VAR-Anweisung aufgeführt ist.