trait KeywordsStable extends AnyRef
Keywords to mark aggregate expressions on and unifications of attributes.
// Aggregates on any attribute type Person.age(count).get.map(_.head ==> 3) // count of asserted `age` attribute values Person.age(countDistinct).get.map(_.head ==> 3) // count of asserted distinct `age` attribute values Person.age(max).get.map(_.head ==> 38) // maximum `age` value (using `compare`) Person.age(min).get.map(_.head ==> 5) // maximum `age` value (using `compare`) Person.age(sample).get.map(_.head ==> 27) // single sample `age` value // Aggregates on any attribute type, returning multiple values Person.age(distinct).get.map(_.head ==> Vector(5, 7, 38)) // distinct `age` values Person.age(max(2)).get.map(_.head ==> Vector(38, 7)) // 2 maximum `age` values Person.age(min(2)).get.map(_.head ==> Vector(5, 7)) // 2 minimum `age` values Person.age(sample(2)).get.map(_.head ==> Vector(7, 38)) // 2 sample `age` values // Aggregates on number attributes Person.age(sum).get.map(_.head ==> 50) // sum of all `age` numbers Person.age(avg).get.map(_.head ==> 16.66666667) // average of all `age` numbers Person.age(median).get.map(_.head ==> 7) // median of all `age` numbers Person.age(stddev).get.map(_.head ==> 15.107025591499) // standard deviation of all `age` numbers Person.age(variance).get.map(_.head ==> 228.2222222222) // variance of all `age` numbers
- Source
- Keywords.scala
- Grouped
- Alphabetic
- By Inheritance
- KeywordsStable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
- trait AggrCoalesce extends AggrKw
- trait AggrInt extends AggrKw
- trait AggrKw extends Kw
- trait Kw extends AnyRef
-
trait
avg extends AggrCoalesce
Average of attribute values.
Average of attribute values.
Applyavgkeyword to attribute to return average of attribute values of entities matching the molecule.for { _ <- Match.sKeywords.insert(1, 2, 4) _ <- Match.score(avg).get.map(_.head ==> 2.3333333333333335) // (1 + 2 + 4) / 3 } yield ()
- returns
Double
- trait bi extends AnyRef
-
trait
count extends AggrCoalesce with AggrInt
Count of attribute values.
Count of attribute values.
Applycountkeyword to attribute to return count of attribute values of entities matching the molecule.for { _ <- Person.firstName.lastName.age insert List( ("Ben", "Hayday", 42), ("Liz", "Taylor", 34), ("Liz", "Swifty", 34), ("Liz", "Mooray", 25) ) _ <- Person.firstName.age(count).get.map(_ ==> List( ("Ben", 1), ("Liz", 3) // 34, 34, 25 )) } yield ()
- returns
Int
-
trait
countDistinct extends AggrCoalesce
Count of distinct attribute values.
Count of distinct attribute values.
ApplycountDistinctkeyword to attribute to return count of distinct attribute values of entities matching the molecule.for { _ <- Person.firstName.lastName.age insert List( ("Ben", "Hayday", 42), ("Liz", "Taylor", 34), ("Liz", "Swifty", 34), ("Liz", "Mooray", 25) ) _ <- Person.firstName.age(countDistinct).get.map(_ ==> List( ("Ben", 1), ("Liz", 2) // 34, 25 )) } yield ()
- returns
Int
-
trait
distinct extends AggrKw
Distinct attribute values.
Distinct attribute values.
Applydistinctkeyword to attribute to return Vector of distinct attribute values of entities matching the molecule.for { _ <- Person.firstName.lastName.age insert List( ("Ben", "Hayday", 42), ("Liz", "Taylor", 34), ("Liz", "Swifty", 34), ("Liz", "Mooray", 25) ) _ <- Person.firstName.age(distinct) insert List( ("Ben", 42), ("Liz", Vector(34, 25)) // only single 34 returned ) } yield ()
- returns
List[attribute-type]
-
trait
max extends AggrKw
Maximum attribute value(s).
Maximum attribute value(s).
Applymaxkeyword to attribute to return the maximum attribute value of entities matching the molecule.for { _ <- Person.age.insert(25, 34, 37, 42, 70) _ <- Person.age(max).get.map(_.head ==> 70) } yield ()
Apply
max(n)to return Vector of the n biggest values.Person.age(max(3)).get.map(_.head ==> Vector(37, 42, 70))
- Note
max/max(n)supports all value types (via comparators).max(n)Can at most return the number of values that match.
- case class maxs(n: Int) extends Kw with Product with Serializable
-
trait
median extends AggrCoalesce
Median of attribute values.
Median of attribute values.
Applymediankeyword to attribute to return median of attribute values of entities matching the molecule.for { _ <- Match.sKeywords.insert(1, 2, 4) _ <- Match.score(median).get.map(_.head ==> 2) } yield ()
OBS: When it comes to an even number of values, Datomic has a special implementation of median that is different from the one described on the Wiki entry on the median function.
Datomic calculates the median of even number of values as the average of the two middle numbers rounded down to nearest whole numberfor { _ <- Match.sKeywords.insert(1, 2, 3, 4) _ <- Match.score(median).get.map(_.head ==> 2) // (2 + 3) / 2 = 2.5 rounded down to 2 } yield ()
With decimal numbers this can go wrong:
for { _ <- Match.sKeywords.insert(1.0, 2.5, 2.5, 3.0) _ <- Match.score(median).get.map(_.head ==> 2) // (2.5 + 2.5) / 2 = 2.5 rounded down to 2 (This is wrong and bug report has been filed) } yield ()
- returns
Value of Attribute type
-
trait
min extends AggrKw
Minimum attribute value(s).
Minimum attribute value(s).
Applyminkeyword to attribute to return the minimum attribute value of entities matching the molecule.for { _ <- Person.age.insert(25, 34, 37, 42, 70) _ <- Person.age(min).get.map(_.head ==> 25) } yield ()
Apply
min(n)to return Vector of the n smallest values.Person.age(min(3)).get.map(_.head ==> Vector(25, 34, 37))
- Note
min/min(n)supports all value types (via comparators).min(n)Can at most return the number of values that match.
- case class mins(n: Int) extends Kw with Product with Serializable
-
trait
sample extends AggrKw
Sample attribute value(s).
Sample attribute value(s).
Applysamplekeyword to attribute to return a single sample (random) attribute value of entities matching the molecule.for { _ <- Person.age.insert(25, 34, 37, 42, 70) _ <- Person.age(sample).get.map(_.head ==> 42) // or other.. } yield ()
Apply
sample(n)to return Vector of up to n distinct sample values.Person.age(sample(3)).get.map(_.head ==> Vector(70, 25, 37)) // or other..
- Note
Can at most return the number of values that match.
- case class samples(n: Int) extends Kw with Product with Serializable
-
trait
stddev extends AggrCoalesce
Variance of attribute values.
Variance of attribute values.
Applystddevkeyword to attribute to return variance of attribute values of entities matching the molecule.for { _ <- Match.sKeywords.insert(1, 2, 4) _ <- Match.score(stddev).get.map(_.head ==> 1.247219128924647) } yield ()
- returns
Double
-
trait
sum extends AggrCoalesce
Sum of attribute values.
Sum of attribute values.
Applysumkeyword to attribute to return sum of attribute values of entities matching the molecule.for { _ <- Match.sKeywords.insert(1, 2, 4) _ <- Match.score(sum).get.map(_.head ==> 7) } yield ()
- returns
Value of Attribute type
-
trait
unify extends Kw
Unify attribute value in self-join.
Unify attribute value in self-join.
Applyunifymarker to attribute to unify its value with previous values of the same attribute in the molecule in a self-join.for { _ <- m(Person.age.name.Beverages * Beverage.name.rating) insert List( (23, "Joe", List(("Coffee", 3), ("Cola", 2), ("Pepsi", 3))), (25, "Ben", List(("Coffee", 2), ("Tea", 3))), (23, "Liz", List(("Coffee", 1), ("Tea", 3), ("Pepsi", 1)))) // What beverages do pairs of 23- AND 25-year-olds like in common? // Drink name is unified - Joe and Ben both drink coffee, etc.. _ <- Person.age_(23).name.Beverages.name._Ns.Self .age_(25).name.Beverages.name_(unify).get.map(_.sorted ==> List( ("Joe", "Coffee", "Ben"), ("Liz", "Coffee", "Ben"), ("Liz", "Tea", "Ben") )) } yield ()
- trait v1 extends Kw
-
trait
variance extends AggrCoalesce
Variance of attribute values.
Variance of attribute values.
Applyvariancekeyword to attribute to return variance of attribute values of entities matching the molecule.for { _ <- Match.sKeywords.insert(1, 2, 4) _ <- Match.score(variance).get.map(_.head ==> 1.5555555555555556) } yield ()
- returns
Double
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @IntrinsicCandidate()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
Deprecated Value Members
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated
Inherited from AnyRef
Inherited from Any
attrMarker
Aggregate keywords
Keywords applied to attributes that return aggregated value(s).
Number aggregation keywords
Keywords applied to number attributes that return aggregated value(s).