How can i create a dataset using boto3 python

I am trying to create a dataset with boto3/python and i am having some issues.

that’s my code:

import boto3
import uuid

quicksight_client = boto3.client(‘quicksight’, region_name=‘your-region’)

aws_account_id = ‘your-aws-account-id’
dataset_name = str(uuid.uuid4())
athena_data_source_arn = ‘arn:aws:quicksight:your-region:your-aws-account-id:datasource/your-datasource-id’

athena_database = “your-athena-database”
athena_table_name = “your-athena-table”

df = wr.catalog.table(database=athena_database, table=athena_table_name)

input_columns = [
{‘Name’: row[‘Column Name’], ‘Type’: row[‘Type’].upper()} for index, row in df.iterrows()
]

type_mapping = {
‘BIGINT’: ‘INTEGER’,
‘DOUBLE’: ‘DECIMAL’,
‘STRING’: ‘STRING’,
‘TIMESTAMP’: ‘DATETIME’,
‘DATE’: ‘DATETIME’,
‘INT’: ‘INTEGER’
}

for column in input_columns:
column[‘Type’] = type_mapping.get(column[‘Type’], column[‘Type’])

physical_table_id = str(uuid.uuid4())
logical_table_id = str(uuid.uuid4())

try:
response = quicksight_client.create_data_set(
AwsAccountId=aws_account_id,
DataSetId=str(uuid.uuid4()),
Name=dataset_name,
PhysicalTableMap={
physical_table_id: {
‘CustomSql’: {
‘DataSourceArn’: athena_data_source_arn,
‘Name’: dataset_name,
‘SqlQuery’: f’select * from {athena_database}.{athena_table_name}‘,
‘Columns’: input_columns
}
}
},
LogicalTableMap={
logical_table_id: {
‘Alias’: dataset_name,
‘DataTransforms’: [
{
‘ProjectOperation’: {
‘ProjectedColumns’: [column[‘Name’] for column in input_columns]
}
}
],
‘Source’: {‘PhysicalTableId’: physical_table_id},
},
},
Permissions=[
{
‘Principal’: f’arn:aws:quicksight:{aws_region}:{aws_account_id}:user/default/YourUsername’,
‘Actions’: [‘quicksight:DeleteDataSet’,
‘quicksight:UpdateDataSetPermissions’,
‘quicksight:PutDataSetRefreshProperties’,
‘quicksight:CreateRefreshSchedule’,
‘quicksight:CancelIngestion’,
‘quicksight:PassDataSet’,
‘quicksight:DeleteRefreshSchedule’,
‘quicksight:ListRefreshSchedules’,
‘quicksight:UpdateRefreshSchedule’,
‘quicksight:DescribeDataSetRefreshProperties’,
‘quicksight:DescribeDataSet’,
‘quicksight:CreateIngestion’,
‘quicksight:DescribeRefreshSchedule’,
‘quicksight:ListIngestions’,
‘quicksight:DescribeDataSetPermissions’,
‘quicksight:UpdateDataSet’,
‘quicksight:DeleteDataSetRefreshProperties’,
‘quicksight:DescribeIngestion’
]
},
],
ImportMode=‘DIRECT_QUERY’
)

print("Dataset creado correctamente:", response['Arn'])

except quicksight_client.exceptions.ResourceExistsException as e:
print(“El dataset ya existe. Error:”, e)
except Exception as e:
print(“Error al crear el dataset:”, e)

The creation is succesfull but after when i go to the quicksight IU and trying to see any data on an analysis i have the following error.

I have checked the following documentation: create_data_set - Boto3 1.35.41 documentation

and I have compare with other dataset created manually as well with the method describe_data_set.

Kind regards.

Pablo

Hello @pablo,

Welcome to the QuickSight Community, it is great having you here!

Have you tried creating the same dataset with the same configuration from the console? Did it work correctly?

Hi @pablo,
It’s been awhile since we last heard from you, did you have any additional questions regarding your post?

If we do not hear back within the next 3 business days, I’ll go ahead and close out this topic.

Thank you!

Hi @pablo,
Since we haven’t heard back, I’ll close out this topic. However, if you have any additional questions, feel free to create a new post in the community and link this discussion for relevant information if needed.

Thank you!