将视图定义为非默认(当前)命名空间
Define a view into non-default(current) namespace
Views and their dependencies can be defined only in the default namespace.
还有q
有一个命令\b:
Syntax: \b [namespace]
Lists dependencies (views) in namespace. Defaults to current namespace.
据此我猜想不仅可以在默认命名空间中创建视图:
$ q
KDB+ 3.6 2019.04.02 Copyright (C) 1993-2019 Kx Systems
m32/ ...
q)\d .jar
q.jar)v::x+1
q.jar)\d .
q)`. `v
x+1
但视图是在 .
命名空间中创建的。
那么是否可以以某种方式在非默认(当前)命名空间中创建视图?如果不是,为什么命令 \b [namespace]
有参数?
您问题的答案取决于您对名称空间的称呼。如果没有误导的话,关于这个主题的官方 q 文档是模糊的。例如,描述系统命令的页面 \d
reads:
\d (directory)
Syntax: \d [namespace]
Sets the current namespace (also known as directory or context). The
namespace can be empty, and a new namespace is created when an object
is defined in it. The prompt indicates the current namespace.
如您所见,可选参数在第一行称为 directory,但在第二行变为 namespace。正如我们从第三行了解到的那样,它是 "known as context."
但是,命名空间、目录和上下文这三个词在某些情况下可以互换使用,但不是所有情况。定义视图就是这样一种情况,其中目录和名称空间之间的区别很重要。
由于官方术语不够清晰,让我向您推荐 Nick Psaris 的一本好书 "Q Tips: Fast, Scalable and Maintainable Kdb+"。 Nick 区分了以“.”开头的命名空间子集。并调用它们并且只调用它们目录。在他的术语中,所有目录都是命名空间,但并非所有命名空间都是目录。
原来目录是有限制的;特别是,它们不能包含视图。但一个鲜为人知的事实是,不是目录的命名空间可以:
q).my.dir.v::x+1 / a (failed) attempt to create a view v in a directory
'x
[0] .my.dir.v::x+1
q)my.ns.v1::x+1 / v1 is defined in a namespace
q)your.ns.v2::x-1 / so is v2
q)\b
`symbol$()
q)\b my.ns
,`v1
q)\b your.ns
,`v2
q)x:41
q)my.ns.v1
42
q)your.ns.v2
40
Views and their dependencies can be defined only in the default namespace.
还有q
有一个命令\b:
Syntax: \b [namespace]
Lists dependencies (views) in namespace. Defaults to current namespace.
据此我猜想不仅可以在默认命名空间中创建视图:
$ q
KDB+ 3.6 2019.04.02 Copyright (C) 1993-2019 Kx Systems
m32/ ...
q)\d .jar
q.jar)v::x+1
q.jar)\d .
q)`. `v
x+1
但视图是在 .
命名空间中创建的。
那么是否可以以某种方式在非默认(当前)命名空间中创建视图?如果不是,为什么命令 \b [namespace]
有参数?
您问题的答案取决于您对名称空间的称呼。如果没有误导的话,关于这个主题的官方 q 文档是模糊的。例如,描述系统命令的页面 \d
reads:
\d (directory)
Syntax: \d [namespace]
Sets the current namespace (also known as directory or context). The namespace can be empty, and a new namespace is created when an object is defined in it. The prompt indicates the current namespace.
如您所见,可选参数在第一行称为 directory,但在第二行变为 namespace。正如我们从第三行了解到的那样,它是 "known as context."
但是,命名空间、目录和上下文这三个词在某些情况下可以互换使用,但不是所有情况。定义视图就是这样一种情况,其中目录和名称空间之间的区别很重要。
由于官方术语不够清晰,让我向您推荐 Nick Psaris 的一本好书 "Q Tips: Fast, Scalable and Maintainable Kdb+"。 Nick 区分了以“.”开头的命名空间子集。并调用它们并且只调用它们目录。在他的术语中,所有目录都是命名空间,但并非所有命名空间都是目录。
原来目录是有限制的;特别是,它们不能包含视图。但一个鲜为人知的事实是,不是目录的命名空间可以:
q).my.dir.v::x+1 / a (failed) attempt to create a view v in a directory
'x
[0] .my.dir.v::x+1
q)my.ns.v1::x+1 / v1 is defined in a namespace
q)your.ns.v2::x-1 / so is v2
q)\b
`symbol$()
q)\b my.ns
,`v1
q)\b your.ns
,`v2
q)x:41
q)my.ns.v1
42
q)your.ns.v2
40