Renames functions to expand abbreviations.
parent
76e415b658
commit
85cbd41e84
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 ]
|
||||||
|
|
Loading…
Reference in New Issue