Source code for dremio_client.util.promote
# -*- coding: utf-8 -*-
from six.moves.urllib.parse import quote
[docs]def promote_catalog(client, catalog, file_format="parquet", **kwargs):
if file_format == "parquet":
format_dict = {"type": "Parquet"}
elif file_format == "json":
format_dict = {"type": "JSON"}
elif file_format == "csv":
format_dict = {
"type": "Text",
"fieldDelimiter": kwargs.get("fieldDelimiter"),
"lineDelimiter": kwargs.get("lineDelimiter"),
"quote": kwargs.get("quote"),
"comment": kwargs.get("comment"),
"escape": kwargs.get("escape"),
"skipFirstLine": kwargs.get("skipFirstLine", True),
"extractHeader": kwargs.get("extractHeader", True),
"trimHeader": kwargs.get("trimHeader", True),
"autoGenerateColumnNames": kwargs.get("autoGenerateColumnNames", True),
}
elif file_format == "excel":
format_dict = {
"type": "Excel",
"sheetName": kwargs.get("sheetName"),
"extractHeader": kwargs.get("extractHeader", True),
"hasMergedCells": kwargs.get("hasMergedCells", True),
}
elif file_format == "xls":
format_dict = {
"type": "XLS",
"sheetName": kwargs.get("sheetName"),
"extractHeader": kwargs.get("extractHeader", True),
"hasMergedCells": kwargs.get("hasMergedCells", True),
}
else:
raise NotImplementedError("{} format is not applicable".format(file_format))
cid = quote(catalog.get().meta.id, safe="")
return promote(
client,
cid,
{
"id": cid,
"path": catalog.meta.path,
"type": "PHYSICAL_DATASET",
"entityType": "dataset",
"format": format_dict,
},
)
def promote(client, cid, json):
return client.simple().promote_catalog(cid, json)