操作数据(Manipulating data)
你可以使用 Flows 查询语言 (FQL) 执行数学函数、操作字符串和数组,并以多种方式与响应中的数据交互。示例数据和 FQL 示例如下。
示例 JSON
下面的示例使用此 JSON 数据:
{
"customer_info": {
"customer field": "Customer data",
"unformatted_customer_field": " customer \n stuff ",
"total_value": "281.01",
"associated_usernames": ["user1", "myuser", "online_user"]
},
"payments": [
{
"invoice_number": "101301",
"date": "2022-09-11T16:12:34.494Z",
"description": "recurring subscription",
"amount": 110.48
},
{
"invoice_number": "101302",
"date": "2022-09-29T14:45:13.148Z",
"description": "one time purchase",
"amount": 24.49
},
{
"invoice_number": "101303",
"date": "2022-10-11T16:12:34.683Z",
"description": "recurring subscription",
"amount": 110.48
},
{
"invoice_number": "101304",
"date": "2022-10-12T11:45:22.182Z",
"description": "recurring subscription deluxe",
"amount": 35.56
}
]
}
插入字符串,然后按描述对结果进行分组和求和
下面的示例获取数组description
中的每个值payments
并附加字符串annual cost
。然后获取amount
每个description
字段下方的值,将其乘以 12,并将其附加到相应的结果中。结果按description
字段分组。
普通话 | kk |
结果 |
|
返回字符串的长度
该$length()
函数返回指定字符串的长度。description
下面的示例返回数组中第一个键值对中字符串的长度payments
。
普通话 | $length(付款[0].描述) |
结果 | 22 |
返回字符串的一部分
该$substring()
函数返回指定字符串的一部分。在下面的示例中,The3
是可选的并指定偏移量,而 the6
是你选择的字符数。负数也可以用于偏移量。
普通话 | $substring(payments[0].description, 3, 6) |
结果 | “急” |
获取第一次出现模式之前的字符串
在下面的示例中,$substringBefore()
函数返回指定出现的 之前的子字符串subscription
。如果找不到subscription
,则返回整个字符串。
普通话 | $substringBefore(payments[0].description, "subscription") |
结果 | “再次发生的 ” |
在第一次出现模式后获取字符串
该$substringAfter()
函数找到一个模式并返回紧跟在该模式之后的子字符串。下面的示例返回数组第一个对象中键值对后面的recurring
子description
字符串payments
。
普通话 | $substringAfter(payments[0].description, "recurring") |
结果 | “订阅” |
将字符串全部转为大写
该$uppercase()
函数将字符串中的所有字符变为大写。
普通话 | $大写(支付[0].描述) |
结果 | “定期订阅” |
将字符串全部转为小写
该$lowercase()
函数将字符串中的所有字符变为小写。
普通话 | $lowercase(customer_info."客户字段") |
结果 | “客户资料” |
修剪字符串
该$trim()
函数去除多余的前导和尾随空格,将换行符、回车符、换行符和制表符转换为单个空格字符,并将连续的空格缩减为单个空格字符。
FQL | $trim(customer_info.unformatted_customer_field) |
Result | "customer stuff" |
填充字符串
该$pad()
函数向字符串中添加空格或字符,使字符串的总长度等于第二个参数。如果第二个参数是正数,则用第三个参数填充字符串的末尾。如果第二个参数为负,则用第三个参数填充字符串的前面。(如果留空,第三个参数字符默认为空格。)
FQL | $pad(customer_info."customer field", 15, "#") |
Result | "Customer data##" |
将字符串拆分为组件数组
该$split()
函数返回在第二个参数中指定的分隔符上拆分的字符串,并可选地受第三个参数限制。你还可以使用正则表达式而不是字符串。
FQL | $split(payments[1].description, " ", 2) |
Result | ["one","time"] |
将字符串数组连接成一个字符串
该$join()
函数从字符串数组创建单个字符串。下面的示例从键获取数组associated_usernames
并将数组的值作为单个字符串返回。
FQL | $join(customer_info.associated_usernames) |
Result | "user1myuseronline_user" |
用另一个字符串替换一个字符串
在下面的示例中,该$replace()
函数在第一个参数字符串中查找实例recurring
并将它们替换为renewing
,仅限于找到的第一个实例(可选地用 指定1
)。你也可以使用正则表达式而不是recurring
.
FQL | $replace(payments[0].description,"recurring", "renewing", 1) |
Result | "renewing subscription" |
Base64 编码一个字符串
该$base64encode()
函数将字符串转换为 base64 编码。下面的示例将字符串转换"some data here"
为"c29tZSBkYXRhIGhlcmU="
.
FQL | $base64decode("c29tZSBkYXRhIGhlcmU=") |
Result | "some data here" |
Base64 解码字符串
该$base64decode
函数将 base64 编码的字符串转换为人类可读的字符串。下面的示例转换"c29tZSBkYXRhIGhlcmU="
为"some data here"
.
普通话 | $base64decode("c29tZSBkYXRhIGhlcmU=") |
结果 | “这里有一些数据” |
将字符串转换为 JSON
该$jsonParse()
函数可以将字符串格式化为 JSON,以便可以使用 FQL 对其进行查询。下面的示例假设你将字符串{"Feedback Type":"Bug Report"}
存储为名为 的变量input
。
普通话 | $jsonParse(输入) |
结果 | {“反馈类型”:“错误报告”} |
将字符串转换为数字
你可以使用该函数将字符串转换为数字$number()
。下面的示例将对象"281.01"
中的字符串转换customer_info
为数字281.01
。
普通话 | $number(customer_info.total_value) |
结果 | 281.01 |
求和数值
该$sum()
函数从对象或数组中键值对的每个实例获取值,将这些值相加,然后返回结果。下面的示例获取数组amount
中每个字段的值payments
并返回它们的总和。
普通话 | $总和(付款金额) |
结果 | “281.01 美元” |
获取两个数字之间的绝对差
该$abs()
函数返回两个数字之间的绝对差值。绝对差是数轴上两个值之间的距离。绝对差总是正的。
普通话 | $绝对值(4.56 - 6.78) |
结果 | 2.22 |
取整一个数字
该$ceil()
函数将数字四舍五入为下一个整数。
向下舍入一个数字
该floor()
函数将数字向下舍入到前一个整数。
提高一个数的幂
该$power()
函数将第一个数字乘以第二个数字的幂。下面的示例将 2(底数)提高到 3(指数)的次方。
获取数字的平方根
该$sqrt()
函数返回数字的平方根。
将数字转换为十六进制或二进制
该formatBase()
函数将数字转换为十六进制或二进制。下面的示例转换3000
为十六进制。使用基数 2 而不是 16 将转换3000
为二进制。
普通话 | $formatBase(3000, 16) |
结果 | “bb8” |
生成一个新的随机发票号
该$round($random())
函数生成一个随机整数。下面的示例生成一个 1 到 1000 之间的随机整数,并返回附加到字符串“Invoice number”的数字。
普通话 | "发票号" & $round($random()*1000) |
结果 | “发票编号 891” |
将数字转换为字符串
你可以使用该函数将数字转换为字符串$string()
。下面的示例从数组amount
中第一个对象的键中获取数字值payments
并将其转换为字符串"110.48"
。
普通话 | $字符串(付款[0].金额) |
结果 | “110.48” |
编码 URL 组件
该$encodeUrlComponent()
函数将 URL 组件中的某些字符替换为其 UTF-8 编码版本。下面的示例替换?
为%3F
,=
和%3D
。
普通话 | $encodeUrlComponent("?city=墨尔本") |
结果 | “%3Fcity%3D墨尔本” |
解码 URL 组件
该$decodeUrlComponent()
函数将 URL 组件中的 UTF-8 编码字符替换为其原始版本。下面的示例替换%3F
为?
,$3D
和=
。
普通话 | $decodeUrlComponent("%3Fcity%3D墨尔本") |
结果 | “?城市=墨尔本” |
编码整个 URL
该$encodeUrl()
函数将 URL 中的某些字符替换为 UTF-8 编码字符。下面的示例替换こんにちは
为%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF
普通话 | $encodeUrl("https://faketranslatewebsite.com/?phrase=こんニちは") |
结果 | “https://faketranslatewebsite.com/?phrase=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF” |
解码整个 URL
该$decodeUrl()
函数将 URL 中的 UTF-8 编码字符替换为其原始版本。下面的示例替换%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF
为こんにちは
.
普通话 | $decodeUrl("https://faketranslatewebsite.com/?phrase=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF") |
结果 | “https://faketranslatewebsite.com/?phrase=こんニちは” |
获取 ISO 8601 格式的当前时间
该$now()
函数以 ISO 8601 格式返回当前时间。
普通话 | $现在() |
结果 | “2022-11-04T22:36:57.094Z” |
获取自纪元以来的当前时间(以 Unix 毫秒为单位)
该millis()
函数返回自纪元以来的当前时间(以 Unix 毫秒为单位)。
普通话 | $毫秒() |
结果 | 1667601477254 |
从特定日期格式转换为 Unix 纪元时间
该$toMillis()
函数将给定的日期格式转换为 Unix 纪元时间。有关日期格式的详细信息,请参阅下面的格式部分。
普通话 | $toMillis("10/12/2018 11:39 PM", "[M]/[D]/[Y] [h]:[m] [P]") |
结果 | 1539387540000 |
从 Unix 纪元时间转换为特定的日期格式
该$fromMillis()
函数将 Unix 纪元时间转换为不同的日期格式。有关日期格式的详细信息,请参阅下面的格式部分。
普通话 | $fromMillis(1539387540000, "[Y]-[M]-[D] [H]:[m]:[s] [z]") |
结果 | “2018-10-12 23:39:00 GMT+00:00” |
从日期中获取日/月/年
、和函数从年-月-日日期格式返回它们各自的组成部分$year()
。$month()``$day()
普通话 | $year("2023-02-11") & "-" & $month("2023-02-11") & "-" & $day("2023-02-11") |
结果 | “2023-2-11” |
从日期中获取时间
$hours()
、$minutes()
、$seconds()
和函数$milliseconds()
从给定日期返回它们各自的值。下面的示例使用$now()
日期函数。
普通话 | $hours($now()) & ":" & $minutes($now()) & ":" & $seconds($now()) & ":" & $milliSeconds($now()) |
结果 | “19:23:8:143” |
从日期中获取星期几
该$dayOfTheWeek()
函数接受日期并返回对应于星期几的数字。0
是星期天,1
是星期一,依此类推。
普通话 | $dayOfTheWeek($现在()) |
结果 | 2个 |
比较两个日期
该$hasSameDate()
函数接受两个或多个日期,参数指定日期中的值。该函数比较参数指定的值,true
如果相同则返回,否则false
返回。
普通话 | $hasSameDate("2023-02-01", "2023-02-08", ["月", "年"]) |
结果 | 真的 |
将日期增加一天
该$datePlus()
函数接受一个日期(格式为YYYY-MM-DD
或自纪元以来的毫秒数)、你要添加的单位数以及你要提前的日期组件(years
、months
、days
、hours
、minutes
、seconds
或milliseconds
)。该函数以自纪元以来的毫秒数返回增加的日期。
普通话 | $datePlus("2023-02-07", 1, "天数") |
结果 | 1675814400000 |
获取两个日期之间的差异
该$diffDate()
函数接受两个日期(格式为YYYY-MM-DD
或自纪元以来的毫秒数)和每个日期的一个组成部分(years
, months
, days
, hours
, minutes
,seconds
或milliseconds
),然后返回两个日期组成部分之间的差异。
普通话 | $diffDate("2023-02-08", "2023-01-22", "天数") |
结果 | 17 |
时间和日期格式
特点 | 意义 |
---|---|
是 | 年 |
米 | 月份作为数值 |
丁 | 一个月中的某一天 |
d | 一年中的某一天 |
F | 星期几 |
W | 一年中的一周 |
w | 一个月中的一周 |
H | 小时(24 小时) |
H | 小时(12 小时) |
P | 上午/下午标记 |
米 | 分钟 |
秒 | 第二 |
F | 小数秒 |
Z | 时区 |
z | 时区但修改了使用 GMT 包含前缀作为时间偏移的位置 |
C | 日历:日历名称的名称或缩写 |
乙 | 纪元:年数基准的名称,例如君主的统治时期 |
附加到数组
该$append()
函数可以将两个数组、一个数组和一个值或两个字符串组合成一个数组。
普通话 | $append([1,2,3], [4,5,6]) |
结果 | [1,2,3,4,5,6] |
如果-那么-其他
该$boolean
值是真/假测试。第二个值是 true 的输出,最后一个值是 false 的输出。下面的示例测试该total_value
字段的值是否大于 250。由于该值大于 250,该函数返回“high-value customer”。
普通话 | $boolean(customer_info.total_value > 250) ? “高价值客户”:“不是高价值客户” |
结果 | “高价值客户” |
分区数组
该$partition()
函数将数组分解为更小的数组,并将更小的数组作为列表返回。
普通话 | $分区(付款,2) |
结果 |
|
对数组中的每个值执行操作
在此示例中,该函数从数组中的字段$map()
中获取数值,并使用该函数将它们转换为字符串。amount``payments``$string()
普通话 | $地图(输入.付款[].金额,$字符串) |
结果 | $地图(输入.付款[].金额,$字符串) |
筛选值
在此示例中,函数从数组中的字段$filter()
返回大于 40 的值。amount``payments
普通话 | $filter(input.payments[].amount,fn($v,$i,$a) { $v > 40}) |
结果 | [110.48, 110.48] |
将数组折叠为单个值
该reduce()
函数将函数应用于数组中的每个元素。在此示例中,它将数组的所有元素相加。
普通话 | $reduce(input.payments[].amount,fn($i, $j){$i + $j}) |
结果 | 281.01 |
排序数组
该$sort()
函数通过指定的函数对数组进行排序,其中$j
当前项是当前项,$i
下一项是。
普通话 | $sort(input.payments[].amount,fn($i, $j){$i < $j}) |
结果 | [110.48, 110.48, 35.56, 24.49] |
对对象中的每个值执行操作
在此示例中,$each()
函数将对象中的每个字符串值转换为大写。
普通话 | $each({"transaction_id": "inv_80394", "description": "购买20个数据"},$uppercase) |
结果 | ["INV_80394", "购买 20 个数据单元"] |