SAS Метаданные ШАГ ДАННЫХ Функции

Я хочу знать, почему metadata_getnatr функция используется с metadata_resolve функционировать, когда мы пытаемся прочитать метаданные через функции шага данных.

Например: в коде, который описан в ссылке

Воспроизводится здесь:

Пример 1. Использование URI объекта

data _null_;
    length id $20
       type $256;
    rc=metadata_resolve("omsobj:Machine?@Name='bluedog'",type,id);
    put rc=;
    put id=;
    put type=;
run;

Пример 2. Использование URI репозитория

data _null_;
    length id $20
       type $256
       attr $256
       value $256;

    rc=metadata_resolve("omsobj:RepositoryBase?@Name='myrepos'",type,id);

    put rc=;
    put id=;
    put type=;
    n=1;
    rc=1;
    do while(rc>=0);


rc=metadata_getnatr("omsobj:RepositoryBase?@Name='myrepos'",n,attr,value);
        if (rc>=0) then put attr=;
        if (rc>=0) then put value=;
        n=n+1;

    end;
run;
  • Почему они используют функцию getnatr?
  • Предоставляет ли metadata_resolve URI в качестве вывода или каков вывод?

Спасибо!

1 ответ

Я согласен - документация здесь может быть улучшена!

Первый пример вполне понятен - укажите URI (запрос метаданных) и верните тип и идентификатор, которые будут использоваться для дальнейшей логики / запросов.

Второй пример демонстрирует что-то вроде крайнего случая. Он использует пространство имен REPO (вместо обычного пространства имен SAS), чтобы вернуть объект, представляющий хранилище (например, FOUNDATION). Возможно, вы заметили, что вы не можете заменить URI идентификатором из оригинала metadata_resolve функция (которую вы ожидаете продемонстрировать в качестве примера). Согласно документации, подкласс RepositoryBase наследует свой идентификатор метаданных, поэтому это может указывать на то, почему на него нельзя ссылаться без использования URI.

В любом случае, чтобы уточнить использование metadata_resolve:

  • Не обязательно использовать его в сочетании с metadata_getnatr
  • Это полезно, когда вы хотите узнать тип метаданных, возвращаемых из URI
  • Это полезно, когда вы собираетесь использовать один и тот же URI в нескольких запросах (так эффективнее превратить его в идентификатор)

SAS будет кэшировать ваш запрос в одной и той же функции метаданных, поэтому, если вы не собираетесь использовать один и тот же URI в нескольких функциях метаданных, вам не нужно использовать metadata_resolve,

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