Here is the code in Typescript and Python for minimal SQL calls from Functions.
Typescript v2 - SQL calling the Ontology
import { Client } from "@osdk/client";
import { SqlQueries } from "@osdk/foundry";
export default async function doSQLOntologyQuery(
client: Client, // This parameter gets populated by Foundry at runtime
prompt: string
): Promise<string> {
const sqlQuery: SqlQueries.ExecuteOntologySqlQueryRequest = {
query: "SELECT * FROM `ri.ontology.main.object-type.052d5f87-6ea0-49fe-8bca-bb2fd19e21b1`",
// parameters: Parameters;
rowLimit: 100,
dryRun: false,
};
const result: SqlQueries.QueryStatus = await SqlQueries.SqlQueries.execute(
client,
sqlQuery
);
console.log(result);
return "success";
}
Typescript v2 - SQL calling datasets
import { Client } from "@osdk/client";
import { SqlQueries } from "@osdk/foundry";
export default async function doSQLOntologyQuery(
client: Client, // This parameter gets populated by Foundry at runtime
prompt: string
): Promise<string> {
const sqlQuery: SqlQueries.ExecuteOntologySqlQueryRequest = {
query: "SELECT * FROM `ri.dataset....`",
// parameters: Parameters;
rowLimit: 100,
dryRun: false,
};
const result: SqlQueries.QueryStatus = await SqlQueries.SqlQueries.execute(
client,
sqlQuery
);
console.log(result);
return "success";
}
Python - SQL calling datasets or Ontology (in same snippet)
from foundry_sdk.v2.sql_queries.models import Parameters
from foundry_sdk.v2.sql_queries.sql_query import core
from foundry_sdk.v2.sql_queries.sql_query import SqlQueryClient
from functions.api import function
from foundry_sdk import FoundryClient
import base64
import typing
@function
def test_platform_api() -> str:
client: FoundryClient = FoundryClient()
result = client.admin.User.get("e1e95c4a-b6fd-448c-88b5-a3fd40acfaec")
return result
@function
def sqlQuery() -> str:
foundry_client: FoundryClient = FoundryClient()
sqlQueryClient: SqlQueryClient = foundry_client.sql_queries.SqlQuery
sqlQueryClient.execute(
query= "SELECT * FROM `ri.dataset.main.object-type...`",
fallback_branch_ids= ["master"],
serialization_format= "CSV",
request_timeout= core.Timeout(100),
)
sqlQueryClient.execute_ontology(
query= "SELECT * FROM `ri.ontology.main.object-type.052d5f87-6ea0-49fe-8bca-bb2fd19e21b1`",
dry_run= False,
parameters= Parameters(),
preview= True,
row_limit= 100,
request_timeout= core.Timeout(100),
)
return "test"
See https://www.palantir.com/docs/foundry/functions/platform-sdk#use-platform-apis
Unfortunately, those queries currently fail with "missingScope": "api:usage:sql-queries-execute" as this particular endpoints are not enabled to be hit from the function code repository environement.