
# 资源函数
本文介绍资源函数的语法规则，包括参数解释、函数示例等。
#### 函数列表
使用如下资源函数时，必须配置高级预览才能拉取到目标数据。
| **函数**                                                                                                                                    | **说明**                                                                                                                                                          |
|:---|:---|
| [res_local]    | 从当前数据加工任务中获取高级配置中的密钥信息。 支持和其他函数组合使用。          |
| [res_obs_file] | 从OBS中获取特定Bucket下的文件内容，支持定期更新数据。 支持和其他函数组合使用。 |
   
 #### res_local
使用res_local函数从当前数据加工任务获取高级配置中的密钥信息。支持和其他函数组合使用。
- **函数格式**
  ```
  res_local(param, default=None, type="auto")
  ```
  
- **参数说明**
  
  | **参数名称** | **数据类型** | **是否必填** |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  |---|---|---|---|
  | param    | String   | 是        | 对应高级参数配置中的Key。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | default  | String   | 否        | 当param参数的值不存在时，返回该参数的值，默认值为None。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
  | type     | String   | 否        | 数据输出时的数据格式。 - auto（默认值）：将原始值转化为JSON格式。如果转换失败则返回原始值。  - JSON：将原始值转化为JSON格式。如果转换失败则返回default参数的值。  - raw：返回原始值。   |
     
  
- **返回结果**
  根据参数配置，返回JSON格式数据或者原始值。
  表1成功示例 
  | 原始值                                           | 返回值                                           | 返回值类型 |
  |:---|:---|:---|
  | 1                                             | 1                                             | 整数    |
  | 1.2                                           | 1.2                                           | 浮点    |
  | true                                          | true                                          | 布尔    |
  | false                                         | false                                         | 布尔    |
  | "123"                                         | 123                                           | 字符串   |
  | null                                          | None                                          | None  |
  | \["v1", "v2", "v3"\]                          | \["v1", "v2", "v3"\]                          | 列表    |
  | \["v1", 3, 4.0\]                              | \["v1", 3, 4.0\]                              | 列表    |
  | {"v1": 100, "v2": "good"}                     | {"v1": 100, "v2": "good"}                     | 字典    |
  | {"v1": {"v11": 100, "v2": 200}, "v3": "good"} | {"v1": {"v11": 100, "v2": 200}, "v3": "good"} | 字典    |
     
  表2失败示例 
  | 原始值          | 返回值            | 说明                        |
  |:---|:---|:---|
  | (1,2,3)      | "(1,2,3)"      | 不支持元组，需使用列表形式。            |
  | True         | "True"         | 只支持true、false（小写）这两种布尔类型。 |
  | {1: 2, 3: 4} | "{1: 2, 3: 4}" | 字典的关键字只能是字符串。             |
     
  
- **函数示例**
  从高级配置的密钥参数中获取信息并赋值给local。添加密钥时的Key为endpoint，Value为hangzhou。
  - 测试数据
    ```
    {
       "content": "1"
    }
    ```
    
  
  - 加工规则
    ```
    e_set("local", res_local('endpoint'))
    ```
    
  
  - 加工结果
    ```
    content: 1
    local: hangzhou
    ```
    
   
 
 #### res_obs_file
使用res_obs_file函数从OBS Bucket中获取文件内容，并支持定期刷新。支持和其他函数组合使用。
建议日志服务Project和OBS Bucket处于同一地域，使用华为云内网获取数据。
- **函数格式**
  ```
  res_obs_file(endpoint,bucket,file)
  ```
  
- **参数说明**
  
  | **参数名称** | **数据类型** | **是否必填** |                 **说明**                  |
  |---|---|---|---|
  | endpoint | String   | 是        | OBS中保存的文件地址。如obs.cn-north-4.huawei.com  |
  | bucket   | String   | 是        | OBS中使用的桶名，如lts-dsl。                     |
  | file     | String   | 是        | 目标OBS文件的路径。例如test/data.txt，不能以正斜线（/）开头。 |
     
  
- **返回结果**
  返回字节流形式或文本形式的文件数据。
  
- **函数示例**
  1. 示例1：从OBS中拉取JSON格式的数据。
     - JSON内容
       ```
       {
         "users": [
           {
               "name": "user1",
               "login_histories": [ 
                { 
                  "date": "2019-10-10 0:0:0",
                   "login_ip": "203.0.113.10" 
                }, 
                { 
                  "date": "2019-10-10 1:0:0",
                   "login_ip": "203.0.113.10"
                 }
               ]
           },
           {   
            "name": "user2",
               "login_histories": [ 
                { 
                  "date": "2019-10-11 0:0:0", 
                  "login_ip": "203.0.113.20" 
                },
                 { 
                  "date": "2019-10-11 1:0:0", 
                  "login_ip": "203.0.113.30"
                 },
                 { 
                  "date": "2019-10-11 1:1:0", 
                  "login_ip": "203.0.113.50" 
                } 
              ] 
          }
         ]
       }
       ```
       
     
     - 测试数据
       ```
       {
         "content":"123"
       }
       ```
       
     
     - 加工规则
       ```
       e_set(
           "json_parse", 
          json_parse( 
              res_obs_file(
                   "https://obs.test.huawei.com",
                   "lts-dsl",            
                   "als_dsl.json"
               )
            ),
        )
       ```
       
     
     - 加工结果
       ```
       content: 123
           json_parse:
         '{
         "users": [
           {
               "name": "user1",
               "login_histories": [ 
                {
                   "date": "2019-10-10 0:0:0",
                   "login_ip": "203.0.113.10" 
                },
                 {
                   "date": "2019-10-10 1:0:0",
                   "login_ip": "203.0.113.10"
                 }
               ]
           },
           {
               "name": "user2",
               "login_histories": [ 
                {
                   "date": "2019-10-11 0:0:0",
                   "login_ip": "203.0.113.20"
                 },
                 {
                   "date": "2019-10-11 1:0:0",
                   "login_ip": "203.0.113.30" 
                }, 
                { 
                  "date": "2019-10-11 1:1:0", 
                  "login_ip": "203.0.113.50" 
                }
               ]
           }
         ]
       }'
       ```
       
      
  
  2. 示例2：从OBS中拉取文本内容。
     - 文本内容
       ```
       Test bytes
       ```
       
     
     - 测试数据
       ```
       {
         "content": "123"
       }
       ```
       
     
     - 加工规则
       ```
       e_set(
           "test_txt", 
          res_obs_file(
                   "https://obs.test.huawei.com", 
                   "lts-dsl",
                   "als_dsl.json" 
              )
        )
       ```
       
     
     - 加工结果
       ```
       content: 123
       test_txt: Test bytes
       ```
       
      
   
 
