Read Data¶
Read data by providing SQL query through the specified channel.
Prerequisites¶
Read channels are created and started in the organization.
Request Format¶
POST https://{apigw-address}/data-federation/v2.0/channels/read/{channelId}
Request Parameters (Header)¶
Name |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
Content-Type |
Mandatory |
String |
Content or file type. The default value is application/json. |
Authorization |
Mandatory |
String |
Access Token, by the format of Bearer xxx. How to get the Access Token >> |
Request Parameters (URI)¶
Name |
Location (Path/Query) |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|---|
orgId |
Query |
Mandatory |
String |
Your organization ID. How to get the orgId>> |
channelId |
Path |
Mandatory |
String |
Channel ID |
Request Parameters (Body)¶
Name |
Mandatory/Optional |
Data Type |
Description |
---|---|---|---|
sqlQuery |
Mandatory |
String |
SQL query for getting data from storage systems. |
queue |
Optional |
String |
Specify the priority of the data query job. Options are Hot, Warm, and Cold. The Hot queue has the highest priority, the Warm queue has the medium priority, and the Cold queue has the lowest priority. |
itemFormat |
Optional |
String |
Reserved parameter for specifying the format of returned JSON. This field is currently inactive. |
Response Parameters¶
Name |
Data Type |
Description |
---|---|---|
data |
List<Object> |
Data that is returned by the SQL query. For more information, see Returned Data Struct |
Returned Data Struct¶
Name |
Data Type |
Description |
---|---|---|
columns |
String |
Column name. |
metadata |
String |
Meta data. |
queryState |
String |
Data querying state. |
rows |
List<Object> |
Rows of data. For more information, see Data Row Struct |
Data Row Struct¶
Name |
Data Type |
Description |
---|---|---|
COLUMN_NAME |
String |
Column name. |
DATA_TYPE |
String |
Data type. |
IS_NULLABLE |
String |
Data type. |
Error Code¶
Sample¶
Request Sample¶
url: https://{apigw-address}/data-federation/v2.0/channels/read/{channelId}&orgId={}
method: POST
requestBody:
{
"sqlQuery": "show schemas"
}
Return Sample¶
{
"msg": "OK",
"code": 0,
"data": {
"metadata": ["VARCHAR"],
"columns": ["SCHEMA_NAME"],
"queryState": "COMPLETED",
"rows": []
}
}
Java SDK Sample¶
import com.alibaba.fastjson.JSONObject;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envision.apim.poseidon.request.PoseidonRequest;
import com.google.common.net.HttpHeaders;
import org.apache.commons.codec.binary.Hex;
import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Sample {
private static String accessKey = "AccessKey of your APP";
private static String secretKey = "SecretKey of your APP";
private static String orgId = "yourOrgId";
private static String channelId = "yourChannelId";
private static String url = "https://{domain_url}";
private static String token = "";
private static class Request extends PoseidonRequest {
public void setQueryParam(String key, Object value) {
queryEncodeParams().put(key, value);
}
public void setMethod(String method) {
this.method = method;
}
public void setBodyParams(String key, Object value) {
bodyParams().put(key, value);
}
private String method;
@Override
public String baseUri() {
return "";
}
@Override
public String method() {
return method;
}
}
public static String getToken() {
Request request = new Request();
request.setMethod("POST");
long timestamp = System.currentTimeMillis();
String temp = accessKey + timestamp + secretKey;
request.bodyParams().put("encryption", string2Sha256(temp).toLowerCase());
request.bodyParams().put("timestamp", timestamp);
request.bodyParams().put("appKey", accessKey);
try {
JSONObject response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey).debug())
.url(url + "/apim-token-service/v2.0/token/get")
.getResponse(request, JSONObject.class);
return response.getJSONObject("data").getString("accessToken");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static String string2Sha256(String str) {
MessageDigest messageDigest;
String encodeStr = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = messageDigest.digest(str.getBytes(StandardCharsets.UTF_8));
encodeStr = Hex.encodeHexString(hash);
} catch (NoSuchAlgorithmException e) {
}
return encodeStr;
}
@Test
public void ReadData() {
token = getToken();
Request request = new Request();
request.setQueryParam("orgId", orgId);
request.setMethod("POST");
request.headerParams().put(HttpHeaders.AUTHORIZATION, "Bearer " + token);
request.headerParams().put(HttpHeaders.CONTENT_TYPE, "application/json");
request.setBodyParams("sqlQuery", "show schemas");
request.setBodyParams("queue", null);
request.setBodyParams("itemFormat", null);
JSONObject response = Poseidon.config(PConfig.init().appKey(accessKey).appSecret(secretKey))
.url(url + "/data-federation/v2.0/channels/read/" + channelId)
.getResponse(request, JSONObject.class);
System.out.println(response);
}
}