SAS Data Conversion - PullRequest
       9

SAS Data Conversion

0 голосов
/ 26 февраля 2019

Может ли кто-нибудь помочь перевести этот код PROC SQL в шаг данных?Я надеюсь, что Шаг данных будет намного быстрее.Я сгенерировал этот код из SAS-EG, поэтому я еще недостаточно опытен.

Спасибо, Джефф

PROC SQL;
  CREATE TABLE WORK.'APPAREL NEWNESS 01'n AS 
  SELECT DISTINCT t2.outletfamily AS outletfamily, 
      t2.itemid, 
      t2.itemnumberunsuppressed AS itemnumber_unsuppressed, 
      t2.ppmonth, 
      /* Dollars */
        (SUM(t2.totalvalue)) FORMAT=DOLLAR20. AS Dollars, 
      /* Units */
        (SUM(t2.unitssold)) FORMAT=COMMA20. AS Units, 
      /* Proj Dollars */
        (SUM(t2.proj_totalvalue)) FORMAT=DOLLAR20. AS 'Proj Dollars'n, 
      /* Proj Units */
        (SUM(t2.proj_unitssold)) FORMAT=COMMA20. AS 'Proj Units'n
  FROM APLSWP.vw_aplmlwk_fact_nat_nc_uns t2
  GROUP BY t2.outletfamily,
           t2.itemid,
           t2.itemnumberunsuppressed,
           t2.ppmonth;
  QUIT;

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Я бы предложил вместо этого использовать PROC MEANS.Без примеров данных я не могу быть уверен, что это именно то, что вы ищете, но вы должны быть ближе:

  proc means data=APLSWP.vw_aplmlwk_fact_nat_nc_uns noprint nway;
  *CLASS = grouping variables;
  class outletfamily itemid itemnumberunsuppressed ppmonth;
  *VAR = list of variables to analyze (optional);
  var totalValue UnitSold Proj_Total_value proj_unitssold;
  *create output data set;
  output out=want 
    /*list of summary statistics to save*/
    sum(totalValue) = dollars 
    sum(UnitSold) = units 
    sum(Proj_Total_value) = 'Proj Dollars'n 
    sum(proj_unitssold) = 'Proj Units'n;
  run;
0 голосов
/ 26 февраля 2019
  • Функциональность GROUP BY и SUM доступна в proc summary или в режиме симлара, но гораздо богаче proc means.К сожалению, у меня нет лицензии SAS, поэтому я не могу предоставить вам код.Посмотрите на пример вашей проблемы, решенной в proc means здесь .
  • При использовании GROUP BY var1, var2, var3, var4 процедура выдает различные комбинации значений var1, var2, var3 и var4.Ключевое слово DISTINCT не является необходимым, хотя.
  • На производительность может влиять то, где находятся данные по сравнению с тем, где вы выполняете запрос.Если запрос находится во внешней базе данных (например, Oracle), вы можете воспользоваться так называемым «средством передачи».Это позволяет коду SAS работать непосредственно в БД и использовать его индексы, статистику и все функции БД, которые делают базы данных мощными.
...