Adds source column to count and count distinct fact columns.

Also removes CountDistinctColumSuffix setting.
pull/1/head
Abhinav Sarkar 2015-12-21 22:19:54 +05:30
parent d1e1eb7676
commit 2dcbe4efd7
5 changed files with 31 additions and 35 deletions

View File

@ -40,9 +40,6 @@ settingsParser = let Settings {..} = defSettings
<*> minorOption "avg-sum-col-suffix"
settingAvgSumColumnSuffix
"Suffix for average sum columns"
<*> minorOption "count-distinct-col-suffix"
settingCountDistinctColumSuffix
"Suffix for count distinct bucket columns"
<*> minorOption "dim-id-col-name"
settingDimTableIdColumnName
"Name of dimension table id columns"

View File

@ -54,10 +54,10 @@ instance FromJSON FactColumn where
"nodimid" -> NoDimId <$> o .: "column"
"dimid" -> DimId <$> o .: "table" <*> o .: "column"
"dimval" -> DimVal <$> o .: "table" <*> o .: "column"
"factcount" -> FactCount <$> o .: "column"
"factcount" -> FactCount <$> o .:? "sourcecolumn" <*> o .: "column"
"factsum" -> FactSum <$> o .: "sourcecolumn" <*> o .: "column"
"factaverage" -> FactAverage <$> o .: "sourcecolumn" <*> o .: "column"
"factcountdistinct" -> FactCountDistinct <$> o .: "column"
"factcountdistinct" -> FactCountDistinct <$> o .:? "sourcecolumn" <*> o .: "column"
_ -> fail $ "Invalid fact column type: " ++ cType
parseJSON o = fail $ "Cannot parse fact column: " ++ show o

View File

@ -32,14 +32,13 @@ extractFactTable fact = do
DimTime cName ->
[ Column (timeUnitColumnName dimIdColName cName settingTimeUnit) "integer" NotNull ]
NoDimId cName -> [ fromJust . findColumn cName . tableColumns $ table]
FactCount cName -> [ Column cName countColType NotNull ]
FactCount _ cName -> [ Column cName countColType NotNull ]
FactSum scName cName -> [ Column cName (sourceColumnType scName) NotNull ]
FactAverage scName cName ->
[ Column (cName <> settingAvgCountColumSuffix) countColType NotNull
, Column (cName <> settingAvgSumColumnSuffix) (sourceColumnType scName) NotNull
]
FactCountDistinct cName ->
[ Column (cName <> settingCountDistinctColumSuffix) (countColType <> "[]") NotNull ]
FactCountDistinct _ cName -> [ Column cName (countColType <> "[]") NotNull ]
_ -> []
fks = for allDims $ \(fact', tab@Table {..}) ->

View File

@ -140,8 +140,10 @@ factTablePopulateSQL popMode fact = do
factColMap = concatFor (factColumns fact) $ \col -> case col of
DimTime cName -> [ timeUnitColumnInsertSQL cName ]
NoDimId cName -> [ (cName, fullColName fTableName cName, True) ]
FactCount cName -> [ (cName, "count(*)", False) ]
FactSum scName cName -> [ (cName, "sum(" <> fullColName fTableName scName <> ")", False) ]
FactCount scName cName ->
[ (cName, "count(" <> maybe "*" (fullColName fTableName) scName <> ")", False) ]
FactSum scName cName ->
[ (cName, "sum(" <> fullColName fTableName scName <> ")", False) ]
FactAverage scName cName ->
[ ( cName <> settingAvgCountColumSuffix
, "count(" <> fullColName fTableName scName <> ")"

View File

@ -52,10 +52,10 @@ data FactColumn = DimTime !ColumnName
| NoDimId !ColumnName
| DimId !TableName !ColumnName
| DimVal !TableName !ColumnName
| FactCount !ColumnName
| FactCount !(Maybe ColumnName) !ColumnName
| FactSum !ColumnName !ColumnName
| FactAverage !ColumnName !ColumnName
| FactCountDistinct !ColumnName
| FactCountDistinct !(Maybe ColumnName) !ColumnName
deriving (Eq, Show)
factColumnName :: FactColumn -> Maybe ColumnName
@ -63,10 +63,10 @@ factColumnName (DimTime cName) = Just cName
factColumnName (NoDimId cName) = Just cName
factColumnName (DimId _ cName) = Just cName
factColumnName (DimVal _ cName) = Just cName
factColumnName (FactCount _) = Nothing
factColumnName (FactCount cName _) = cName
factColumnName (FactSum cName _) = Just cName
factColumnName (FactAverage cName _) = Just cName
factColumnName (FactCountDistinct _) = Nothing
factColumnName (FactCountDistinct cName _) = cName
data Settings = Settings
{ settingDimPrefix :: !Text
@ -74,7 +74,6 @@ data Settings = Settings
, settingTimeUnit :: !TimeUnit
, settingAvgCountColumSuffix :: !Text
, settingAvgSumColumnSuffix :: !Text
, settingCountDistinctColumSuffix :: !Text
, settingDimTableIdColumnName :: !Text
, settingDimTableIdColumnType :: !Text
, settingFactCountColumnType :: !Text
@ -91,7 +90,6 @@ defSettings = Settings
, settingTimeUnit = Minute
, settingAvgCountColumSuffix = "_count"
, settingAvgSumColumnSuffix = "_sum"
, settingCountDistinctColumSuffix = "_hll"
, settingDimTableIdColumnName = "id"
, settingDimTableIdColumnType = "serial"
, settingFactCountColumnType = "integer"