Renames functions to expand abbreviations.

master
Abhinav Sarkar 2016-07-05 23:09:42 +05:30
parent 76e415b658
commit 85cbd41e84
No known key found for this signature in database
GPG Key ID: 7C9166A6F5465AD5
6 changed files with 72 additions and 72 deletions

View File

@ -58,29 +58,29 @@ writeFiles outputDir env = do
dimTables = [ (fact, extractDimensionTables env fact) | fact <- facts ] dimTables = [ (fact, extractDimensionTables env fact) | fact <- facts ]
factTables = [ (fact, extractFactTable env fact) | fact <- facts, factTablePersistent fact ] factTables = [ (fact, extractFactTable env fact) | fact <- facts, factTablePersistent fact ]
dimTableDefnSQLs = [ (Create, tableName table, unlines . map sqlStr $ dimensionTableDefnSQL env table) dimTableDefinitionSQLs = [ (Create, tableName table, unlines . map sqlStr $ dimensionTableDefinitionSQL env table)
| (_, tabs) <- dimTables | (_, tabs) <- dimTables
, table <- tabs , table <- tabs
, table `notElem` tables ] , table `notElem` tables ]
factTableDefnSQLs = [ (Create , tableName table, unlines . map sqlStr $ factTableDefnSQL env fact table) factTableDefinitionSQLs = [ (Create , tableName table, unlines . map sqlStr $ factTableDefinitionSQL env fact table)
| (fact, table) <- factTables ] | (fact, table) <- factTables ]
dimTablePopulateSQLs typ gen = dimTablePopulationSQLs typ gen =
[ (typ , tableName table, sqlStr $ gen env fact (tableName table)) [ (typ , tableName table, sqlStr $ gen env fact (tableName table))
| (fact, tabs) <- dimTables | (fact, tabs) <- dimTables
, table <- tabs , table <- tabs
, table `notElem` tables ] , table `notElem` tables ]
factTablePopulateSQLs typ gen = [ (typ, tableName table, unlines . map sqlStr $ gen env fact) factTablePopulationSQLs typ gen = [ (typ, tableName table, unlines . map sqlStr $ gen env fact)
| (fact, table) <- factTables ] | (fact, table) <- factTables ]
sqls = concat [ dimTableDefnSQLs sqls = concat [ dimTableDefinitionSQLs
, factTableDefnSQLs , factTableDefinitionSQLs
, dimTablePopulateSQLs FullRefresh $ dimensionTablePopulateSQL FullPopulation , dimTablePopulationSQLs FullRefresh $ dimensionTablePopulationSQL FullPopulation
, dimTablePopulateSQLs IncRefresh $ dimensionTablePopulateSQL IncrementalPopulation , dimTablePopulationSQLs IncRefresh $ dimensionTablePopulationSQL IncrementalPopulation
, factTablePopulateSQLs FullRefresh $ factTablePopulateSQL FullPopulation , factTablePopulationSQLs FullRefresh $ factTablePopulationSQL FullPopulation
, factTablePopulateSQLs IncRefresh $ factTablePopulateSQL IncrementalPopulation , factTablePopulationSQLs IncRefresh $ factTablePopulationSQL IncrementalPopulation
] ]
sqlStr = Text.unpack sqlStr = Text.unpack

View File

@ -9,10 +9,10 @@ module Ringo
, extractFactTable , extractFactTable
, extractDimensionTables , extractDimensionTables
, extractDependencies , extractDependencies
, dimensionTableDefnSQL , dimensionTableDefinitionSQL
, factTableDefnSQL , factTableDefinitionSQL
, dimensionTablePopulateSQL , dimensionTablePopulationSQL
, factTablePopulateSQL , factTablePopulationSQL
) where ) where
import Control.Monad.Reader (runReader) import Control.Monad.Reader (runReader)
@ -224,7 +224,7 @@ extractDependencies env = flip runReader env . E.extractDependencies
-- | -- |
-- --
-- >>> let dimTables = filter (`notElem` tables) . nub . concatMap (extractDimensionTables env) $ facts -- >>> let dimTables = filter (`notElem` tables) . nub . concatMap (extractDimensionTables env) $ facts
-- >>> let sqls = map (dimensionTableDefnSQL env) dimTables -- >>> let sqls = map (dimensionTableDefinitionSQL env) dimTables
-- >>> mapM_ (\sqls -> mapM_ (putStr . Text.unpack) sqls >> putStrLn "--------" ) sqls -- >>> mapM_ (\sqls -> mapM_ (putStr . Text.unpack) sqls >> putStrLn "--------" ) sqls
-- create table dim_geo ( -- create table dim_geo (
-- id serial not null, -- id serial not null,
@ -277,13 +277,13 @@ extractDependencies env = flip runReader env . E.extractDependencies
-- alter table dim_page_type add unique (page_type); -- alter table dim_page_type add unique (page_type);
-- <BLANKLINE> -- <BLANKLINE>
-- -------- -- --------
dimensionTableDefnSQL :: Env -> Table -> [Text] dimensionTableDefinitionSQL :: Env -> Table -> [Text]
dimensionTableDefnSQL env = flip runReader env . G.dimensionTableDefnSQL dimensionTableDefinitionSQL env = flip runReader env . G.dimensionTableDefinitionSQL
-- | -- |
-- --
-- >>> let storySessionFactTable = extractFactTable env sessionFact -- >>> let storySessionFactTable = extractFactTable env sessionFact
-- >>> let sqls = factTableDefnSQL env sessionFact storySessionFactTable -- >>> let sqls = factTableDefinitionSQL env sessionFact storySessionFactTable
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- create table fact_session_by_minute ( -- create table fact_session_by_minute (
-- created_at_minute_id bigint not null, -- created_at_minute_id bigint not null,
@ -308,7 +308,7 @@ dimensionTableDefnSQL env = flip runReader env . G.dimensionTableDefnSQL
-- create index on fact_session_by_minute (user_agent_id) -- create index on fact_session_by_minute (user_agent_id)
-- ; -- ;
-- >>> let pageViewFactTable = extractFactTable env pageViewFact -- >>> let pageViewFactTable = extractFactTable env pageViewFact
-- >>> let sqls = factTableDefnSQL env pageViewFact pageViewFactTable -- >>> let sqls = factTableDefinitionSQL env pageViewFact pageViewFactTable
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- create table fact_page_view_by_minute ( -- create table fact_page_view_by_minute (
-- created_at_minute_id bigint not null, -- created_at_minute_id bigint not null,
@ -340,13 +340,13 @@ dimensionTableDefnSQL env = flip runReader env . G.dimensionTableDefnSQL
-- ; -- ;
-- create index on fact_page_view_by_minute (user_agent_id) -- create index on fact_page_view_by_minute (user_agent_id)
-- ; -- ;
factTableDefnSQL :: Env -> Fact -> Table -> [Text] factTableDefinitionSQL :: Env -> Fact -> Table -> [Text]
factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact factTableDefinitionSQL env fact = flip runReader env . G.factTableDefinitionSQL fact
-- | -- |
-- --
-- >>> let storySessionDimTableNames = map tableName $ extractDimensionTables env sessionFact -- >>> let storySessionDimTableNames = map tableName $ extractDimensionTables env sessionFact
-- >>> let sqls = map (dimensionTablePopulateSQL FullPopulation env sessionFact) storySessionDimTableNames -- >>> let sqls = map (dimensionTablePopulationSQL FullPopulation env sessionFact) storySessionDimTableNames
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- insert into dim_geo (country_name, city_name, continent_name) -- insert into dim_geo (country_name, city_name, continent_name)
-- select distinct -- select distinct
@ -374,7 +374,7 @@ factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact
-- created_at < ? -- created_at < ?
-- ; -- ;
-- <BLANKLINE> -- <BLANKLINE>
-- >>> let sqls = map (dimensionTablePopulateSQL IncrementalPopulation env sessionFact) storySessionDimTableNames -- >>> let sqls = map (dimensionTablePopulationSQL IncrementalPopulation env sessionFact) storySessionDimTableNames
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- insert into dim_geo (country_name, city_name, continent_name) -- insert into dim_geo (country_name, city_name, continent_name)
-- select -- select
@ -435,7 +435,7 @@ factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact
-- ; -- ;
-- <BLANKLINE> -- <BLANKLINE>
-- >>> let pageViewDimTableNames = map tableName . filter (`notElem` tables) $ extractDimensionTables env pageViewFact -- >>> let pageViewDimTableNames = map tableName . filter (`notElem` tables) $ extractDimensionTables env pageViewFact
-- >>> let sqls = map (dimensionTablePopulateSQL FullPopulation env pageViewFact) pageViewDimTableNames -- >>> let sqls = map (dimensionTablePopulationSQL FullPopulation env pageViewFact) pageViewDimTableNames
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- insert into dim_page_type (page_type) -- insert into dim_page_type (page_type)
-- select distinct -- select distinct
@ -446,7 +446,7 @@ factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact
-- (page_type is not null) and created_at < ? -- (page_type is not null) and created_at < ?
-- ; -- ;
-- <BLANKLINE> -- <BLANKLINE>
-- >>> let sqls = map (dimensionTablePopulateSQL IncrementalPopulation env pageViewFact) pageViewDimTableNames -- >>> let sqls = map (dimensionTablePopulationSQL IncrementalPopulation env pageViewFact) pageViewDimTableNames
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- insert into dim_page_type (page_type) -- insert into dim_page_type (page_type)
-- select -- select
@ -467,13 +467,13 @@ factTableDefnSQL env fact = flip runReader env . G.factTableDefnSQL fact
-- dim_page_type.page_type is null -- dim_page_type.page_type is null
-- ; -- ;
-- <BLANKLINE> -- <BLANKLINE>
dimensionTablePopulateSQL :: TablePopulationMode -> Env -> Fact -> TableName -> Text dimensionTablePopulationSQL :: TablePopulationMode -> Env -> Fact -> TableName -> Text
dimensionTablePopulateSQL popMode env fact = dimensionTablePopulationSQL popMode env fact =
flip runReader env . G.dimensionTablePopulateSQL popMode fact flip runReader env . G.dimensionTablePopulationSQL popMode fact
-- | -- |
-- --
-- >>> let sqls = factTablePopulateSQL FullPopulation env sessionFact -- >>> let sqls = factTablePopulationSQL FullPopulation env sessionFact
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- insert into fact_session_by_minute (created_at_minute_id, -- insert into fact_session_by_minute (created_at_minute_id,
-- publisher_id, -- publisher_id,
@ -515,7 +515,7 @@ dimensionTablePopulateSQL popMode env fact =
-- xxff_user_agent_id -- xxff_user_agent_id
-- ; -- ;
-- <BLANKLINE> -- <BLANKLINE>
-- >>> let sqls = factTablePopulateSQL IncrementalPopulation env sessionFact -- >>> let sqls = factTablePopulationSQL IncrementalPopulation env sessionFact
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- insert into fact_session_by_minute (created_at_minute_id, -- insert into fact_session_by_minute (created_at_minute_id,
-- publisher_id, -- publisher_id,
@ -557,7 +557,7 @@ dimensionTablePopulateSQL popMode env fact =
-- xxff_user_agent_id -- xxff_user_agent_id
-- ; -- ;
-- <BLANKLINE> -- <BLANKLINE>
-- >>> let sqls = factTablePopulateSQL FullPopulation env pageViewFact -- >>> let sqls = factTablePopulationSQL FullPopulation env pageViewFact
-- >>> mapM_ (putStr . Text.unpack) sqls -- >>> mapM_ (putStr . Text.unpack) sqls
-- insert into fact_page_view_by_minute (created_at_minute_id, -- insert into fact_page_view_by_minute (created_at_minute_id,
-- publisher_id, -- publisher_id,
@ -615,6 +615,6 @@ dimensionTablePopulateSQL popMode env fact =
-- xxff_user_agent_id -- xxff_user_agent_id
-- ; -- ;
-- <BLANKLINE> -- <BLANKLINE>
factTablePopulateSQL :: TablePopulationMode -> Env -> Fact -> [Text] factTablePopulationSQL :: TablePopulationMode -> Env -> Fact -> [Text]
factTablePopulateSQL popMode env = factTablePopulationSQL popMode env =
flip runReader env . G.factTablePopulateSQL popMode flip runReader env . G.factTablePopulationSQL popMode

View File

@ -1,8 +1,8 @@
module Ringo.Generator module Ringo.Generator
( dimensionTableDefnSQL ( dimensionTableDefinitionSQL
, factTableDefnSQL , factTableDefinitionSQL
, dimensionTablePopulateSQL , dimensionTablePopulationSQL
, factTablePopulateSQL , factTablePopulationSQL
) where ) where
import Ringo.Generator.Create import Ringo.Generator.Create

View File

@ -3,7 +3,7 @@
{-# LANGUAGE GADTs #-} {-# LANGUAGE GADTs #-}
{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE NoImplicitPrelude #-}
module Ringo.Generator.Create (dimensionTableDefnSQL, factTableDefnSQL) where module Ringo.Generator.Create (dimensionTableDefinitionSQL, factTableDefinitionSQL) where
import Prelude.Compat import Prelude.Compat
import Control.Monad.Reader (Reader, asks) import Control.Monad.Reader (Reader, asks)
@ -19,8 +19,8 @@ import Ringo.Generator.Sql
import Ringo.Types.Internal import Ringo.Types.Internal
import Ringo.Utils import Ringo.Utils
tableDefnStmts :: Table -> Reader Env [Statement] tableDefinitionStatements :: Table -> Reader Env [Statement]
tableDefnStmts Table {..} = do tableDefinitionStatements Table {..} = do
Settings {..} <- asks envSettings Settings {..} <- asks envSettings
let tabName = tableName <> settingTableNameSuffixTemplate let tabName = tableName <> settingTableNameSuffixTemplate
@ -44,17 +44,17 @@ tableDefnStmts Table {..} = do
return $ tableSQL : map constraintDefnSQL tableConstraints return $ tableSQL : map constraintDefnSQL tableConstraints
tableDefnSQL :: Table -> (Table -> Reader Env [Statement]) -> Reader Env [Text] tableDefinitionSQL :: Table -> (Table -> Reader Env [Statement]) -> Reader Env [Text]
tableDefnSQL table indexFn = do tableDefinitionSQL table indexFn = do
ds <- map ppStatement <$> tableDefnStmts table ds <- map ppStatement <$> tableDefinitionStatements table
is <- map (\st -> ppStatement st <> ";\n") <$> indexFn table is <- map (\st -> ppStatement st <> ";\n") <$> indexFn table
return $ ds ++ is return $ ds ++ is
dimensionTableDefnSQL :: Table -> Reader Env [Text] dimensionTableDefinitionSQL :: Table -> Reader Env [Text]
dimensionTableDefnSQL table = tableDefnSQL table dimensionTableIndexStmts dimensionTableDefinitionSQL table = tableDefinitionSQL table dimensionTableIndexStatements
dimensionTableIndexStmts :: Table -> Reader Env [Statement] dimensionTableIndexStatements :: Table -> Reader Env [Statement]
dimensionTableIndexStmts Table {..} = do dimensionTableIndexStatements Table {..} = do
Settings {..} <- asks envSettings Settings {..} <- asks envSettings
let tabName = tableName <> settingTableNameSuffixTemplate let tabName = tableName <> settingTableNameSuffixTemplate
tablePKColName = head [ cName | PrimaryKey cName <- tableConstraints ] tablePKColName = head [ cName | PrimaryKey cName <- tableConstraints ]
@ -63,11 +63,11 @@ dimensionTableIndexStmts Table {..} = do
return [ CreateIndexTSQL ea (nmc "") (name tabName) [nmc cName] return [ CreateIndexTSQL ea (nmc "") (name tabName) [nmc cName]
| cName <- nonPKColNames, length nonPKColNames > 1 ] | cName <- nonPKColNames, length nonPKColNames > 1 ]
factTableDefnSQL :: Fact -> Table -> Reader Env [Text] factTableDefinitionSQL :: Fact -> Table -> Reader Env [Text]
factTableDefnSQL fact table = tableDefnSQL table (factTableIndexStmts fact) factTableDefinitionSQL fact table = tableDefinitionSQL table (factTableIndexStatements fact)
factTableIndexStmts :: Fact -> Table -> Reader Env [Statement] factTableIndexStatements :: Fact -> Table -> Reader Env [Statement]
factTableIndexStmts fact table = do factTableIndexStatements fact table = do
allDims <- extractAllDimensionTables fact allDims <- extractAllDimensionTables fact
Settings {..} <- asks envSettings Settings {..} <- asks envSettings
tables <- asks envTables tables <- asks envTables

View File

@ -3,7 +3,7 @@
{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE GADTs #-} {-# LANGUAGE GADTs #-}
module Ringo.Generator.Populate.Dimension (dimensionTablePopulateSQL) where module Ringo.Generator.Populate.Dimension (dimensionTablePopulationSQL) where
import Prelude.Compat import Prelude.Compat
import Control.Monad.Reader (Reader, asks) import Control.Monad.Reader (Reader, asks)
@ -16,12 +16,12 @@ import Ringo.Generator.Internal
import Ringo.Generator.Sql import Ringo.Generator.Sql
import Ringo.Types.Internal import Ringo.Types.Internal
dimensionTablePopulateSQL :: TablePopulationMode -> Fact -> TableName -> Reader Env Text dimensionTablePopulationSQL :: TablePopulationMode -> Fact -> TableName -> Reader Env Text
dimensionTablePopulateSQL popMode fact dimTableName = dimensionTablePopulationSQL popMode fact dimTableName =
ppStatement <$> dimensionTablePopulateStmt popMode fact dimTableName ppStatement <$> dimensionTablePopulationStatement popMode fact dimTableName
dimensionTablePopulateStmt :: TablePopulationMode -> Fact -> TableName -> Reader Env Statement dimensionTablePopulationStatement :: TablePopulationMode -> Fact -> TableName -> Reader Env Statement
dimensionTablePopulateStmt popMode fact dimTableName = do dimensionTablePopulationStatement popMode fact dimTableName = do
Settings {..} <- asks envSettings Settings {..} <- asks envSettings
tables <- asks envTables tables <- asks envTables
defaults <- asks envTypeDefaults defaults <- asks envTypeDefaults

View File

@ -6,7 +6,7 @@
{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE GADTs #-} {-# LANGUAGE GADTs #-}
module Ringo.Generator.Populate.Fact (factTablePopulateSQL) where module Ringo.Generator.Populate.Fact (factTablePopulationSQL) where
import qualified Data.Text as Text import qualified Data.Text as Text
@ -52,8 +52,8 @@ $$
LANGUAGE 'plpgsql' IMMUTABLE; LANGUAGE 'plpgsql' IMMUTABLE;
|] |]
factCountDistinctUpdateStmts :: TablePopulationMode -> Fact -> Text -> QueryExpr -> Reader Env [Statement] factCountDistinctUpdateStatements :: TablePopulationMode -> Fact -> Text -> QueryExpr -> Reader Env [Statement]
factCountDistinctUpdateStmts popMode fact groupByColPrefix expr = case expr of factCountDistinctUpdateStatements popMode fact groupByColPrefix expr = case expr of
Select {selSelectList = SelectList _ origSelectItems, ..} -> do Select {selSelectList = SelectList _ origSelectItems, ..} -> do
Settings {..} <- asks envSettings Settings {..} <- asks envSettings
tables <- asks envTables tables <- asks envTables
@ -119,8 +119,8 @@ factCountDistinctUpdateStmts popMode fact groupByColPrefix expr = case expr of
let power :: Double = fromIntegral (ceiling . logBase 2 $ (1.04 / errorRate) ** 2 :: Integer) let power :: Double = fromIntegral (ceiling . logBase 2 $ (1.04 / errorRate) ** 2 :: Integer)
in ceiling $ 2 ** power in ceiling $ 2 ** power
factTablePopulateStmts :: TablePopulationMode -> Fact -> Reader Env [Statement] factTablePopulationStatements :: TablePopulationMode -> Fact -> Reader Env [Statement]
factTablePopulateStmts popMode fact = do factTablePopulationStatements popMode fact = do
allDims <- extractAllDimensionTables fact allDims <- extractAllDimensionTables fact
Settings {..} <- asks envSettings Settings {..} <- asks envSettings
tables <- asks envTables tables <- asks envTables
@ -212,7 +212,7 @@ factTablePopulateStmts popMode fact = do
insertIntoStmt = insert extFactTableName (map fst3 colMap) populateSelectExpr insertIntoStmt = insert extFactTableName (map fst3 colMap) populateSelectExpr
updateStmts <- factCountDistinctUpdateStmts popMode fact groupByColPrefix populateSelectExpr updateStmts <- factCountDistinctUpdateStatements popMode fact groupByColPrefix populateSelectExpr
return $ insertIntoStmt : updateStmts return $ insertIntoStmt : updateStmts
where where
groupByColPrefix = "xxff_" groupByColPrefix = "xxff_"
@ -223,9 +223,9 @@ factTablePopulateStmts popMode fact = do
<$> listToMaybe [ colPairs | ForeignKey tName colPairs <- tableConstraints table <$> listToMaybe [ colPairs | ForeignKey tName colPairs <- tableConstraints table
, tName == oTableName ] , tName == oTableName ]
factTablePopulateSQL :: TablePopulationMode -> Fact -> Reader Env [Text] factTablePopulationSQL :: TablePopulationMode -> Fact -> Reader Env [Text]
factTablePopulateSQL popMode fact = do factTablePopulationSQL popMode fact = do
stmts <- factTablePopulateStmts popMode fact stmts <- factTablePopulationStatements popMode fact
return $ case stmts of return $ case stmts of
[] -> [] [] -> []
[i] -> [ ppStatement i ] [i] -> [ ppStatement i ]