Der Umstieg von SAS© 9.4 auf SAS© Viya™ ist oft mit einer Lernkurve verbunden, was die Verwaltung von In-Memory-Daten betrifft. Eine häufige Verwirrung tritt beim Übergang von PROC SQL zu PROC FEDSQL auf, um mit Tabellen zu interagieren, die in CAS-Bibliotheken (CASLIBs) geladen sind.
Wenn Sie jemals auf den Fehler "BASE driver, schema name... was not found" gestoßen sind, erklärt dieser Artikel, warum dies geschieht und wie Sie Ihren Code korrigieren können.
Stellen Sie sich vor, Sie arbeiten in einer SAS© Viya™-Umgebung. Sie haben eine pfadbasierte CASLIB definiert und eine Tabelle in den Speicher geladen.
Hier ist die typische Konfiguration:
Definition der CASLIB und des Libref:
Laden der Daten in den Speicher (In-Memory):
Sie verwenden PROC CASUTIL, um eine Tabelle (z.B. test.sashdat) in den Speicher des CAS-Servers zu laden.
Bis hierher funktioniert alles. Die Tabelle ist im Speicher unter dem Namen mycas.test zugänglich.
Um eine Aggregation durchzuführen (wie ein GROUP BY), entscheiden Sie sich für die Verwendung von PROC FEDSQL, der Standard-SQL-Implementierung für die CAS-Engine.
Sie versuchen, den folgenden Code auszuführen:
An dieser Stelle gibt das System den blockierenden Fehler zurück:
Der Fehler liegt nicht an einem Konfigurationsproblem der Bibliothek oder einer fehlenden Datei. Er liegt an der Art und Weise, wie PROC FEDSQL mit dem CAS-Server kommuniziert.
Im Gegensatz zu einer klassischen SAS©-Prozedur, die lokal ausgeführt wird, muss PROC FEDSQL explizit wissen, in welcher CAS-Sitzung es arbeiten soll, um auf die In-Memory-Tabellen zuzugreifen. Wenn keine Sitzung referenziert wird, versucht die Prozedur, die Tabelle über die lokale Engine (BASE driver) zu finden, die das auf dem entfernten Server definierte Schema "MYCAS" nicht kennt.
Um dieses Problem zu beheben, müssen Sie zwei Dinge tun:
Sicherstellen, dass eine CAS-Sitzung aktiv ist.
PROC FEDSQL anweisen, diese Sitzung über die Option SESSREF zu verwenden.
Hier ist der korrigierte Code:
Wichtige Erkenntnisse
Das Hinzufügen der Option sessref=IhrSitzungsname ist unerlässlich, wenn Sie CAS-Tabellen direkt mit FedSQL bearbeiten. Dies schafft die notwendige Brücke zwischen Ihrem Code und den im Speicher des Viya™-Clusters befindlichen Daten.