


      THIS FILE NO LONGER NEEDED.
      ITS CONTENTS HAVE BEEN MOVED TO FUNCTIONS
      ~/git/orch/src/Discover_Weekly/supportFns/create_spotify_user_counts_table.r

      ie: 
        create_spotify_user_counts_table(colsToPull = c("isrc", "anonymized_uid", "source", "playlist_is_unknown", "playlist_uri"))
        create_spotify_user_counts_table(colsToPull = c("album_code", "isrc", "anonymized_uid", "source", "playlist_is_unknown", "playlist_uri"))







if (FALSE)
{
  ISRC_test <- c("TR0061500165", "QM6P41590607", "DED831500882")
  tbl.detailed_test <- paste0(tbl.detailed, "_test")
  sfPopulateTable(qry=makeQry(colsToPull="*", colsToAgg=NULL, tbl=tbl.detailed, schema=schema, isrc=ISRC_test, expand=FALSE, limit=NULL), tbl=tbl.detailed_test, schema=schema)


}

tbl_out <- "counts_by_isrc_source_playlist" %>% paste0("_TEST")

tbl_inner <- "TESTING_INNER_TABLE"

colsToPull <-  c("isrc", "anonymized_uid", "source", "playlist_is_unknown", "playlist_uri")
colsWithaggFunc <- c(date_first_streamed = "min(first_tmstamp::date)", date_last_streamed = "max(last_tmstamp::date)")
colsToAgg  <- c("streams")
aggFunc = "sum"
tbl_in <- tbl.detailed_test
schema <- schema

default_cum_user_count <- (-1234567890123456)

qry_inner <- makeQry(tbl=tbl_in, schema=schema, colsToPull=colsToPull, colsToAgg=colsToAgg, colsWithaggFunc=colsWithaggFunc, aggFunc=aggFunc, order=NULL, limit=NULL)

## combine the agg'd columns with colsToPull, but remove the "last streamed" column, the last_updated and, most importantly, the user
colsToPull.counts <- c(colsWithaggFunc, colsToPull) %>% colNamesFromVector() %>% setdiff(., c("date_last_streamed", "last_updated", "last_tmstamp", "anonymized_uid")) %>% tolower %>%
                      {setNames(obj=., nm=ifelse(. == "date_first_streamed", "date", .))} # %>% c(cumulative_new_users= default_cum_user_count)

## Each row is one user
colsWithaggFunc.counts <- c(new_users = "count(*)")

qry_outter <- makeQry(tbl=qry_inner, schema=NULL, colsToPull=colsToPull.counts, colsToAgg=colsToAgg, colsWithaggFunc=colsWithaggFunc.counts, aggFunc=aggFunc, order=colsToPull.counts, limit=NULL)

# sfPopulateTable(tbl=tbl_out, schema=schema, qry=qry_outter, over=TRUE)

---------------------------------

## Will agg the original columns, plus aggregate new_users
## Preface colsToAgg with T2, and colsToPull with T1
colsToAgg.cumsum  <- colsToAgg %>% c("new_users") %>% { setNames(obj=paste0("T2.", .), nm=paste0("cumulative_", colNamesFromVector(.))) }
colsToPull.cumsum <- c(colsToPull.counts, colsWithaggFunc.counts, colsToAgg) %>% colNamesFromVector # %>% paste0("T1.", .)
with.cumsum <- c(CTE_Counts=qry_outter)
ON_AND.cumsum <- ifelse (length(colsToAgg.cumsum) <= 1, "", {
  colsToPull.cumsum %>% setdiff("date") %>% sprintf("equal_null(T1.%s, T2.%1$s)", .) %>% paste(" AND ", .) %>% pasteC
})
join_statement.cumsum <- sprintf(" INNER JOIN %s T2 ON T1.date >= T2.date  %s", names(with.cumsum), ON_AND.cumsum)
tbl.cumsum <- c(T1=names(with.cumsum))

qry.cumsum <- makeQry(with=with.cumsum, tbl=tbl.cumsum, colsToPull=colsToPull.cumsum %>% paste0("T1.", .), colsToAgg=colsToAgg.cumsum, join=join_statement.cumsum, prependCols.with.tbl=FALSE, limit=NULL)



## EXAMPLE
##
#   ----------------------------------------------------------
#   
#   WITH unnamed_cte AS (
#      SELECT date_first_streamed AS date, isrc, source, playlist_is_unknown, playlist_uri
#           , SUM(streams) AS streams
#           , COUNT(*) AS new_users, seq8() AS row_number
#      FROM   
#      (
#         SELECT   isrc, anonymized_uid, source, playlist_is_unknown, playlist_uri
#           , SUM(streams) AS streams
#           , MIN(first_tmstamp::date) AS date_first_streamed
#           , MAX(last_tmstamp::date) AS date_last_streamed
#          FROM   spot_user_counts.user_minmax_timestamps_detailed_test
#         -- DEBUGGING
#          WHERE isrc = 'TR0061500165' AND first_tmstamp < '2015-08-30'
#          GROUP BY   1, 2, 3, 4, 5  
#      )
#      GROUP BY   1, 2, 3, 4, 5
#      ORDER BY   date,isrc,source,playlist_is_unknown,playlist_uri
#   )
#   
#   SELECT 
#       T1.date
#     ---------
#     , T1.isrc
#     , T1.source
#     , T1.playlist_is_unknown
#     , T1.playlist_uri
#     ---------
#     , T1.streams
#     , T1.new_users
#     , sum(T2.new_users) AS cusers
#     , sum(T2.streams) AS cstreams
#   FROM       unnamed_cte T1
#   FULL JOIN  unnamed_cte T2 
#   ON T1.date >= T2.date
#    AND equal_null(T1.isrc, T2.isrc)
#    AND equal_null(T1.source, T2.source)
#    AND equal_null(T1.playlist_is_unknown, T2.playlist_is_unknown)
#    AND equal_null(T1.playlist_uri, T2.playlist_uri)
#   WHERE T1.isrc = 'TR0061500165' AND T1.date < '2015-08-30'
#   GROUP BY T1.date, T1.isrc, T1.source, T1.playlist_is_unknown, T1.playlist_uri, T1.streams, T1.new_users
#   order by source asc, 1, 2, 3
#   ;
#   ----------------------------------------------------------
#   
