in visualizeConnectData/scripts/quicksight/deploy.py [0:0]
def createDataset(
accountId,
qsUserArn,
dataSourceArn,
tableInfo,
athenaCatalog,
athenaDatabaseName,
athenaTableName,
name):
deleteDataset(accountId, name)
inputColumns = []
dataTransforms = []
for item in tableInfo:
column = {
'Name': item['name'],
'Type': item['quickSightDataType']
}
inputColumns.append(column)
if 'latitude' in item['name']:
dataTransforms.append(
{
'TagColumnOperation': {
'ColumnName': item['name'],
'Tags': [{'ColumnGeographicRole': 'LATITUDE'}]
}
}
)
elif 'longitude' in item['name']:
dataTransforms.append(
{
'TagColumnOperation': {
'ColumnName': item['name'],
'Tags': [{'ColumnGeographicRole': 'LONGITUDE'}]
}
}
)
elif 'state' in item['name']:
dataTransforms.append(
{
'TagColumnOperation': {
'ColumnName': item['name'],
'Tags': [{'ColumnGeographicRole': 'STATE'}]
}
}
)
elif 'city' in item['name'] : #need to be last because the other two contain city
dataTransforms.append(
{
'TagColumnOperation': {
'ColumnName': item['name'],
'Tags': [{'ColumnGeographicRole': 'CITY'}]
}
}
)
#Calcuated Field
dataTransforms.append(
{
'CreateColumnsOperation': {
'Columns': [
{
'ColumnName': 'QueueSLA',
'ColumnId': 'QueueSLA-ID',
'Expression': "ifelse(queue_duration < 60, 'Goal', queue_duration >= 60 and queue_duration <= 90, 'Met', 'Exceeded')"
}
]
}
}
)
cdsResp = qsClient.create_data_set(
AwsAccountId = accountId,
DataSetId = name,
Name = name,
ImportMode = 'DIRECT_QUERY',
PhysicalTableMap = {
'ctrModifiedPhysicalTable': {
'RelationalTable': {
'DataSourceArn': dataSourceArn,
'Catalog': athenaCatalog,
'Name': athenaTableName,
'Schema': athenaDatabaseName,
'InputColumns': inputColumns
}
}
},
LogicalTableMap={
'ctrModifiedLogicalTable' : {
'Alias': 'ctrModifiedLogicalTable',
'Source': {
'PhysicalTableId': 'ctrModifiedPhysicalTable'
},
'DataTransforms': dataTransforms
}
}
)
logger.info(cdsResp)
dsId = cdsResp['DataSetId']
dsArn = cdsResp['Arn']
udspResp = qsClient.update_data_set_permissions(
AwsAccountId=accountId,
DataSetId=dsId,
GrantPermissions=[
{
'Principal': qsUserArn,
'Actions': [
'quicksight:UpdateDataSetPermissions',
'quicksight:DescribeDataSet',
'quicksight:DescribeDataSetPermissions',
'quicksight:PassDataSet',
'quicksight:DescribeIngestion',
'quicksight:ListIngestions',
'quicksight:UpdateDataSet',
'quicksight:DeleteDataSet',
'quicksight:CreateIngestion',
'quicksight:CancelIngestion'
]
}
]
)
logger.info(udspResp)
return dsArn