Adds source column to count and count distinct fact columns.
Also removes CountDistinctColumSuffix setting.
This commit is contained in:
parent
d1e1eb7676
commit
2dcbe4efd7
@ -40,9 +40,6 @@ settingsParser = let Settings {..} = defSettings
|
|||||||
<*> minorOption "avg-sum-col-suffix"
|
<*> minorOption "avg-sum-col-suffix"
|
||||||
settingAvgSumColumnSuffix
|
settingAvgSumColumnSuffix
|
||||||
"Suffix for average sum columns"
|
"Suffix for average sum columns"
|
||||||
<*> minorOption "count-distinct-col-suffix"
|
|
||||||
settingCountDistinctColumSuffix
|
|
||||||
"Suffix for count distinct bucket columns"
|
|
||||||
<*> minorOption "dim-id-col-name"
|
<*> minorOption "dim-id-col-name"
|
||||||
settingDimTableIdColumnName
|
settingDimTableIdColumnName
|
||||||
"Name of dimension table id columns"
|
"Name of dimension table id columns"
|
||||||
|
@ -52,12 +52,12 @@ instance FromJSON FactColumn where
|
|||||||
case cType of
|
case cType of
|
||||||
"dimtime" -> DimTime <$> o .: "column"
|
"dimtime" -> DimTime <$> o .: "column"
|
||||||
"nodimid" -> NoDimId <$> o .: "column"
|
"nodimid" -> NoDimId <$> o .: "column"
|
||||||
"dimid" -> DimId <$> o .: "table" <*> o .: "column"
|
"dimid" -> DimId <$> o .: "table" <*> o .: "column"
|
||||||
"dimval" -> DimVal <$> 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"
|
"factsum" -> FactSum <$> o .: "sourcecolumn" <*> o .: "column"
|
||||||
"factaverage" -> FactAverage <$> 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
|
_ -> fail $ "Invalid fact column type: " ++ cType
|
||||||
parseJSON o = fail $ "Cannot parse fact column: " ++ show o
|
parseJSON o = fail $ "Cannot parse fact column: " ++ show o
|
||||||
|
|
||||||
|
@ -29,18 +29,17 @@ extractFactTable fact = do
|
|||||||
sourceColumnType colName = columnType . fromJust . findColumn colName . tableColumns $ table
|
sourceColumnType colName = columnType . fromJust . findColumn colName . tableColumns $ table
|
||||||
|
|
||||||
columns = concatFor (factColumns fact) $ \col -> case col of
|
columns = concatFor (factColumns fact) $ \col -> case col of
|
||||||
DimTime cName ->
|
DimTime cName ->
|
||||||
[ Column (timeUnitColumnName dimIdColName cName settingTimeUnit) "integer" NotNull ]
|
[ Column (timeUnitColumnName dimIdColName cName settingTimeUnit) "integer" NotNull ]
|
||||||
NoDimId cName -> [ fromJust . findColumn cName . tableColumns $ table]
|
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 ]
|
FactSum scName cName -> [ Column cName (sourceColumnType scName) NotNull ]
|
||||||
FactAverage scName cName ->
|
FactAverage scName cName ->
|
||||||
[ Column (cName <> settingAvgCountColumSuffix) countColType NotNull
|
[ Column (cName <> settingAvgCountColumSuffix) countColType NotNull
|
||||||
, Column (cName <> settingAvgSumColumnSuffix) (sourceColumnType scName) NotNull
|
, Column (cName <> settingAvgSumColumnSuffix) (sourceColumnType scName) NotNull
|
||||||
]
|
]
|
||||||
FactCountDistinct cName ->
|
FactCountDistinct _ cName -> [ Column cName (countColType <> "[]") NotNull ]
|
||||||
[ Column (cName <> settingCountDistinctColumSuffix) (countColType <> "[]") NotNull ]
|
_ -> []
|
||||||
_ -> []
|
|
||||||
|
|
||||||
fks = for allDims $ \(fact', tab@Table {..}) ->
|
fks = for allDims $ \(fact', tab@Table {..}) ->
|
||||||
let colName = factDimFKIdColumnName settingDimPrefix dimIdColName tableName
|
let colName = factDimFKIdColumnName settingDimPrefix dimIdColName tableName
|
||||||
|
@ -140,8 +140,10 @@ factTablePopulateSQL popMode fact = do
|
|||||||
factColMap = concatFor (factColumns fact) $ \col -> case col of
|
factColMap = concatFor (factColumns fact) $ \col -> case col of
|
||||||
DimTime cName -> [ timeUnitColumnInsertSQL cName ]
|
DimTime cName -> [ timeUnitColumnInsertSQL cName ]
|
||||||
NoDimId cName -> [ (cName, fullColName fTableName cName, True) ]
|
NoDimId cName -> [ (cName, fullColName fTableName cName, True) ]
|
||||||
FactCount cName -> [ (cName, "count(*)", False) ]
|
FactCount scName cName ->
|
||||||
FactSum scName cName -> [ (cName, "sum(" <> fullColName fTableName scName <> ")", False) ]
|
[ (cName, "count(" <> maybe "*" (fullColName fTableName) scName <> ")", False) ]
|
||||||
|
FactSum scName cName ->
|
||||||
|
[ (cName, "sum(" <> fullColName fTableName scName <> ")", False) ]
|
||||||
FactAverage scName cName ->
|
FactAverage scName cName ->
|
||||||
[ ( cName <> settingAvgCountColumSuffix
|
[ ( cName <> settingAvgCountColumSuffix
|
||||||
, "count(" <> fullColName fTableName scName <> ")"
|
, "count(" <> fullColName fTableName scName <> ")"
|
||||||
|
@ -50,23 +50,23 @@ data Fact = Fact
|
|||||||
|
|
||||||
data FactColumn = DimTime !ColumnName
|
data FactColumn = DimTime !ColumnName
|
||||||
| NoDimId !ColumnName
|
| NoDimId !ColumnName
|
||||||
| DimId !TableName !ColumnName
|
| DimId !TableName !ColumnName
|
||||||
| DimVal !TableName !ColumnName
|
| DimVal !TableName !ColumnName
|
||||||
| FactCount !ColumnName
|
| FactCount !(Maybe ColumnName) !ColumnName
|
||||||
| FactSum !ColumnName !ColumnName
|
| FactSum !ColumnName !ColumnName
|
||||||
| FactAverage !ColumnName !ColumnName
|
| FactAverage !ColumnName !ColumnName
|
||||||
| FactCountDistinct !ColumnName
|
| FactCountDistinct !(Maybe ColumnName) !ColumnName
|
||||||
deriving (Eq, Show)
|
deriving (Eq, Show)
|
||||||
|
|
||||||
factColumnName :: FactColumn -> Maybe ColumnName
|
factColumnName :: FactColumn -> Maybe ColumnName
|
||||||
factColumnName (DimTime cName) = Just cName
|
factColumnName (DimTime cName) = Just cName
|
||||||
factColumnName (NoDimId cName) = Just cName
|
factColumnName (NoDimId cName) = Just cName
|
||||||
factColumnName (DimId _ cName) = Just cName
|
factColumnName (DimId _ cName) = Just cName
|
||||||
factColumnName (DimVal _ cName) = Just cName
|
factColumnName (DimVal _ cName) = Just cName
|
||||||
factColumnName (FactCount _) = Nothing
|
factColumnName (FactCount cName _) = cName
|
||||||
factColumnName (FactSum cName _) = Just cName
|
factColumnName (FactSum cName _) = Just cName
|
||||||
factColumnName (FactAverage cName _) = Just cName
|
factColumnName (FactAverage cName _) = Just cName
|
||||||
factColumnName (FactCountDistinct _) = Nothing
|
factColumnName (FactCountDistinct cName _) = cName
|
||||||
|
|
||||||
data Settings = Settings
|
data Settings = Settings
|
||||||
{ settingDimPrefix :: !Text
|
{ settingDimPrefix :: !Text
|
||||||
@ -74,7 +74,6 @@ data Settings = Settings
|
|||||||
, settingTimeUnit :: !TimeUnit
|
, settingTimeUnit :: !TimeUnit
|
||||||
, settingAvgCountColumSuffix :: !Text
|
, settingAvgCountColumSuffix :: !Text
|
||||||
, settingAvgSumColumnSuffix :: !Text
|
, settingAvgSumColumnSuffix :: !Text
|
||||||
, settingCountDistinctColumSuffix :: !Text
|
|
||||||
, settingDimTableIdColumnName :: !Text
|
, settingDimTableIdColumnName :: !Text
|
||||||
, settingDimTableIdColumnType :: !Text
|
, settingDimTableIdColumnType :: !Text
|
||||||
, settingFactCountColumnType :: !Text
|
, settingFactCountColumnType :: !Text
|
||||||
@ -91,7 +90,6 @@ defSettings = Settings
|
|||||||
, settingTimeUnit = Minute
|
, settingTimeUnit = Minute
|
||||||
, settingAvgCountColumSuffix = "_count"
|
, settingAvgCountColumSuffix = "_count"
|
||||||
, settingAvgSumColumnSuffix = "_sum"
|
, settingAvgSumColumnSuffix = "_sum"
|
||||||
, settingCountDistinctColumSuffix = "_hll"
|
|
||||||
, settingDimTableIdColumnName = "id"
|
, settingDimTableIdColumnName = "id"
|
||||||
, settingDimTableIdColumnType = "serial"
|
, settingDimTableIdColumnType = "serial"
|
||||||
, settingFactCountColumnType = "integer"
|
, settingFactCountColumnType = "integer"
|
||||||
|
Loading…
Reference in New Issue
Block a user