Skip to content

Instantly share code, notes, and snippets.

View prateeka's full-sized avatar

Prateek Asthana prateeka

View GitHub Profile
@prateeka
prateeka / SqlLanguage.scala
Created September 21, 2021 05:51
ATSCALE-4981 analysis
def makeSelectColumn(gb: GroupByType): Option[SelectColumn] = {
gb match {
case GroupByIgnore => None
case _: GroupByColumnNumber => None
case gbv@GroupByValue(_: ConstantValue, _) if findGroupByTypeColumn(gbv).isEmpty => None
case _ =>
val (exposed, expr) =
gb match {
case GroupByColumnName(name, _, Some(expression)) => (Some(name), expression)
case GroupByValue(_, expression) => (None, expression)
@prateeka
prateeka / MdxSpecialQueryHandler.scala
Created August 5, 2022 07:00
atscale-3705: mdxCell incorrectly showing `1`
def handleExcelUnionForTopCountAndBottomCount(cube: Cube, queryAxes: Map[Int, Axis], targetLevel: FlatLevel) = {
logger.warn("ExcelUnionBothTopBottomCount applied")
// As we go down levels we have to build out the names and keys
case class RowLevel(fl: FlatLevel, nameIndices: Seq[Int], keyIndices: Seq[Seq[Int]])
def getRowLevels(levels: IndexedSeq[FlatLevel], idx: Int, rowIdx: Int, prevRowLevel: Option[RowLevel]): Seq[RowLevel] = {
if (idx < levels.size) {
val (prevNameIndices, prevKeyIndices) = prevRowLevel.map { p => (p.nameIndices, p.keyIndices) }.getOrElse((Seq.empty, Seq.empty))
val level = levels(idx)
@prateeka
prateeka / CalculationResolver.scala
Created August 30, 2022 07:38
atscale-3705: incorrect data type
case mpv: MemberPropertyValue[_] =>
calculationContext match {
case FilterCalculationContext(FilterFlatLevel(flatLevel)) =>
(mpv.property, mpv.typed) match {
case (_: MemberNameProperty | _: MemberCaption, _) =>
val v = resolveMDX(mpv.member)
v.physicalType match {
case _: VariableStringType | NullType => v
case _ => TypeConvertedValue(v, MaxStringType)
}
val idx = idxMinus + 1
val fd = hier.dimension
val uniqueName = MdxSelectorString(fd.name, hier.name)
val allMemberExpression = s"$uniqueName.[All]"
val (defaultMember, allMember) = hier.defaultMember match {
case AllMember =>
if (hier.isCalculationGroup) {
(s"${hier.uniqueName}.&amp;[${fd.calculationGroup.get.defaultMember.name}]", None)
} else {
(allMemberExpression, Some(allMemberExpression))