Ist es möglich, dass beim Erstellen einer Tabelle mit SAS proc sql eine Zeichenvariable mit 255 Zeichen abgeschnitten wird? Hat es mit dem Bibliotheksmaschinentyp zu tun?Zeichenlänge im Datenschritt versus proc sql
Ich bin ein PCFILES libname wie folgt aus (beachten Sie die dbmax_text Option):
libname mylib PCFILES PATH = "C:\path\to\my\32bit\MS Acccess.ACCDB" dbmax_text=4000;
Dann mache ich ein proc sql wie folgt aus:
proc sql noprint;
create table work.cbdata as
select
distinct var1,
var2,
...
from mylib.var2015
where
upcase(var1) = "DIQ"
order by var1
;
quit;
var2
wird bei 255 abgeschnitten immer noch obwohl das Format in der Spalteneigenschaftsansicht als $4000.
aufgeführt ist. Wenn ich als Daten Schritt tun dies, die alle die Zeichendaten kommt durch:
data vardb;
set mylib.var2015;
if var1 = "DIQ";
run;
Ich habe 40 bis 50 SQL-Prozeduren wie in meinem Makro-Bibliothek eingebettet dies, so würde ich es vorziehen, nicht alle Makros Refactoring Benutze Datenschritte (wenn das überhaupt möglich ist). Kennt jemand
a) wenn es eine Option in proc sql gibt, damit es den dbmax_text respektiert.
oder
b) eine Dokumentation darüber, wie SAS verarbeitet die Zeichenlängen in der Tabelle Aussagen von proc sql erstellen?
EDIT - Hinzufügen einiger Screenshots.
SAS denkt die Variablen 4000 Zeichen lang:
FORMAT und Variable LENGTH definieren nicht das gleiche Attribut, obwohl das eine das andere bedeuten kann. –
@data_null_ yep. Ich weiß alles darüber. Das ist etwas anderes. Die Länge und die Formate sagen beide 4000, aber die Zeichenketten selbst enden bei 255. Ich könnte vielleicht ein paar Screenshots machen, wenn das hilft? –
Führen Sie einen Test durch, bei dem Sie die Daten mithilfe der Daten var2015 in den sas-Datensatz einlesen. setze mylib.var2015; Lauf; Sehen Sie, ob das den VAR2 gibt, wie Sie denken, dass es sein sollte. –