publishTable

语法

publishTable(host, port, tableName, [actionName], [offset=-1], [filter], [allowExists=false], [resetOffset=false])

详情

该函数在流数据表所在的服务器上执行,使流数据表发布数据到客户端,客户端可能是 DolphinDB 数据节点或 API。与之对比,使用 subscribeTable 函数时,客户端必须是 DolphinDB 数据节点。

该函数返回一个字符串向量,包含流数据表的列名。如果指定的表不存在或者不是流数据表,将会抛出异常。如果客户端已经执行订阅操作,且 allowExists =false,也会抛出异常。

使用 stopPublishTable 停止流数据表发布数据。

参数

host 是客户端节点的主机名。

port 是客户端的订阅端口号。若客户端是 DolphinDB 的数据节点,port 由配置参数 subPort 指定;若客户端是 API,port 是客户端启用的订阅端口号

tableName 是一个字符串,表示本地服务器上的共享流数据表的名称。

actionName 是一个字符串,表示订阅任务的名称。它可以包含字母、数字和下划线。

offset 是第一条订阅信息的位置。一条信息是流数据表中的一行。如果没有指定 offset,或它为 - 1,或超过了流数据表的记录行数,订阅将会从即将进入流表的第一行开始。offset 与流数据表创建时的第一行对应。如果某些行因为内存限制被删除,在决定订阅开始的位置时,这些行仍然考虑在内。

filter 是一个向量。该参数需要配合 setStreamTableFilterColumn 函数一起使用。使用 setStreamTableFilterColumn 指定流数据表的过滤列,流数据表过滤列在 filter 中的数据才会发布到订阅端,不在 filter 中的数据不会发布。filter 不支持过滤 BOOL 类型数据。

allowExists 是一个布尔值。当 allowExists =true 时,若执行该函数前,订阅已经存在,不会抛出异常。默认值为 false。

New in version 1.30.17: 参数 resetOffset

resetOffset 是一个布尔值,表示是否重置 offset 为 - 1,默认值为 false。当 resetOffset =true 时,若流数据表中原 offset 指定的行没有数据,系统会重置 offset,并从即将进入流数据表的第一行开始订阅。

例子

$ n=100000
$ t=streamTable(rand(100,n) as id, rand(100.0,n) as val)
$ share t as st;

$ publishTable("localhost",8848,"st");
["id","val"]