{"id":22018134,"url":"https://github.com/rvflash/awql-parser","last_synced_at":"2025-06-16T12:34:26.199Z","repository":{"id":57524332,"uuid":"74116899","full_name":"rvflash/awql-parser","owner":"rvflash","description":"AWQL parser / lexers","archived":false,"fork":false,"pushed_at":"2017-03-27T22:36:53.000Z","size":51,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T03:11:18.956Z","etag":null,"topics":["adwords-api","awql","lexer","parser","statement"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rvflash.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-18T09:49:16.000Z","updated_at":"2020-11-24T13:01:40.000Z","dependencies_parsed_at":"2022-09-26T18:11:16.565Z","dependency_job_id":null,"html_url":"https://github.com/rvflash/awql-parser","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/rvflash/awql-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvflash%2Fawql-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvflash%2Fawql-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvflash%2Fawql-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvflash%2Fawql-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rvflash","download_url":"https://codeload.github.com/rvflash/awql-parser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rvflash%2Fawql-parser/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260162833,"owners_count":22968139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adwords-api","awql","lexer","parser","statement"],"created_at":"2024-11-30T05:10:03.941Z","updated_at":"2025-06-16T12:34:26.175Z","avatar_url":"https://github.com/rvflash.png","language":"Go","readme":"# Awql Parser\n\n[![GoDoc](https://godoc.org/github.com/rvflash/awql-parser?status.svg)](https://godoc.org/github.com/rvflash/awql-parser)\n[![Build Status](https://img.shields.io/travis/rvflash/awql-parser.svg)](https://travis-ci.org/rvflash/awql-parser)\n[![Code Coverage](https://img.shields.io/codecov/c/github/rvflash/awql-parser.svg)](http://codecov.io/github/rvflash/awql-parser?branch=master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/rvflash/awql-parser)](https://goreportcard.com/report/github.com/rvflash/awql-parser)\n\n\nParser for parsing AWQL SELECT, DESCRIBE, SHOW and CREATE VIEW statements.\n \nOnly the first statement is supported by Adwords API, the others are proposed by the AWQL command line tool.\n \n## Examples\n \n### Unknown single statement.\n\n```go\nq := `SELECT CampaignId, CampaignName FROM CAMPAIGN_PERFORMANCE_REPORT;`\nstmt, _ := awql.NewParser(strings.NewReader(q)).ParseRow()\nif stmt, ok := stmt.(awql.SelectStmt); ok {\n    fmt.Println(stmt.SourceName())\n    // Output: CAMPAIGN_PERFORMANCE_REPORT\n}\n```\n\n### Select statement.\n\n```go\nq := `SELECT AdGroupName FROM ADGROUP_PERFORMANCE_REPORT;`\nstmt, _ := awql.NewParser(strings.NewReader(q)).ParseSelect()\nfmt.Printf(\"Gets the column named %v from %v.\\n\", stmt.Columns()[0].Name(), stmt.SourceName())\n// Output: Gets the column named AdGroupName from ADGROUP_PERFORMANCE_REPORT.\n```\n \n### Multiple statements.\n \n```go\nq := `SELECT CampaignName FROM CAMPAIGN_PERFORMANCE_REPORT ORDER BY 1 LIMIT 5\\GDESC ADGROUP_PERFORMANCE_REPORT AdGroupName;`\nstmts, _ := awql.NewParser(strings.NewReader(q)).Parse()\nfor _, stmt := range stmts {\n    switch stmt.(type) {\n    case awql.SelectStmt:\n        fmt.Println(stmt.(awql.SelectStmt).OrderList()[0].Name())\n    case awql.DescribeStmt:\n        fmt.Println(stmt.(awql.DescribeStmt).SourceName())\n        fmt.Println(stmt.(awql.DescribeStmt).Columns()[0].Name())\n    }\n}\n// Output:\n// CampaignName\n// ADGROUP_PERFORMANCE_REPORT\n// AdGroupName\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frvflash%2Fawql-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frvflash%2Fawql-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frvflash%2Fawql-parser/lists"}