BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
en-trust
Calcite | Level 5

Hallo.

Wir haben verschiedene SAS Mappingtabellen, welche monatlich über das ExcelAddIn aktualisiert werden und im Nachhinein diese per drop gelöscht und wieder leer neu angelegt.

Nun möchten wir das droppen aber vermeiden und wirklich nur die Inhalte komplett löschen, so dass die Tabelle in Ihrer Struktur und Satzzahl gleichbleibt. Lediglich die Feldinhalten müssen gesäubert werden.

Zudem weis ich natürlich nicht welche Spalten wir da so haben, sprich dass Ganze muss flexibel sein.

 

1 ACCEPTED SOLUTION

Accepted Solutions
FreelanceReinh
Jade | Level 19

Würde das nicht funktionieren?

data lib.tabelle;
modify lib.tabelle;
call missing(of _all_);
run;

Auch hier bleibt das Erzeugungsdatum unverändert, aber man braucht die Variablennamen nicht zu kennen.

 

View solution in original post

7 REPLIES 7
andreas_lds
Jade | Level 19

@community_moderator Please move the thread to CoDE subforum (https://communities.sas.com/t5/CoDe-SAS-German/gp-p/code_sas).

 

Was spricht gegen delete und insert?

en-trust
Calcite | Level 5

Delete löscht die Zeilen physisch und das möchte ich auchgrund einer anderen Aktion vermeiden.

Wie verschiebe ich den Threat ?

Kurt_Bremser
Super User

Welchen Informationsgehalt hat eine Tabelle mit X Spalten und Y Zeilen, wenn alle Werte MISSING sind?

Ein leeres Gerüst mit X Spalten und 0 Zeilen, und der anderweitig gespeicherten Info über die vorherige Zeilenzahl tuts doch auch?

 

en-trust
Calcite | Level 5

Wollte jetzt keine Diskussion über den Sinn anfangen, aber ich erkläre den Grund dennoch.

Wir legen eine Tabelle für den Fachbereich mit x Zeilen an, damit dieser jene dann mit Werten befüllt, welche wir dann entsprechend verarbeiten. Nach der Verarbeitung wird eine neue Tabelle hingestellt (drop und create), damit der geneigte User diese nur noch befüllen muss. Jetzt haben wir den sog. audit trail eingeführt, der alle Aktionen an der Tabelle mitloggt. Wir die Tabelle aber mit drop gelöscht, wird auch das audit file gelöscht. Dies umgeht mann, indem die Tabelle geleert wird.

Natürlich könnte ich dies mittels delete und insert tun, aber damit hätte ich 2 Aktionen, welche mitgeloggt werden, doiese aber eigentlich unsinnig sind.

Daher die Frage, eine Tabelle mit x Zeilen einfach zu säubern.

 

Kurt_Bremser
Super User

Wenn alle Variablen bekannt sind, dann könnte

proc sql;
update bibl.tabelle
set
  var1 = ' ',
  var2 = 0,
  varx = irgendwas
;
quit; 

funktionieren. Zumindest ändert sich dabei in dictionary.tables das "Date Created" nicht.

Abgesehen davon kann man die Variablen auch vorher aus dictionary.columns ermitteln und dann den SQL per macro dynamisch gestalten.

en-trust
Calcite | Level 5

Na ich merke schon, es wird wohl nicht ohne proc contents & Co. funktionieren. Hatte eher gehofft andere haben auch das Problem oder es gibt eine SAS Funktion.

FreelanceReinh
Jade | Level 19

Würde das nicht funktionieren?

data lib.tabelle;
modify lib.tabelle;
call missing(of _all_);
run;

Auch hier bleibt das Erzeugungsdatum unverändert, aber man braucht die Variablennamen nicht zu kennen.

 

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 7 replies
  • 1822 views
  • 2 likes
  • 4 in conversation