Функция SAS VARTYPE: запустите ее (или аналогичную) для всех переменных

Я администратор БД с нулевым опытом работы с SAS, я работаю в правительстве, и мне было поручено получать выходные данные SAS от другой команды. Другая команда, по-видимому, имеет ограниченный опыт работы с SAS и не может ответить на вопрос «каков тип данных каждой переменной SAS». У нас есть десятки таблиц и тысячи переменных для импорта. Есть ли способ запустить функцию SAS «VarType» для всех столбцов?

Я не нашел то, что мне нужно, в документах SAS, поиске SO и т. д.

Я ожидаю код, который я могу передать другой команде, которую они будут запускать для создания следующего (только с жестким кодированием «набора данных»; без жестко закодированных имен таблиц/имен переменных):

ИмяТаблицы ИмяПеременной Тип данных DataLength и/или другие атрибуты по мере необходимости Моя таблица 1 Столбец1 уголь 25 Моя таблица 1 Кол2 числовой шкала 10 точность 2 Моя таблица 2 Кол1 (маленький? большой? 32? ) int байты? или что-то, что говорит мне о максимальной дальности ... МояТаблица102 Столбец100 дата гггг-мм-дд

Обновление: вот что я использовал на основе принятого ответа. Вы бы изменили:

  • library=SASHELP на library=YourLibrary, чтобы изменить очищаемый набор данных
  • out=yourDataset.sasSchemaDump замените yourDataset целевым набором данных, в котором будет создана/заполнена новая таблица с именем sasSchemaDump. Переименуйте sasSchemaDump в желаемое имя таблицы.
proc datasets library=SASHELP  memtype=data;
    contents data=_ALL_ (read=green) out=yourDataset.sasSchemaDump;
    title  'SAS Schema Dump';
    run;

Также есть словарные таблицы с некоторой документацией, Dictionary.table Dictionary.column sascrunch.com/dictionary-tables

Reeza 07.02.2023 17:20
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
0
1
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Запустите PROC CONTENTS для набора данных, и вы получите необходимую информацию.

SAS имеет только два ТИПА данных. Строки символов фиксированной длины и числа с плавающей запятой. LENGTH — это количество байтов, хранящихся в наборе данных. Таким образом, для символьных переменных длина определяет, сколько символов она может хранить (при условии, что вы используете однобайтовую кодировку). Для хранения чисел с плавающей запятой требуется 8 байтов, но вы можете хранить их с меньшим количеством байтов в наборе данных, если не возражаете против потери точности. Например, если вы знаете, что значения являются целыми числами, вы можете сохранить только 4 байта.

Иногда вы можете сообщить больше информации о переменной, если создатель прикрепит постоянный ФОРМАТ для управления отображением переменной. Например, SAS хранит значения DATE как количество дней с 1960 года. Поэтому, чтобы сделать эти числа значимыми для людей, вам нужно прикрепить такой формат, как DATE9. или ГГММДД10. так что числа печатаются как строки, которые человек увидит как дату. Точно так же существуют форматы отображения для отображения значения времени суток (количество секунд с полуночи) или значений даты и времени (количество секунд с 1960 года). Кроме того, если они прикрепили формат, который не отображает десятичные разряды, это может означать, что значения должны быть целыми числами.

И если бы они прикрепили к переменной МЕТКУ, это могло бы объяснить больше о переменной, чем вы можете узнать из одного только имени.

Они также могут прикреплять к переменной пользовательские форматы. Это могут быть простые поиски кода/декодирования, но они также могут быть и более сложными. Общий сложный используется для свертывания диапазона (или нескольких значений и/или диапазонов) в одно декодирование. Определение пользовательского формата хранится в отдельном файле, называемом каталогом, в частности каталогом форматов. Вы можете использовать PROC FORMAT с опцией FMTLIB или CNTLOUT=, чтобы увидеть определение пользовательских форматов.

Ответ принят как подходящий

Для этого существует специальная процедура SAS: СОДЕРЖАНИЕ PROC

proc contents data=sashelp.cars out=want; run;

Он создаст таблицу SAS want со всей необходимой информацией.

К вашему сведению: ТИП 1 — числовой, ТИП 2 — символьный.

Если все таблицы находятся в одной библиотеке, вы можете сделать следующее, чтобы просмотреть все таблицы в библиотеке.

proc contents data=sashelp._all_ out=want; run;

Спасибо! cars - это всего лишь одна таблица, верно? есть ли способ циклически перемещать содержимое proc по всем таблицам (без их перечисления)?

spioter 07.02.2023 16:24

Вы можете использовать ALL для обработки всех наборов данных в библиотеке. данные = sashelp._ALL_;

data _null_ 07.02.2023 16:47

библиотека наборов данных proc = SASHELP memtype = data; содержимое data=_ALL_ (read=green) out=yourDataset.NewTable_procDatasets; title «Содержание набора данных GROUP»; бегать;

spioter 08.02.2023 16:53

Другие вопросы по теме