feat: support findings table
Browse files- .vscode/launch.json +16 -0
- scribe_python_client/cli.py +3 -0
- scribe_python_client/client.py +13 -2
- scribe_python_client/constants.py +2 -1
.vscode/launch.json
CHANGED
|
@@ -44,6 +44,22 @@
|
|
| 44 |
"env": {
|
| 45 |
"SCRIBE_TOKEN": "${env:SCRIBE_DEV_TOKEN}",
|
| 46 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
}
|
| 48 |
|
| 49 |
]
|
|
|
|
| 44 |
"env": {
|
| 45 |
"SCRIBE_TOKEN": "${env:SCRIBE_DEV_TOKEN}",
|
| 46 |
}
|
| 47 |
+
},
|
| 48 |
+
{
|
| 49 |
+
"name": "Test findings dataset",
|
| 50 |
+
"type": "debugpy",
|
| 51 |
+
"request": "launch",
|
| 52 |
+
"module": "scribe_python_client.cli",
|
| 53 |
+
"console": "internalConsole",
|
| 54 |
+
"args": [
|
| 55 |
+
"--api-call",
|
| 56 |
+
"query-findings",
|
| 57 |
+
"--query",
|
| 58 |
+
"{\"columns\": [\"logical_app\", \"finding\"], \"filters\": [], \"orderby\": [], \"row_limit\": 10}",
|
| 59 |
+
],
|
| 60 |
+
"env": {
|
| 61 |
+
"SCRIBE_TOKEN": "${env:SCRIBE_TOKEN}",
|
| 62 |
+
}
|
| 63 |
}
|
| 64 |
|
| 65 |
]
|
scribe_python_client/cli.py
CHANGED
|
@@ -20,6 +20,7 @@ def main():
|
|
| 20 |
"query-policy-results",
|
| 21 |
"query-lineage",
|
| 22 |
"query-risk",
|
|
|
|
| 23 |
], help="Which API call to execute")
|
| 24 |
parser.add_argument("--api-token", required=False, default=os.getenv('SCRIBE_TOKEN'), help="Your API token from ScribeHub integrations page (defaults to SCRIBE_TOKEN environment variable)")
|
| 25 |
parser.add_argument("--env", default="prod", choices=["prod", "dev", "test", "ci"], help="Which environment to use")
|
|
@@ -82,6 +83,8 @@ def main():
|
|
| 82 |
# logging.info(f"Lineage graph saved to {args.lineage_graph_file}")
|
| 83 |
elif args.api_call == "query-risk":
|
| 84 |
print(client.query_risk(querystr=args.query))
|
|
|
|
|
|
|
| 85 |
|
| 86 |
if __name__ == "__main__":
|
| 87 |
main()
|
|
|
|
| 20 |
"query-policy-results",
|
| 21 |
"query-lineage",
|
| 22 |
"query-risk",
|
| 23 |
+
"query-findings",
|
| 24 |
], help="Which API call to execute")
|
| 25 |
parser.add_argument("--api-token", required=False, default=os.getenv('SCRIBE_TOKEN'), help="Your API token from ScribeHub integrations page (defaults to SCRIBE_TOKEN environment variable)")
|
| 26 |
parser.add_argument("--env", default="prod", choices=["prod", "dev", "test", "ci"], help="Which environment to use")
|
|
|
|
| 83 |
# logging.info(f"Lineage graph saved to {args.lineage_graph_file}")
|
| 84 |
elif args.api_call == "query-risk":
|
| 85 |
print(client.query_risk(querystr=args.query))
|
| 86 |
+
elif args.api_call == "query-findings":
|
| 87 |
+
print(client.query_findings(querystr=args.query))
|
| 88 |
|
| 89 |
if __name__ == "__main__":
|
| 90 |
main()
|
scribe_python_client/client.py
CHANGED
|
@@ -15,7 +15,8 @@ from .constants import (
|
|
| 15 |
SCRIBE_POLICY_DATASET,
|
| 16 |
SCRIBE_TEAM_STAT_DATASET,
|
| 17 |
SCRIBE_LINEAGE_DATASET,
|
| 18 |
-
SCRIBE_RISK_DATASET
|
|
|
|
| 19 |
)
|
| 20 |
|
| 21 |
class ScribeClient:
|
|
@@ -25,6 +26,7 @@ class ScribeClient:
|
|
| 25 |
scribe_team_stat_dataset = SCRIBE_TEAM_STAT_DATASET
|
| 26 |
scribe_lineage_dataset=SCRIBE_LINEAGE_DATASET
|
| 27 |
scribe_risk_dataset = SCRIBE_RISK_DATASET
|
|
|
|
| 28 |
|
| 29 |
def get_chache_data(self):
|
| 30 |
return {
|
|
@@ -1067,11 +1069,20 @@ class ScribeClient:
|
|
| 1067 |
return f"{title}\n{self.format_query_result_table(r)}"
|
| 1068 |
return "Error running query"
|
| 1069 |
|
| 1070 |
-
def query_risk(self, querystr, title=""
|
| 1071 |
logging.debug(f"Query risk table with: {querystr}")
|
| 1072 |
query = self.querystr_to_json(querystr)
|
| 1073 |
if query:
|
| 1074 |
r = self.query_superset(self.scribe_risk_dataset, query, time_tokens=["timestamp"])
|
| 1075 |
if r:
|
| 1076 |
return f"{title}\n{self.format_query_result_table(r)}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1077 |
return "Error running query"
|
|
|
|
| 15 |
SCRIBE_POLICY_DATASET,
|
| 16 |
SCRIBE_TEAM_STAT_DATASET,
|
| 17 |
SCRIBE_LINEAGE_DATASET,
|
| 18 |
+
SCRIBE_RISK_DATASET,
|
| 19 |
+
SCRIBE_FINDINGS_DATASET
|
| 20 |
)
|
| 21 |
|
| 22 |
class ScribeClient:
|
|
|
|
| 26 |
scribe_team_stat_dataset = SCRIBE_TEAM_STAT_DATASET
|
| 27 |
scribe_lineage_dataset=SCRIBE_LINEAGE_DATASET
|
| 28 |
scribe_risk_dataset = SCRIBE_RISK_DATASET
|
| 29 |
+
scribe_findings_dataset = SCRIBE_FINDINGS_DATASET
|
| 30 |
|
| 31 |
def get_chache_data(self):
|
| 32 |
return {
|
|
|
|
| 1069 |
return f"{title}\n{self.format_query_result_table(r)}"
|
| 1070 |
return "Error running query"
|
| 1071 |
|
| 1072 |
+
def query_risk(self, querystr, title="") -> str:
|
| 1073 |
logging.debug(f"Query risk table with: {querystr}")
|
| 1074 |
query = self.querystr_to_json(querystr)
|
| 1075 |
if query:
|
| 1076 |
r = self.query_superset(self.scribe_risk_dataset, query, time_tokens=["timestamp"])
|
| 1077 |
if r:
|
| 1078 |
return f"{title}\n{self.format_query_result_table(r)}"
|
| 1079 |
+
return "Error running query"
|
| 1080 |
+
|
| 1081 |
+
def query_findings(self, querystr, title="") -> str:
|
| 1082 |
+
logging.debug(f"Query finding table with: {querystr}")
|
| 1083 |
+
query = self.querystr_to_json(querystr)
|
| 1084 |
+
if query:
|
| 1085 |
+
r = self.query_superset(self.scribe_findings_dataset, query, time_tokens=["timestamp"])
|
| 1086 |
+
if r:
|
| 1087 |
+
return f"{title}\n{self.format_query_result_table(r)}"
|
| 1088 |
return "Error running query"
|
scribe_python_client/constants.py
CHANGED
|
@@ -3,4 +3,5 @@ SCRIBE_PRODUCTS_DATASET = "asbom_filtered"
|
|
| 3 |
SCRIBE_POLICY_DATASET = "policy_initiative"
|
| 4 |
SCRIBE_TEAM_STAT_DATASET = "MARKETING Team activity"
|
| 5 |
SCRIBE_LINEAGE_DATASET = "extended_lineage_new"
|
| 6 |
-
SCRIBE_RISK_DATASET = "product_risk_1.0"
|
|
|
|
|
|
| 3 |
SCRIBE_POLICY_DATASET = "policy_initiative"
|
| 4 |
SCRIBE_TEAM_STAT_DATASET = "MARKETING Team activity"
|
| 5 |
SCRIBE_LINEAGE_DATASET = "extended_lineage_new"
|
| 6 |
+
SCRIBE_RISK_DATASET = "product_risk_1.0"
|
| 7 |
+
SCRIBE_FINDINGS_DATASET = "Findings"
|