Data Source Object Queriers (Find "Top DB Accounts" of a Schema, Table, or Column)
Description
This API allows admin users to get a list of database accounts that have queried a subject.
Note:
- To enable this API, set the flag
alation.feature_flags.enable_querying_db_accounts_api
toTrue
. - This API is available in version 4.17 and later.
URL
GET
/integration/v1/**<otype>**/**<id>**/db_account/?**<params>**
Replace with any one of the following:
schema
table
attribute
Replace with the unique identifier of a subject inside Alation catalog.
Replace with your list of parameters. Multiple parameters can be combined as PARAM1&PARAM2
URL Parameters
Name | Required | Description |
---|---|---|
limit | No | Limit the number of database accounts returned. Example: /integration/v1/table/1/db_account/?limit=10 Note: The default value for this parameter is 25. |
skip | No | Skip a number of records and return the rest. limit and skip are used for pagination of the results. Example: /integration/v1/table/1/db_account/?skip=10 |
Headers
HTTP Header | Value |
---|---|
TOKEN | <your_token> |
Replace <your_token> with API Token which can be obtained from getToken API call (Get API Token).
Success Response
Content-Type: application/json
Status: 200 OK
Body
[
{
"db_account": "user_alation_dba",
"num_executions": 40,
"ts_last_query": "2017-12-08T16:45:38Z"
},
{
"db_account": "user_alation_dba2",
"num_executions": 100,
"ts_last_query": "2017-12-09T13:45:38Z"
}
]
Name | Description |
---|---|
db_account | Name of the database account. |
num_executions | Number of times queries have been executed on the subject by the database account. NOTE: This value depends on QLI and might not always represent the correct number of executions. |
ts_last_query | Timestamp of the latest query executed by the database account. NOTE: The value for this parameter has the timezone offset included. |
Note: Upon querying the objects through Alation's Compose query tool, the Query Log Ingestion (QLI) job needs to be run for the database accounts to appear in the API response.
Error Response
Invalid Token
Status: 403 FORBIDDEN
Body
{
"detail": "Authentication failed"
}
Missing Token Header
Status: 403 FORBIDDEN
Body
{
"detail": "Authentication credentials were not provided."
}
Non-admin user access
Status: 403 FORBIDDEN
Body
{
"detail": "Permission denied"
}
Code Samples
cURL
#!/bin/bash
# This is an example token. Please replace this with your token.
API_TOKEN="2abcd-4c04-4c21-8692-eda27a877f90"
BASE_URL="https://alation.yourcompany.com/integration/v1"
OTYPE="schema"
ID=1
# Get all database accounts that have queried a schema with unique identifier as 1
curl -H "TOKEN: ${API_TOKEN}" "${BASE_URL}/${OTYPE}/${ID}/db_account/"
Python
import requests
import json
# This is an example token. Please replace this with your token.
headers = {'Token': '2abcd-4c04-4c21-8692-eda27a877f90'}
otype = 'table'
id = 1
# Get all database accounts that have queried a table with unique identifier as 1
response = requests.get('https://alation.yourcompany.com/integration/v1/%s/%s/db_account/' % (otype, str(id)), headers=headers)
users = json.loads(response.text)
for user in users:
print ("DB Account: %s, ts_last_query: %s" % (user['db_account'], user['ts_last_query']))