public async Task <List <Dictionary <string, string> > > GetQueryResultsAsync(string queryExecutionId)
        {
            var items = new List <Dictionary <string, string> >();

            var getQueryResultsRequest = new GetQueryResultsRequest()
            {
                QueryExecutionId = queryExecutionId,
                MaxResults       = 1000
            };

            var client = _amazonAthenaClientFactory.Create();
            GetQueryResultsResponse getQueryResultsResponse = null;

            /* Page through results and request additional pages if available */
            do
            {
                getQueryResultsResponse = await client.GetQueryResultsAsync(getQueryResultsRequest);

                getQueryResultsResponse.EnsureSuccessStatusCode();
                /* Loop over result set and create a dictionary with column name for key and data for value */
                foreach (Row row in getQueryResultsResponse.ResultSet.Rows)
                {
                    var dict = new Dictionary <string, string>();
                    for (var i = 0; i < getQueryResultsResponse.ResultSet.ResultSetMetadata.ColumnInfo.Count; i++)
                    {
                        dict.Add(getQueryResultsResponse.ResultSet.ResultSetMetadata.ColumnInfo[i].Name, row.Data[i].VarCharValue);
                    }

                    items.Add(dict);
                }

                if (getQueryResultsResponse.NextToken != null)
                {
                    getQueryResultsRequest.NextToken = getQueryResultsResponse.NextToken;
                }
            }while (getQueryResultsResponse.NextToken != null);

            return(items);
        }