https://github.com/anexen/sqc
SQL queries for collections
https://github.com/anexen/sqc
linq-to-objects python query-engine
Last synced: 3 months ago
JSON representation
SQL queries for collections
- Host: GitHub
- URL: https://github.com/anexen/sqc
- Owner: Anexen
- License: mit
- Created: 2021-10-21T09:04:26.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-16T19:03:50.000Z (10 months ago)
- Last Synced: 2025-02-23T04:04:25.007Z (3 months ago)
- Topics: linq-to-objects, python, query-engine
- Language: Rust
- Homepage:
- Size: 1.7 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQC
SQL Queries to Collections
# Example
```python
ad_data = [
{"date": "2023-01-01", "campaign_id": 11, "spend": 100, "clicks": 1000},
{"date": "2023-01-02", "campaign_id": 11, "spend": 200, "clicks": 1500},
{"date": "2023-01-02", "campaign_id": 22, "spend": 150, "clicks": 1100},
{"date": "2023-01-03", "campaign_id": 22, "spend": 50, "clicks": 750},
{"date": "2023-01-04", "campaign_id": 22, "spend": 300, "clicks": 1050},
]campaign_data = [
{"id": 11, "name": "First Campaign"},
{"id": 22, "name": "Second Campaign"},
]query = """
SELECT
ad_data.campaign_id AS `Campaign ID`,
campaign_data.name AS `Campaign Name`,
SUM(spend) AS `Spend, $`,
SUM(clicks) AS `Clicks`
FROM ad_data
JOIN campaign_data
ON ad_data.campaign_id = campaign_data.id
WHERE spend >= 100
GROUP BY
ad_data.campaign_id,
campaign_data.name
"""import sqc
result = sqc.query(query, {
"ad_data": ad_data,
"campaign_data": campaign_data,
})assert result == [
{'Campaign ID': 11, 'Campaign Name': 'First Campaign', 'Spend, $': 300, 'Clicks': 2500},
{'Campaign ID': 22, 'Campaign Name': 'Second Campaign', 'Spend, $': 450, 'Clicks': 2150},
]
```# Supported features
[] `SELECT`
- [x] Wildcard, e.g. `SELECT *`
- [x] Aliases, e.g. `SELECT column AS new_name`
- [x] Escaping, e.g. `SELECT "Column name with whitespace"`
- [] `DISTINCT`
[] `WHERE`
- [x] Comparison (=, <, >, <=, >=, !=)
- [x] Arithmetic (+, -, *, /, %)
- [x] `AND`
- [x] `OR`
- [x] `NOT`
- [] `LIKE`
- [] `IS NULL`
- [] `IN`
[] `CASE .. WHEN`
[] `ORDER BY`
[] `LIMIT`
[] `OFFSET`
[] `INNER JOIN`
[] `LEFT JOIN`
[] `RIGHT JOIN`
[] `CROSS JOIN`
[] `GROUP BY`
[] `HAVING`
[] `CTE`
[] `UNION`
[] Combining Queries
- [] `UNION [ALL]`
- [] `INTERSECT [ALL]`
- [] `EXCEPT [ALL]`
[] Subqueries
[] Aggregate Functions:
[x] `COUNT`
[x] `SUM`
[] `AVG`
[] `MIN`
[] `MAX`
[] `MEAN`
[] `WEIGHTED_AVG`
[] ...
[] Window functions:
[] `ROW_NUMBER`
[] `RANK`
[] ...
[] Query Parameters, e.g. `SELECT * FROM table WHERE date > $1`
[] Nested data source
[] Prepared queries
[] UDF