DATA Step, Macro, Functions and more

Inhalt einer Tabelle komplett löschen

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 6
Accepted Solution

Inhalt einer Tabelle komplett löschen

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.

 


Accepted Solutions
Solution
‎03-18-2016 07:34 AM
Trusted Advisor
Posts: 1,115

Re: Inhalt einer Tabelle komplett löschen

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


All Replies
Super Contributor
Posts: 259

Betreff: Inhalt einer Tabelle komplett löschen

@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?

Occasional Contributor
Posts: 6

Betreff: Inhalt einer Tabelle komplett löschen

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

Wie verschiebe ich den Threat ?

Super User
Posts: 6,938

Re: Inhalt einer Tabelle komplett löschen

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?

 

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Occasional Contributor
Posts: 6

Re: Inhalt einer Tabelle komplett löschen

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.

 

Super User
Posts: 6,938

Re: Inhalt einer Tabelle komplett löschen

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.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Occasional Contributor
Posts: 6

Re: Inhalt einer Tabelle komplett löschen

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.

Solution
‎03-18-2016 07:34 AM
Trusted Advisor
Posts: 1,115

Re: Inhalt einer Tabelle komplett löschen

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.

 

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

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