Nano Hash - криптовалюты, майнинг, программирование

SAS добавляет фильтр

Я пытаюсь получить количество строк для кратных таблиц, но только для последней даты. В приведенном ниже коде указано количество строк по таблице (без фильтра). Как я могу получить только количество записей для последней даты?

proc sql;
select cats("&libname..",memname)
   into :tables separated by ' '
   from dictionary.tables
   where libname=upcase("&libname.");
quit;

data counts;
set &tables. indsname=ds_name end=eof; 
retain count dataset_name;
if _n_=1 then count=0;
if ds_name ne lag(ds_name) and _n_ ne 1 then do;
   output;
   count=0;
end;
dataset_name=ds_name;
count = count+1;  
if eof then output;
keep count dataset_name;
run;
sas
21.09.2015

  • Является ли дата частью имени набора данных? Если да, укажите пример имени таблицы. 21.09.2015
  • Да, у меня около 40 таблиц, и в 20 из них есть столбец даты, поэтому я хочу применить фильтр к этим таблицам и ничего не делать для таблиц, у которых нет этого столбца. 21.09.2015
  • Хорошо, мы будем считать, что имена ваших таблиц разные. Как называется столбец даты? 21.09.2015
  • ДАТА - это имя столбца 21.09.2015

Ответы:


1

Обратите внимание, что приведенный ниже код работает как есть... не стесняйтесь копировать/вставлять и запускать его в своей системе, чтобы увидеть результаты.

Я бы начал с использования таблицы dictionary.columns, чтобы найти только те таблицы, которые вы ищете. Единственное поле, которое нам нужно сохранить в каждой таблице, — это поле date. Это необходимо, чтобы избежать каких-либо конфликтов (в случае, если одно и то же имя поля было определено как символьное и числовое в разных таблицах).

proc sql noprint;
  select distinct cats(libname,'.',memname,'(keep=date)')
  into :tables separated by ' '
  from dictionary.columns
  where libname eq "SASHELP"
    and upcase(name) eq "DATE"
  ;
quit;

%put &tables;

Дает:

SASHELP.AIR(сохранение=дата) SASHELP.BUY(сохранение=дата) SASHELP.CITIDAY(сохранение=дата) SASHELP.CITIMON(сохранение=дата) SASHELP.CITIQTR(сохранение=дата) SASHELP.CITIWK(сохранение=дата) SASHELP. CITIYR(хранить=дата) SASHELP.GNGSMP2(хранить=дата) SASHELP.GNP(хранить=дата) SASHELP.NVST1(хранить=дата) SASHELP.NVST2(хранить=дата) SASHELP.NVST3(хранить=дата) SASHELP.NVST4( сохранить=дата) SASHELP.NVST5(сохранить=дата) SASHELP.PRDSAL3(сохранить=дата) SASHELP.PRICEDATA(сохранить=дата) SASHELP.RENT(сохранить=дата) SASHELP.RETAIL(сохранить=дата) SASHELP.ROCKPIT(сохранить= дата) SASHELP.SNACKS(хранить=дата) SASHELP.STEEL(хранить=дата) SASHELP.STOCKS(хранить=дата) SASHELP.USECON(хранить=дата) SASHELP.WORKERS(хранить=дата)

Затем используйте представление, чтобы объединить все таблицы вместе. Я бы хотел пропустить этот шаг, но обнаружил, что это невозможно сделать и сразу использовать опции keep/by-group-processing/indsname. Если ваши таблицы небольшие, вы можете захотеть вывести только обычный набор данных, а не представление.

data tmp / view=tmp;
  set &tables indsname=ds_name; 
  dataset_name=ds_name;
run;

Используйте обработку by-group, чтобы отслеживать количество записей для последней даты в каждой таблице. Это предполагает, что последняя дата также является максимальной датой (вам может потребоваться проверить это в своих данных).

data want;
  set tmp; 
  by dataset_name ;

  retain count dataset_name;

  if first.dataset_name then do; 
    count=0;
  end;

  count = count+1;  

  if last.dataset_name then do;
     output;
  end;
  keep count date dataset_name;
run;

Окончательный вывод:

Obs DATE  dataset_name    count  
1   DEC60 SASHELP.AIR     144  
2   JAN06 SASHELP.BUY     11  
3   FEB92 SASHELP.CITIDAY 1069  
4   JAN92 SASHELP.CITIMON 145  etc...
21.09.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..