Record
Record
地理信息概述
Geography
侧重地理空间,Geometry
侧重几何空间。
Geography.FromWellKnownText
Geography.FromWellKnownText(input as nullable text) as nullable record
将WKT格式的表示地理值的文本转换为结构化记录值。
Geography.FromWellKnownText("LINESTRING(3 4,10 50,20 25)")
Geography.ToWellKnownText
Geography.ToWellKnownText(
input as nullable record,
optional omitSRID as nullable logical
) as nullable text
将结构化记录点值转换为表示地理值的文本WTK格式。
参数omitSRID
指示是否传入SRID(空间引用标识符)。
Geography.ToWellKnownText(
[
Kind="LINESTRING",
Points={
[Kind="POINT", Longitude=3, Latitude=4],
[Kind="POINT", Longitude=10, Latitude=50],
[Kind="POINT", Longitude=20, Latitude=25]
}
]
)
Geography.ToWellKnownText([Kind="POINT", Longitude=10, Latitude=50, SRID = 312])
Geography.ToWellKnownText([Kind="POINT", Longitude=10, Latitude=50, SRID = 312], true)
GeographyPoint.From
GeographyPoint.From(
longitude as number,
latitude as number,
optional z as nullable number,
optional m as nullable number,
optional srid as nullable number
) as record
创建一个表示地理点的记录值。
参数srid
默认值为4326。
GeographyPoint.From(10, 50, 20, 56, 312)
Geometry.FromWellKnownText
Geometry.FromWellKnownText(input as nullable text) as nullable record
将WKT格式的表示几何值的文本转换为结构化记录值。
Geometry.FromWellKnownText("LINESTRING(3 4,10 50,20 25)")
Geometry.ToWellKnownText
Geometry.ToWellKnownText(
input as nullable record,
optional omitSRID as nullable logical
) as nullable text
将结构化记录点值转换为表示几何值的文本WTK格式。
参数omitSRID
指示是否传入SRID(空间引用标识符)。
Geometry.ToWellKnownText(
[
Kind="LINESTRING",
Points={
[Kind="POINT", X=3, Y=4],
[Kind="POINT", X=10, Y=50],
[Kind="POINT", X=20, Y=25]
}
]
)
GeometryPoint.From
GeometryPoint.From(
x as number,
y as number,
optional z as nullable number,
optional m as nullable number,
optional srid as nullable number
) as record
创建一个表示几何点的记录值。
参数srid
默认值为0。
GeometryPoint.From(10, 50, 20, 56, 312)
Record.AddField
Record.AddField(
record as record,
fieldName as text,
value as any,
optional delayed as nullable logical
) as record
对已有的记录值record
添加键值对,字段名为fieldName
,值为value
。
参数fieldName
指定的字段名不能存在于记录值record
中,不然会报错。
参数delayed
含义尚不明确,已知默认为false
,当为true
时,value
必须指定为一个无参函数,并且该函数会被调用并取其结果。
Record.AddField([a = 1], "b", {1..3})
Record.AddField([a = 1], "b", () => 9, false)
Record.AddField([a = 1], "b", () => 9, true)
Record.Combine
Record.Combine(records as list) as record
将含有若干记录值的列表合并为一个记录值。
如果多个记录值存在相同字段,后面的记录值会覆盖前面的记录值。
Record.Combine({[A=1, B=2], [A=3, C=4]})
Record.Field
Record.Field(record as record, field as text) as any
根据提供的字段名取字段值。
如果字段不存在则报错。
Record.Field([A=1, B=2], "B")
Record.FieldCount
Record.FieldCount(record as record) as number
统计记录值中的字段数量。
Record.FieldCount([A=1, B=2])
Record.FieldNames
Record.FieldNames(record as record) as list
取记录值的字段名列表。
Record.FieldNames([A=1, B=2])
Record.FieldOrDefault
Record.FieldOrDefault(
record as nullable record,
field as text,
optional defaultValue as any
) as any
取记录值record
的字段名为field
的字段值,如果记录值record
中不存在field
字段则返回defaultValue
。
参数defaultValue
指定不存在field
字段时的返回值。需要注意的是不指定defaultValue
等同于传入null
。
Record.FieldOrDefault([A=1, B=2], "C")
Record.FieldValues
Record.FieldValues(record as record) as list
取记录值的字段值列表。
Record.FieldValues([A=1, B=2])
Record.FromList
Record.FromList(list as list, fields as any) as record
根据列表和字段名生成记录值。
参数fields
可以是:
- 字段名组成的列表
- 记录类型值
Record.FromList({1, 2}, {"A", "B"})
Record.FromList({1, 2}, type [A=number, B=Int64.Type])
Record.FromTable
Record.FromTable(table as table) as record
根据表table
(表中的Name列和Value列对应字段名和字段值)生成记录值。
表中必须包含Name
列和Value
列,严格区分大小写。
表中Name
列如果存在重复值会报错。
Record.FromTable(#table({"Name", "ID", "Value"}, {{"haha", 10, 1}, {"lala", 20, 2}}))
Record.HasFields
Record.HasFields(record as record, fields as any) as logical
检测记录值中是否存在名为fields
的字段。
参数fields
可以是单个字段名,也可以是多个字段名组成的列表。
该函数仅检查字段名,不会访问字段值,即字段值中的错误不会影响计算。
Record.HasFields([A=1, B=2], "C")
Record.HasFields([A=1, B=error "a"], {"A", "B"})
Record.RemoveFields
Record.RemoveFields(
record as record,
fields as any,
optional missingField as nullable number
) as record
从记录值record
中移除fields
中指定的字段。
参数missingField
是MissingField.Type
枚举值或数字,仅MissingField.Error
(默认值)(或数字0)会显示错误,其他值都忽略错误。
Record.RemoveFields([A=1, B=error "a"], "A", MissingField.Error)
Record.RemoveFields([A=1, B=error "a"], {"A", "C"}, MissingField.Error)
Record.RemoveFields([A=1, B=error "a"], {"A", "C"}, MissingField.UseNull)
Record.RenameFields
Record.RenameFields(
record as record,
renames as list,
optional missingField as nullable number
) as record
根据出现在renames
中的字段名对记录值record
中的对应字段名进行重命名。
参数renames
可以是:
{旧字段名, 新字段名}
- 若干
{旧字段名, 新字段名}
组成的列表
参数missingField
指定当旧字段名不存在时如何处理,取值可以是MissingField.Type
枚举值或数字:
- 忽略、
null
、0
、MissingField.Error
:错误。 1
、MissingField.Ignore
:忽略不存在的旧字段名
,不报错。2
、MissingField.UseNull
:忽略不存在的旧字段名
,添加字段名为新字段名
的字段并使字段值为null
。
Record.RenameFields([A=1, B=error "a"], {{"A", "E"}, {"D", "C"}}, MissingField.UseNull)
Record.ReorderFields
Record.ReorderFields(
record as record,
fieldOrder as list,
optional missingField as nullable number
) as record
根据列表fieldOrder
中提供的字段名顺序对记录值record
进行排序。
参数fieldOrder
中的字段名不可重复。
参数missingField
指定当fieldOrder
中的字段名不存在时如何处理,取值可以是MissingField.Type
枚举值或数字:
- 忽略、
null
、0
、MissingField.Error
:错误。 1
、MissingField.Ignore
:忽略不存在的字段名,不报错。2
、MissingField.UseNull
:使用不存在的字段名添加字段并使字段值为null
。
Record.ReorderFields(
[A = 1, B = 2, C = 3],
{"C", "A", "D", "B"},
2
)
Record.SelectFields
Record.SelectFields(
record as record,
fields as any,
optional missingField as nullable number
) as record
根据提供的fields
按照顺序提取记录值record
中的字段并组成新的记录值。
参数fields
可以是:
- 字段名:按照字段名提取。
- 列名列表:按照字段名和顺序提取字段。字段名不可以重复。
参数missingField
指定当fields
中的字段名不存在时如何处理,取值可以是MissingField.Type
枚举值或数字:
- 忽略、
null
、0
、MissingField.Error
:错误。 1
、MissingField.Ignore
:忽略不存在的字段名,不报错。2
、MissingField.UseNull
:使用不存在的字段名添加字段并使字段值为null
。
Record.SelectFields([A=1, B=2, C=3], "D", MissingField.UseNull)
Record.SelectFields([A=1, B=2, C=3], {"C", "A", "D", "B"}, 1)
Record.SelectFields([A=1, B=2, C=3], {"C", "A", "D", "B"}, MissingField.UseNull)
Record.ToList
Record.ToList(record as record) as list
将记录值转为列表。
转为列表会丢弃字段名。
记录是有序的,转为列表时会按照顺序转换。
Record.ToList([A=1, B=2, C=3])
Record.ToTable
Record.ToTable(record as record) as table
将记录值转为表,字段名和字段值对应表的Name
列和Value
列。
记录是有序的,转为表时会按照顺序转换。
Record.ToTable([A=1, B=2, C=3])
Record.TransformFields
Record.TransformFields(
record as record,
transformOperations as list,
optional missingField as nullable number
) as record
根据transformOperations
提供的字段名和函数对对应的字段进行操作。
参数transformOperations
可以是:
{列名, 函数}
:函数拥有一个参数。- 若干
{列名, 函数}
组成的列表:函数拥有一个参数。
参数missingField
指定当transformOperations
中的字段名不存在时如何处理,取值可以是MissingField.Type
枚举值或数字:
- 忽略、
null
、0
、MissingField.Error
:错误。 1
、MissingField.Ignore
:忽略不存在的字段名,不报错。2
、MissingField.UseNull
:使用不存在的字段名添加字段并使字段值为null
,之后会交给transformOperations
中对应的函数进行处理并返回结果。
Record.TransformFields(
[A="a", B=2, C=3],
{"B", (x) => Text.From(x) & "ok"}
)
Record.TransformFields(
[A="a", B=2, C=3],
{
{"A", Text.Upper},
{"B", (x) => Text.From(x) & "ok"}
}
)
Record.TransformFields(
[A="a", B=2, C=3],
{
{"A", Text.Upper},
{"E", each 666}
},
MissingField.UseNull
)