在spark SQL(也许只有HiveQL)中,可以做到:
select sex, avg(age) as avg_age
from humans
group by sex
Run Code Online (Sandbox Code Playgroud)
这将导致一个DataFrame名为"sex"和列的列"avg_age".
如何avg(age)在"avg_age"不使用文本SQL的情况下使用别名?
编辑: 在零点323的回答之后,我需要添加以下约束:
要重命名的列的名称可能不知道/保证甚至无法寻址.在文本SQL中,使用"选择EXPR作为名称"不需要具有EXPR的中间名称.在上面的示例中也是如此,其中"avg(age)"可以获得各种自动生成的名称(在spark发布和sql-context后端之间也有所不同).
在尝试使用constexpr函数和模板(以及非类型模板参数)时,我偶然发现了一个现象,我无法理解哪个规则使它生效.
因此,根据有关constexpr-s的规则,我的问题基本上是"为什么会发生这种情况"."这个"如下.
在其中一个constexpr函数中,如果直接使用参数,则在编译时计算中使用此参数没有问题.(示例第2行)
当相同的参数用作另一个constexpr函数的参数时,编译器会抱怨此表达式(参数id)不是constexpr.(例子第3行)
简而言之:
template <typename T> constexpr std::size size (T obj) { return obj.size(); }
template <typename T> constexpr auto sz1 (T obj) { return std::make_index_sequence< obj.size() > { }.size(); } // OK ...
template <typename T> constexpr auto sz2 (T obj) { return std::make_index_sequence< size(obj) > { }.size(); } // ERROR
// "obj" is [suddenly] not a constexpr
Run Code Online (Sandbox Code Playgroud)
g ++ - 4.9.1和clang ++ - 3.4.2都会发生这种情况.
下面是一个小型测试程序,用于快速简便的实验.
#include <utility>
#include <array>
#include <iostream>
// utils
template <size_t N> …Run Code Online (Sandbox Code Playgroud) 在有关Scala值类的文档中,提到有三种情况需要实际为实例分配一个值实例:
分配摘要
在以下情况下实际实例化值类:
- 值类被视为另一种类型.
- 值类被分配给数组.
- 进行运行时类型测试,例如模式匹配.
编译器或语言功能中是否有设置,当需要实例化值类时会产生警告?
我正在看spark.sql.DataFrame文档.
有
def as(alias: String): DataFrame
Returns a new DataFrame with an alias set.
Since
1.3.0
Run Code Online (Sandbox Code Playgroud)
这种方法的目的是什么?怎么用?可以有一个例子吗?
我还没有在网上找到任何有关此方法的信息,文档也不存在.我没有设法使用这种方法制作任何类型的别名.
在scala中,以下代码正确编译:
class a {}
class b {}
object Main {
implicit class Conv[f, t](val v: f ? t) extends AnyVal {
def conv = v
}
def main(args: Array[String]) {
val m = (a: a) ? new b
m.conv
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,以下无法编译:
class a {}
class b {}
object Main {
type V[f, t] = f ? t
implicit class Conv[f, t](val v: V[f, t]) extends AnyVal {
def conv = v
}
def main(args: Array[String]) {
val m = …Run Code Online (Sandbox Code Playgroud) 是否可以“安全地”扩展 makefile 中的变量,转义 makefile 认为特殊的所有字符?
例如,假设一个变量被用作目标:
${external_chaos}:
dd if=/dev/zero of=${external_chaos}
Run Code Online (Sandbox Code Playgroud)
(例如故意的戏剧)
如果external_chaos包含空格、;、#、:、,或其他 makefile 重要字符,那么整个规则就会混乱。
我想象的解决方案是一些应该执行此操作的 Make 内置函数,例如${escape external_chaos}(想象中的奢侈品)。
${value external_chaos} 不这样做。
scala ×4
apache-spark ×2
c++ ×1
constexpr ×1
dataframe ×1
gnu-make ×1
makefile ×1
value-class ×1
variables ×1