操作数据(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 个数据单元"] |