@devrev/meerkat-node 0.0.124 → 0.0.127
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__fixtures__/test-data-with-safe-alias.js +421 -0
- package/__fixtures__/test-data-with-safe-alias.js.map +1 -1
- package/__tests__/comprehensive/synthetic/schema-setup.js +8 -0
- package/__tests__/comprehensive/synthetic/schema-setup.js.map +1 -1
- package/__tests__/comprehensive/synthetic/table-schemas.js +5 -0
- package/__tests__/comprehensive/synthetic/table-schemas.js.map +1 -1
- package/package.json +1 -1
- package/src/__fixtures__/test-data-with-safe-alias.d.ts +129 -0
- package/src/__fixtures__/test-data.d.ts +129 -0
|
@@ -1428,6 +1428,427 @@ const TEST_DATA_WITH_SAFE_ALIAS = [
|
|
|
1428
1428
|
]
|
|
1429
1429
|
}
|
|
1430
1430
|
],
|
|
1431
|
+
[
|
|
1432
|
+
{
|
|
1433
|
+
testName: 'ArrayEmpty',
|
|
1434
|
+
expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NULL) OR (len(orders__vendors) = 0))`,
|
|
1435
|
+
cubeInput: {
|
|
1436
|
+
measures: [
|
|
1437
|
+
'*'
|
|
1438
|
+
],
|
|
1439
|
+
filters: [
|
|
1440
|
+
{
|
|
1441
|
+
member: 'orders.vendors',
|
|
1442
|
+
operator: 'empty'
|
|
1443
|
+
}
|
|
1444
|
+
],
|
|
1445
|
+
dimensions: []
|
|
1446
|
+
},
|
|
1447
|
+
expectedOutput: [
|
|
1448
|
+
{
|
|
1449
|
+
order_id: 3,
|
|
1450
|
+
customer_id: '2',
|
|
1451
|
+
product_id: '3',
|
|
1452
|
+
order_date: '2022-02-01',
|
|
1453
|
+
order_amount: 25.0,
|
|
1454
|
+
orders__vendors: [],
|
|
1455
|
+
vendors: []
|
|
1456
|
+
},
|
|
1457
|
+
{
|
|
1458
|
+
order_id: 6,
|
|
1459
|
+
customer_id: '4',
|
|
1460
|
+
product_id: '2',
|
|
1461
|
+
order_date: '2022-04-01',
|
|
1462
|
+
order_amount: 45.0,
|
|
1463
|
+
orders__vendors: [],
|
|
1464
|
+
vendors: []
|
|
1465
|
+
},
|
|
1466
|
+
{
|
|
1467
|
+
order_id: 9,
|
|
1468
|
+
customer_id: '5',
|
|
1469
|
+
product_id: '2',
|
|
1470
|
+
order_date: '2022-05-05',
|
|
1471
|
+
order_amount: 85.0,
|
|
1472
|
+
orders__vendors: [],
|
|
1473
|
+
vendors: []
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
customer_id: '8',
|
|
1477
|
+
order_amount: 50,
|
|
1478
|
+
order_date: '2024-09-01T00:00:00.000Z',
|
|
1479
|
+
order_id: 14,
|
|
1480
|
+
orders__order_date: undefined,
|
|
1481
|
+
orders__vendors: null,
|
|
1482
|
+
product_id: '1',
|
|
1483
|
+
vendors: null
|
|
1484
|
+
}
|
|
1485
|
+
]
|
|
1486
|
+
}
|
|
1487
|
+
],
|
|
1488
|
+
[
|
|
1489
|
+
{
|
|
1490
|
+
testName: 'ArrayNotEmpty',
|
|
1491
|
+
expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NOT NULL) AND (len(orders__vendors) > 0))`,
|
|
1492
|
+
cubeInput: {
|
|
1493
|
+
measures: [
|
|
1494
|
+
'*'
|
|
1495
|
+
],
|
|
1496
|
+
filters: [
|
|
1497
|
+
{
|
|
1498
|
+
member: 'orders.vendors',
|
|
1499
|
+
operator: 'notEmpty'
|
|
1500
|
+
}
|
|
1501
|
+
],
|
|
1502
|
+
dimensions: []
|
|
1503
|
+
},
|
|
1504
|
+
expectedOutput: [
|
|
1505
|
+
{
|
|
1506
|
+
order_id: 1,
|
|
1507
|
+
customer_id: '1',
|
|
1508
|
+
product_id: '1',
|
|
1509
|
+
order_date: '2022-01-01',
|
|
1510
|
+
order_amount: 50.0,
|
|
1511
|
+
orders__vendors: [
|
|
1512
|
+
'myntra',
|
|
1513
|
+
'amazon',
|
|
1514
|
+
'flipkart'
|
|
1515
|
+
],
|
|
1516
|
+
vendors: [
|
|
1517
|
+
'myntra',
|
|
1518
|
+
'amazon',
|
|
1519
|
+
'flipkart'
|
|
1520
|
+
]
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
order_id: 2,
|
|
1524
|
+
customer_id: '1',
|
|
1525
|
+
product_id: '2',
|
|
1526
|
+
order_date: '2022-01-02',
|
|
1527
|
+
order_amount: 80.0,
|
|
1528
|
+
orders__vendors: [
|
|
1529
|
+
'myntra'
|
|
1530
|
+
],
|
|
1531
|
+
vendors: [
|
|
1532
|
+
'myntra'
|
|
1533
|
+
]
|
|
1534
|
+
},
|
|
1535
|
+
{
|
|
1536
|
+
order_id: 4,
|
|
1537
|
+
customer_id: '2',
|
|
1538
|
+
product_id: '1',
|
|
1539
|
+
order_date: '2022-03-01',
|
|
1540
|
+
order_amount: 75.0,
|
|
1541
|
+
orders__vendors: [
|
|
1542
|
+
'flipkart'
|
|
1543
|
+
],
|
|
1544
|
+
vendors: [
|
|
1545
|
+
'flipkart'
|
|
1546
|
+
]
|
|
1547
|
+
},
|
|
1548
|
+
{
|
|
1549
|
+
order_id: 5,
|
|
1550
|
+
customer_id: '3',
|
|
1551
|
+
product_id: '1',
|
|
1552
|
+
order_date: '2022-03-02',
|
|
1553
|
+
order_amount: 100.0,
|
|
1554
|
+
orders__vendors: [
|
|
1555
|
+
'myntra',
|
|
1556
|
+
'amazon',
|
|
1557
|
+
'flipkart'
|
|
1558
|
+
],
|
|
1559
|
+
vendors: [
|
|
1560
|
+
'myntra',
|
|
1561
|
+
'amazon',
|
|
1562
|
+
'flipkart'
|
|
1563
|
+
]
|
|
1564
|
+
},
|
|
1565
|
+
{
|
|
1566
|
+
order_id: 7,
|
|
1567
|
+
customer_id: '4',
|
|
1568
|
+
product_id: '3',
|
|
1569
|
+
order_date: '2022-05-01',
|
|
1570
|
+
order_amount: 90.0,
|
|
1571
|
+
orders__vendors: [
|
|
1572
|
+
'myntra',
|
|
1573
|
+
'flipkart'
|
|
1574
|
+
],
|
|
1575
|
+
vendors: [
|
|
1576
|
+
'myntra',
|
|
1577
|
+
'flipkart'
|
|
1578
|
+
]
|
|
1579
|
+
},
|
|
1580
|
+
{
|
|
1581
|
+
order_id: 8,
|
|
1582
|
+
customer_id: '5',
|
|
1583
|
+
product_id: '1',
|
|
1584
|
+
order_date: '2022-05-02',
|
|
1585
|
+
order_amount: 65.0,
|
|
1586
|
+
orders__vendors: [
|
|
1587
|
+
'amazon',
|
|
1588
|
+
'flipkart'
|
|
1589
|
+
],
|
|
1590
|
+
vendors: [
|
|
1591
|
+
'amazon',
|
|
1592
|
+
'flipkart'
|
|
1593
|
+
]
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
order_id: 10,
|
|
1597
|
+
customer_id: '6',
|
|
1598
|
+
product_id: '3',
|
|
1599
|
+
order_date: '2022-06-01',
|
|
1600
|
+
order_amount: 120.0,
|
|
1601
|
+
orders__vendors: [
|
|
1602
|
+
'myntra',
|
|
1603
|
+
'amazon'
|
|
1604
|
+
],
|
|
1605
|
+
vendors: [
|
|
1606
|
+
'myntra',
|
|
1607
|
+
'amazon'
|
|
1608
|
+
]
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
customer_id: '6aa6',
|
|
1612
|
+
order_amount: 0,
|
|
1613
|
+
order_date: '2024-06-01T00:00:00.000Z',
|
|
1614
|
+
order_id: 11,
|
|
1615
|
+
orders__order_date: undefined,
|
|
1616
|
+
orders__vendors: [
|
|
1617
|
+
'amazon'
|
|
1618
|
+
],
|
|
1619
|
+
product_id: '3',
|
|
1620
|
+
vendors: [
|
|
1621
|
+
'amazon'
|
|
1622
|
+
]
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
customer_id: null,
|
|
1626
|
+
order_amount: 100,
|
|
1627
|
+
order_date: '2024-07-01T00:00:00.000Z',
|
|
1628
|
+
order_id: 12,
|
|
1629
|
+
orders__order_date: undefined,
|
|
1630
|
+
orders__vendors: [
|
|
1631
|
+
'flipkart'
|
|
1632
|
+
],
|
|
1633
|
+
product_id: '3',
|
|
1634
|
+
vendors: [
|
|
1635
|
+
'flipkart'
|
|
1636
|
+
]
|
|
1637
|
+
},
|
|
1638
|
+
{
|
|
1639
|
+
customer_id: '7',
|
|
1640
|
+
order_amount: 100,
|
|
1641
|
+
order_date: '2024-08-01T00:00:00.000Z',
|
|
1642
|
+
order_id: 13,
|
|
1643
|
+
orders__order_date: undefined,
|
|
1644
|
+
orders__vendors: [
|
|
1645
|
+
"swiggy's"
|
|
1646
|
+
],
|
|
1647
|
+
product_id: '6',
|
|
1648
|
+
vendors: [
|
|
1649
|
+
"swiggy's"
|
|
1650
|
+
]
|
|
1651
|
+
}
|
|
1652
|
+
]
|
|
1653
|
+
}
|
|
1654
|
+
],
|
|
1655
|
+
[
|
|
1656
|
+
{
|
|
1657
|
+
testName: 'ArrayEmpty on non-array column falls back to IS NULL',
|
|
1658
|
+
expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NULL)`,
|
|
1659
|
+
cubeInput: {
|
|
1660
|
+
measures: [
|
|
1661
|
+
'*'
|
|
1662
|
+
],
|
|
1663
|
+
filters: [
|
|
1664
|
+
{
|
|
1665
|
+
member: 'orders.customer_id',
|
|
1666
|
+
operator: 'empty'
|
|
1667
|
+
}
|
|
1668
|
+
],
|
|
1669
|
+
dimensions: []
|
|
1670
|
+
},
|
|
1671
|
+
expectedOutput: [
|
|
1672
|
+
{
|
|
1673
|
+
customer_id: null,
|
|
1674
|
+
order_amount: 100,
|
|
1675
|
+
order_date: '2024-07-01T00:00:00.000Z',
|
|
1676
|
+
order_id: 12,
|
|
1677
|
+
orders__customer_id: null,
|
|
1678
|
+
orders__order_date: undefined,
|
|
1679
|
+
product_id: '3',
|
|
1680
|
+
vendors: [
|
|
1681
|
+
'flipkart'
|
|
1682
|
+
]
|
|
1683
|
+
}
|
|
1684
|
+
]
|
|
1685
|
+
}
|
|
1686
|
+
],
|
|
1687
|
+
[
|
|
1688
|
+
{
|
|
1689
|
+
testName: 'ArrayNotEmpty on non-array column falls back to IS NOT NULL',
|
|
1690
|
+
expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NOT NULL)`,
|
|
1691
|
+
cubeInput: {
|
|
1692
|
+
measures: [
|
|
1693
|
+
'*'
|
|
1694
|
+
],
|
|
1695
|
+
filters: [
|
|
1696
|
+
{
|
|
1697
|
+
member: 'orders.customer_id',
|
|
1698
|
+
operator: 'notEmpty'
|
|
1699
|
+
}
|
|
1700
|
+
],
|
|
1701
|
+
dimensions: []
|
|
1702
|
+
},
|
|
1703
|
+
expectedOutput: [
|
|
1704
|
+
{
|
|
1705
|
+
order_id: 1,
|
|
1706
|
+
customer_id: '1',
|
|
1707
|
+
orders__customer_id: '1',
|
|
1708
|
+
product_id: '1',
|
|
1709
|
+
order_date: '2022-01-01',
|
|
1710
|
+
order_amount: 50.0,
|
|
1711
|
+
vendors: [
|
|
1712
|
+
'myntra',
|
|
1713
|
+
'amazon',
|
|
1714
|
+
'flipkart'
|
|
1715
|
+
]
|
|
1716
|
+
},
|
|
1717
|
+
{
|
|
1718
|
+
order_id: 2,
|
|
1719
|
+
customer_id: '1',
|
|
1720
|
+
orders__customer_id: '1',
|
|
1721
|
+
product_id: '2',
|
|
1722
|
+
order_date: '2022-01-02',
|
|
1723
|
+
order_amount: 80.0,
|
|
1724
|
+
vendors: [
|
|
1725
|
+
'myntra'
|
|
1726
|
+
]
|
|
1727
|
+
},
|
|
1728
|
+
{
|
|
1729
|
+
order_id: 3,
|
|
1730
|
+
customer_id: '2',
|
|
1731
|
+
orders__customer_id: '2',
|
|
1732
|
+
product_id: '3',
|
|
1733
|
+
order_date: '2022-02-01',
|
|
1734
|
+
order_amount: 25.0,
|
|
1735
|
+
vendors: []
|
|
1736
|
+
},
|
|
1737
|
+
{
|
|
1738
|
+
order_id: 4,
|
|
1739
|
+
customer_id: '2',
|
|
1740
|
+
orders__customer_id: '2',
|
|
1741
|
+
product_id: '1',
|
|
1742
|
+
order_date: '2022-03-01',
|
|
1743
|
+
order_amount: 75.0,
|
|
1744
|
+
vendors: [
|
|
1745
|
+
'flipkart'
|
|
1746
|
+
]
|
|
1747
|
+
},
|
|
1748
|
+
{
|
|
1749
|
+
order_id: 5,
|
|
1750
|
+
customer_id: '3',
|
|
1751
|
+
orders__customer_id: '3',
|
|
1752
|
+
product_id: '1',
|
|
1753
|
+
order_date: '2022-03-02',
|
|
1754
|
+
order_amount: 100.0,
|
|
1755
|
+
vendors: [
|
|
1756
|
+
'myntra',
|
|
1757
|
+
'amazon',
|
|
1758
|
+
'flipkart'
|
|
1759
|
+
]
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
order_id: 6,
|
|
1763
|
+
customer_id: '4',
|
|
1764
|
+
orders__customer_id: '4',
|
|
1765
|
+
product_id: '2',
|
|
1766
|
+
order_date: '2022-04-01',
|
|
1767
|
+
order_amount: 45.0,
|
|
1768
|
+
vendors: []
|
|
1769
|
+
},
|
|
1770
|
+
{
|
|
1771
|
+
order_id: 7,
|
|
1772
|
+
customer_id: '4',
|
|
1773
|
+
orders__customer_id: '4',
|
|
1774
|
+
product_id: '3',
|
|
1775
|
+
order_date: '2022-05-01',
|
|
1776
|
+
order_amount: 90.0,
|
|
1777
|
+
vendors: [
|
|
1778
|
+
'myntra',
|
|
1779
|
+
'flipkart'
|
|
1780
|
+
]
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
order_id: 8,
|
|
1784
|
+
customer_id: '5',
|
|
1785
|
+
orders__customer_id: '5',
|
|
1786
|
+
product_id: '1',
|
|
1787
|
+
order_date: '2022-05-02',
|
|
1788
|
+
order_amount: 65.0,
|
|
1789
|
+
vendors: [
|
|
1790
|
+
'amazon',
|
|
1791
|
+
'flipkart'
|
|
1792
|
+
]
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
order_id: 9,
|
|
1796
|
+
customer_id: '5',
|
|
1797
|
+
orders__customer_id: '5',
|
|
1798
|
+
product_id: '2',
|
|
1799
|
+
order_date: '2022-05-05',
|
|
1800
|
+
order_amount: 85.0,
|
|
1801
|
+
vendors: []
|
|
1802
|
+
},
|
|
1803
|
+
{
|
|
1804
|
+
order_id: 10,
|
|
1805
|
+
customer_id: '6',
|
|
1806
|
+
orders__customer_id: '6',
|
|
1807
|
+
product_id: '3',
|
|
1808
|
+
order_date: '2022-06-01',
|
|
1809
|
+
order_amount: 120.0,
|
|
1810
|
+
vendors: [
|
|
1811
|
+
'myntra',
|
|
1812
|
+
'amazon'
|
|
1813
|
+
]
|
|
1814
|
+
},
|
|
1815
|
+
{
|
|
1816
|
+
customer_id: '6aa6',
|
|
1817
|
+
order_amount: 0,
|
|
1818
|
+
order_date: '2024-06-01T00:00:00.000Z',
|
|
1819
|
+
order_id: 11,
|
|
1820
|
+
orders__customer_id: '6aa6',
|
|
1821
|
+
orders__order_date: undefined,
|
|
1822
|
+
product_id: '3',
|
|
1823
|
+
vendors: [
|
|
1824
|
+
'amazon'
|
|
1825
|
+
]
|
|
1826
|
+
},
|
|
1827
|
+
{
|
|
1828
|
+
customer_id: '7',
|
|
1829
|
+
order_amount: 100,
|
|
1830
|
+
order_date: '2024-08-01T00:00:00.000Z',
|
|
1831
|
+
order_id: 13,
|
|
1832
|
+
orders__customer_id: '7',
|
|
1833
|
+
orders__order_date: undefined,
|
|
1834
|
+
product_id: '6',
|
|
1835
|
+
vendors: [
|
|
1836
|
+
"swiggy's"
|
|
1837
|
+
]
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
customer_id: '8',
|
|
1841
|
+
order_amount: 50,
|
|
1842
|
+
order_date: '2024-09-01T00:00:00.000Z',
|
|
1843
|
+
order_id: 14,
|
|
1844
|
+
orders__customer_id: '8',
|
|
1845
|
+
orders__order_date: undefined,
|
|
1846
|
+
product_id: '1',
|
|
1847
|
+
vendors: null
|
|
1848
|
+
}
|
|
1849
|
+
]
|
|
1850
|
+
}
|
|
1851
|
+
],
|
|
1431
1852
|
[
|
|
1432
1853
|
{
|
|
1433
1854
|
testName: 'In filter with number[] values',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../meerkat-node/src/__fixtures__/test-data-with-safe-alias.ts"],"sourcesContent":["export const TEST_DATA_WITH_SAFE_ALIAS = [\n [\n {\n testName: 'GroupBySQLInnerQuery',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__order_month FROM (SELECT DATE_TRUNC('month', order_date) AS orders__order_month, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__order_month LIMIT 1`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.order_month'],\n limit: 1,\n },\n expectedOutput: [\n {\n orders__order_month: '2022-01-01T00:00:00.000Z',\n orders__total_order_amount: 130,\n },\n ],\n },\n ],\n [\n {\n testName: 'GroupBy',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__customer_id ORDER BY orders__total_order_amount ASC, orders__customer_id ASC`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.customer_id'],\n order: {\n 'orders.total_order_amount': 'asc',\n 'orders.customer_id': 'asc',\n },\n },\n expectedOutput: [\n {\n orders__customer_id: '6aa6',\n orders__total_order_amount: 0,\n },\n {\n orders__customer_id: '8',\n orders__total_order_amount: 50,\n },\n {\n orders__customer_id: '2',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '3',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '7',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: null,\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '6',\n orders__total_order_amount: 120,\n },\n {\n orders__customer_id: '1',\n orders__total_order_amount: 130,\n },\n {\n orders__customer_id: '4',\n orders__total_order_amount: 135,\n },\n {\n orders__customer_id: '5',\n orders__total_order_amount: 150,\n },\n ],\n },\n ],\n [\n {\n testName: 'Equals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'Equals for multiple values',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id = '1') AND (orders__customer_id = '2'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1', '2'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [],\n },\n ],\n [\n {\n testName: 'NotEquals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id != '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEquals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n order_id: 13,\n customer_id: '7',\n orders__customer_id: '7',\n product_id: '6',\n order_date: '2024-08-01',\n order_amount: 100.0,\n vendors: [\"swiggy's\"],\n },\n {\n order_id: 14,\n customer_id: '8',\n orders__customer_id: '8',\n product_id: '1',\n order_date: '2024-09-01',\n order_amount: 50.0,\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'Contains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id ~~* '%aa%')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'contains',\n values: ['aa'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotContains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id !~~ '%1%') AND (orders__customer_id !~~ '%2%') AND (orders__customer_id !~~ '%3%') AND (orders__customer_id !~~ '%4%') AND (orders__customer_id !~~ '%5%') AND (orders__customer_id !~~ '%aa%'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['1'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['2'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['3'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['4'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['5'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['aa'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__customer_id: '7',\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__customer_id: '8',\n orders__order_date: undefined,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'GreaterThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount > 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'LessThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount < 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'lt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n orders__order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'InDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n orders__order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n orders__order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotInDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date < '2022-02-01') OR (orders__order_date > '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'notInDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__order_date: '2022-01-01',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_date: '2022-01-02',\n vendors: ['myntra'],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n orders__order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n orders__order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: '2024-07-01T00:00:00.000Z',\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: '2024-08-01T00:00:00.000Z',\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: '2024-09-01T00:00:00.000Z',\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n // {\n // testName: 'Or',\n // expectedSQL: `SELECT orders.* FROM (select * from orders) AS orders WHERE ((orders.order_amount > 80) OR ((orders.order_date >= '2022-02-01') AND (orders.order_date <= '2022-03-01')))`,\n // cubeInput: {\n // measures: ['*'],\n // filters: [\n // {\n // or: [\n // {\n // member: 'orders.order_amount',\n // operator: 'gt',\n // values: ['80'],\n // },\n // {\n // member: 'orders.order_date',\n // operator: 'inDateRange',\n // values: ['2022-02-01', '2022-03-01'],\n // },\n // ],\n // },\n // ],\n // dimensions: [],\n // },\n // expectedOutput: [\n // {\n // order_id: 3,\n // customer_id: '2',\n // product_id: '3',\n // order_date: '2022-02-01',\n // order_amount: 25.0,\n // },\n // {\n // order_id: 4,\n // customer_id: '2',\n // product_id: '1',\n // order_date: '2022-03-01',\n // order_amount: 75.0,\n // },\n // {\n // order_id: 5,\n // customer_id: '3',\n // product_id: '1',\n // order_date: '2022-03-02',\n // order_amount: 100.0,\n // },\n // {\n // order_id: 7,\n // customer_id: '4',\n // product_id: '3',\n // order_date: '2022-05-01',\n // order_amount: 90.0,\n // },\n // {\n // order_id: 9,\n // customer_id: '5',\n // product_id: '2',\n // order_date: '2022-05-05',\n // order_amount: 85.0,\n // },\n // {\n // order_id: 10,\n // customer_id: '6',\n // product_id: '3',\n // order_date: '2022-06-01',\n // order_amount: 120.0,\n // },\n // ],\n // },\n [\n {\n testName: 'And',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount > 50) AND ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-06-01')))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-06-01'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n orders__order_date: '2022-03-01',\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65,\n orders__order_amount: 65,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Set',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount IS NOT NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'set',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_amount: 25,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__order_amount: 90,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__order_amount: 120,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__order_amount: 0,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not Set',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IS NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notSet',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n orders__customer_id: null,\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IN ('1', '2')) AND (orders__vendors && (ARRAY['myntra', 'amazon'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'in',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'in',\n values: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '1',\n order_amount: 50,\n order_date: '2022-01-01T00:00:00.000Z',\n order_id: 1,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n product_id: '1',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n customer_id: '1',\n order_amount: 80,\n order_date: '2022-01-02T00:00:00.000Z',\n order_id: 2,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra'],\n product_id: '2',\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'In with single quotes',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors && (ARRAY['swiggy''s'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.vendors',\n operator: 'in',\n values: [\"swiggy's\"],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE (((orders__customer_id NOT IN ('1', '2')) OR (orders__customer_id IS NULL)) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notIn',\n values: ['1', '2'],\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__customer_id: '4',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__customer_id: '6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__customer_id: '6aa6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__customer_id: null,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n {\n testName: 'Not In for array type',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((NOT (orders__vendors && (ARRAY['myntra', 'amazon']))) OR (orders__vendors IS NULL))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'notIn',\n values: ['myntra', 'amazon'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '2',\n order_amount: 75,\n order_date: '2022-03-01T00:00:00.000Z',\n order_id: 4,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '1',\n vendors: ['flipkart'],\n },\n {\n customer_id: '4',\n order_amount: 45,\n order_date: '2022-04-01T00:00:00.000Z',\n order_id: 6,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: '5',\n order_amount: 85,\n order_date: '2022-05-05T00:00:00.000Z',\n order_id: 9,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: undefined,\n orders__vendors: null,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'In filter with number[] values',\n expectedSQL: `SELECT orders.* FROM (SELECT order_id AS orders__order_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_id IN (1, 2, 3))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_id',\n operator: 'in',\n values: [1, 2, 3],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n orders__order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n orders__order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 3,\n orders__order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n ],\n },\n ],\n];\n"],"names":["TEST_DATA_WITH_SAFE_ALIAS","testName","expectedSQL","cubeInput","measures","filters","dimensions","limit","expectedOutput","orders__order_month","orders__total_order_amount","order","orders__customer_id","member","operator","values","order_id","customer_id","product_id","order_date","order_amount","vendors","and","orders__order_date","undefined","orders__order_amount","orders__product_id","orders__vendors","orders__order_id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../meerkat-node/src/__fixtures__/test-data-with-safe-alias.ts"],"sourcesContent":["export const TEST_DATA_WITH_SAFE_ALIAS = [\n [\n {\n testName: 'GroupBySQLInnerQuery',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__order_month FROM (SELECT DATE_TRUNC('month', order_date) AS orders__order_month, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__order_month LIMIT 1`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.order_month'],\n limit: 1,\n },\n expectedOutput: [\n {\n orders__order_month: '2022-01-01T00:00:00.000Z',\n orders__total_order_amount: 130,\n },\n ],\n },\n ],\n [\n {\n testName: 'GroupBy',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__customer_id ORDER BY orders__total_order_amount ASC, orders__customer_id ASC`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.customer_id'],\n order: {\n 'orders.total_order_amount': 'asc',\n 'orders.customer_id': 'asc',\n },\n },\n expectedOutput: [\n {\n orders__customer_id: '6aa6',\n orders__total_order_amount: 0,\n },\n {\n orders__customer_id: '8',\n orders__total_order_amount: 50,\n },\n {\n orders__customer_id: '2',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '3',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '7',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: null,\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '6',\n orders__total_order_amount: 120,\n },\n {\n orders__customer_id: '1',\n orders__total_order_amount: 130,\n },\n {\n orders__customer_id: '4',\n orders__total_order_amount: 135,\n },\n {\n orders__customer_id: '5',\n orders__total_order_amount: 150,\n },\n ],\n },\n ],\n [\n {\n testName: 'Equals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'Equals for multiple values',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id = '1') AND (orders__customer_id = '2'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1', '2'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [],\n },\n ],\n [\n {\n testName: 'NotEquals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id != '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEquals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n order_id: 13,\n customer_id: '7',\n orders__customer_id: '7',\n product_id: '6',\n order_date: '2024-08-01',\n order_amount: 100.0,\n vendors: [\"swiggy's\"],\n },\n {\n order_id: 14,\n customer_id: '8',\n orders__customer_id: '8',\n product_id: '1',\n order_date: '2024-09-01',\n order_amount: 50.0,\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'Contains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id ~~* '%aa%')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'contains',\n values: ['aa'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotContains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id !~~ '%1%') AND (orders__customer_id !~~ '%2%') AND (orders__customer_id !~~ '%3%') AND (orders__customer_id !~~ '%4%') AND (orders__customer_id !~~ '%5%') AND (orders__customer_id !~~ '%aa%'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['1'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['2'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['3'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['4'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['5'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['aa'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__customer_id: '7',\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__customer_id: '8',\n orders__order_date: undefined,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'GreaterThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount > 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'LessThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount < 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'lt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n orders__order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'InDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n orders__order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n orders__order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotInDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date < '2022-02-01') OR (orders__order_date > '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'notInDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__order_date: '2022-01-01',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_date: '2022-01-02',\n vendors: ['myntra'],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n orders__order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n orders__order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: '2024-07-01T00:00:00.000Z',\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: '2024-08-01T00:00:00.000Z',\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: '2024-09-01T00:00:00.000Z',\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n // {\n // testName: 'Or',\n // expectedSQL: `SELECT orders.* FROM (select * from orders) AS orders WHERE ((orders.order_amount > 80) OR ((orders.order_date >= '2022-02-01') AND (orders.order_date <= '2022-03-01')))`,\n // cubeInput: {\n // measures: ['*'],\n // filters: [\n // {\n // or: [\n // {\n // member: 'orders.order_amount',\n // operator: 'gt',\n // values: ['80'],\n // },\n // {\n // member: 'orders.order_date',\n // operator: 'inDateRange',\n // values: ['2022-02-01', '2022-03-01'],\n // },\n // ],\n // },\n // ],\n // dimensions: [],\n // },\n // expectedOutput: [\n // {\n // order_id: 3,\n // customer_id: '2',\n // product_id: '3',\n // order_date: '2022-02-01',\n // order_amount: 25.0,\n // },\n // {\n // order_id: 4,\n // customer_id: '2',\n // product_id: '1',\n // order_date: '2022-03-01',\n // order_amount: 75.0,\n // },\n // {\n // order_id: 5,\n // customer_id: '3',\n // product_id: '1',\n // order_date: '2022-03-02',\n // order_amount: 100.0,\n // },\n // {\n // order_id: 7,\n // customer_id: '4',\n // product_id: '3',\n // order_date: '2022-05-01',\n // order_amount: 90.0,\n // },\n // {\n // order_id: 9,\n // customer_id: '5',\n // product_id: '2',\n // order_date: '2022-05-05',\n // order_amount: 85.0,\n // },\n // {\n // order_id: 10,\n // customer_id: '6',\n // product_id: '3',\n // order_date: '2022-06-01',\n // order_amount: 120.0,\n // },\n // ],\n // },\n [\n {\n testName: 'And',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount > 50) AND ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-06-01')))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-06-01'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n orders__order_date: '2022-03-01',\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65,\n orders__order_amount: 65,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Set',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount IS NOT NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'set',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_amount: 25,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__order_amount: 90,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__order_amount: 120,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__order_amount: 0,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not Set',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IS NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notSet',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n orders__customer_id: null,\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IN ('1', '2')) AND (orders__vendors && (ARRAY['myntra', 'amazon'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'in',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'in',\n values: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '1',\n order_amount: 50,\n order_date: '2022-01-01T00:00:00.000Z',\n order_id: 1,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n product_id: '1',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n customer_id: '1',\n order_amount: 80,\n order_date: '2022-01-02T00:00:00.000Z',\n order_id: 2,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra'],\n product_id: '2',\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'In with single quotes',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors && (ARRAY['swiggy''s'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.vendors',\n operator: 'in',\n values: [\"swiggy's\"],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE (((orders__customer_id NOT IN ('1', '2')) OR (orders__customer_id IS NULL)) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notIn',\n values: ['1', '2'],\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__customer_id: '4',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__customer_id: '6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__customer_id: '6aa6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__customer_id: null,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n {\n testName: 'Not In for array type',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((NOT (orders__vendors && (ARRAY['myntra', 'amazon']))) OR (orders__vendors IS NULL))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'notIn',\n values: ['myntra', 'amazon'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '2',\n order_amount: 75,\n order_date: '2022-03-01T00:00:00.000Z',\n order_id: 4,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '1',\n vendors: ['flipkart'],\n },\n {\n customer_id: '4',\n order_amount: 45,\n order_date: '2022-04-01T00:00:00.000Z',\n order_id: 6,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: '5',\n order_amount: 85,\n order_date: '2022-05-05T00:00:00.000Z',\n order_id: 9,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: undefined,\n orders__vendors: null,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayEmpty',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NULL) OR (len(orders__vendors) = 0))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'empty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__vendors: [],\n vendors: [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__vendors: [],\n vendors: [],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__vendors: [],\n vendors: [],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: undefined,\n orders__vendors: null,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayNotEmpty',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NOT NULL) AND (len(orders__vendors) > 0))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'notEmpty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__vendors: ['myntra'],\n vendors: ['myntra'],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__vendors: ['flipkart'],\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__vendors: ['myntra', 'flipkart'],\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__vendors: ['amazon', 'flipkart'],\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__vendors: ['myntra', 'amazon'],\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__order_date: undefined,\n orders__vendors: ['amazon'],\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayEmpty on non-array column falls back to IS NULL',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NULL)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'empty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__customer_id: null,\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayNotEmpty on non-array column falls back to IS NOT NULL',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NOT NULL)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEmpty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__customer_id: '6aa6',\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__customer_id: '7',\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__customer_id: '8',\n orders__order_date: undefined,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'In filter with number[] values',\n expectedSQL: `SELECT orders.* FROM (SELECT order_id AS orders__order_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_id IN (1, 2, 3))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_id',\n operator: 'in',\n values: [1, 2, 3],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n orders__order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n orders__order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 3,\n orders__order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n ],\n },\n ],\n];\n"],"names":["TEST_DATA_WITH_SAFE_ALIAS","testName","expectedSQL","cubeInput","measures","filters","dimensions","limit","expectedOutput","orders__order_month","orders__total_order_amount","order","orders__customer_id","member","operator","values","order_id","customer_id","product_id","order_date","order_amount","vendors","and","orders__order_date","undefined","orders__order_amount","orders__product_id","orders__vendors","orders__order_id"],"mappings":"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"}
|
|
@@ -125,6 +125,14 @@ async function createFactAllTypesTable() {
|
|
|
125
125
|
WHEN i % 5 = 1 THEN ARRAY['part_' || (i % 500)]
|
|
126
126
|
ELSE ARRAY[]::VARCHAR[]
|
|
127
127
|
END AS part_ids,
|
|
128
|
+
|
|
129
|
+
-- Number arrays (INTEGER[])
|
|
130
|
+
CASE
|
|
131
|
+
WHEN i % 4 = 0 THEN ARRAY[1, 2, 3]
|
|
132
|
+
WHEN i % 4 = 1 THEN ARRAY[2, 4]
|
|
133
|
+
WHEN i % 4 = 2 THEN ARRAY[1, 5]
|
|
134
|
+
ELSE ARRAY[]::INTEGER[]
|
|
135
|
+
END AS score_ids,
|
|
128
136
|
|
|
129
137
|
-- JSON-like VARCHAR (to test JSON extraction)
|
|
130
138
|
'{"severity_id": ' || ((i % 5) + 1) || ', "impact": "' ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/schema-setup.ts"],"sourcesContent":["/**\n * Synthetic Schema Setup\n * \n * Creates comprehensive test tables with 1M+ rows covering all data types\n * and patterns used in production Meerkat queries.\n */\n\nimport { duckdbExec } from '../../../duckdb-exec';\n\n/**\n * Create the comprehensive fact_all_types table\n * This table contains ~100 columns covering all normalized DB types\n */\nexport async function createFactAllTypesTable(): Promise<void> {\n console.log('Creating fact_all_types table with 1M rows...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS fact_all_types AS\n SELECT\n -- Keys/IDs\n i AS id_bigint,\n 'inc_' || (i % 100000) AS incident_id,\n 'user_' || (i % 10000) AS user_id,\n 'part_' || (i % 5000) AS part_id,\n \n -- Numeric types: BIGINT\n CAST(i * 10 AS BIGINT) AS metric_bigint,\n CAST((i % 1000) AS BIGINT) AS small_bigint,\n \n -- Numeric types: NUMERIC/DECIMAL\n CAST((i % 1000) / 10.0 AS DECIMAL(18,2)) AS metric_numeric,\n CAST((i % 10000) / 100.0 AS DECIMAL(18,4)) AS precise_numeric,\n \n -- Numeric types: DOUBLE/FLOAT\n (i % 1000) / 3.0 AS metric_double,\n (i % 1000) * 1.5 AS metric_float,\n \n -- Boolean\n (i % 10 = 0) AS is_deleted,\n (i % 3 = 0) AS flag_boolean,\n -- Use a different modulus base to avoid correlation with status buckets.\n ((CAST(i / 3 AS BIGINT)) % 2 = 0) AS is_active,\n CASE WHEN i % 7 = 0 THEN NULL ELSE CAST(i % 10000 AS BIGINT) END AS resolved_by,\n \n -- Strings/enums (VARCHAR)\n CASE (i % 5)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n WHEN 2 THEN 'low'\n WHEN 3 THEN 'critical'\n ELSE 'unknown'\n END AS priority,\n \n CASE (i % 4)\n WHEN 0 THEN 'open'\n WHEN 1 THEN 'in_progress'\n WHEN 2 THEN 'resolved'\n ELSE 'closed'\n END AS status,\n \n CASE (i % 3)\n WHEN 0 THEN 'P0'\n WHEN 1 THEN 'P1'\n ELSE 'P2'\n END AS severity_label,\n \n CASE (i % 4)\n WHEN 0 THEN 'production'\n WHEN 1 THEN 'staging'\n WHEN 2 THEN 'development'\n ELSE 'test'\n END AS environment,\n \n 'Title ' || i AS title,\n 'Test description for incident ' || i AS description,\n \n -- Dates (cast to INTEGER for date arithmetic)\n -- Using % 1460 for ~4 year cycle, % 366 for full year including leap day\n DATE '2020-01-01' + CAST((i % 1460) AS INTEGER) AS record_date,\n DATE '2020-01-01' + CAST((i % 366) AS INTEGER) AS created_date,\n DATE '2020-01-01' + CAST(((i + 30) % 1460) AS INTEGER) AS mitigated_date,\n DATE '2019-01-01' + CAST((i % 730) AS INTEGER) AS partition_record_date,\n \n -- Timestamps\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY + INTERVAL (CAST((i % 86400) AS INTEGER)) SECOND AS created_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST(((i + 100) % 1460) AS INTEGER)) DAY AS identified_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 366) AS INTEGER)) DAY AS deployment_time,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY AS partition_record_ts,\n \n -- Arrays (VARCHAR[])\n CASE\n WHEN i % 4 = 0 THEN ARRAY['backend', 'urgent']\n WHEN i % 4 = 1 THEN ARRAY['frontend']\n WHEN i % 4 = 2 THEN ARRAY['api', 'backend']\n ELSE ARRAY[]::VARCHAR[]\n END AS tags,\n \n CASE\n WHEN i % 3 = 0 THEN ARRAY['user_' || ((i % 1000) + 1), 'user_' || ((i % 1000) + 2)]\n WHEN i % 3 = 1 THEN ARRAY['user_' || (i % 1000)]\n ELSE ARRAY[]::VARCHAR[]\n END AS owned_by_ids,\n \n CASE\n WHEN i % 5 = 0 THEN ARRAY['part_' || (i % 500), 'part_' || ((i % 500) + 1), 'part_' || ((i % 500) + 2)]\n WHEN i % 5 = 1 THEN ARRAY['part_' || (i % 500)]\n ELSE ARRAY[]::VARCHAR[]\n END AS part_ids,\n \n -- JSON-like VARCHAR (to test JSON extraction)\n '{\"severity_id\": ' || ((i % 5) + 1) || ', \"impact\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n ELSE 'low'\n END ||\n '\", \"source\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'web'\n WHEN 1 THEN 'mobile'\n ELSE 'api'\n END ||\n '\", \"reported_by\": \"' || 'user_' || (i % 100) || '\"}' AS metadata_json,\n \n '{\"stage\": \"' || \n CASE (i % 4)\n WHEN 0 THEN 'investigation'\n WHEN 1 THEN 'mitigation'\n WHEN 2 THEN 'resolution'\n ELSE 'closed'\n END || '\"}' AS stage_json,\n \n '{\"customers\": [' || \n '\"customer_' || (i % 1000) || '\", ' ||\n '\"customer_' || ((i % 1000) + 1) || '\"' ||\n ']}' AS impact_json,\n \n -- Derived-style fields (mirroring real widget expressions)\n (i % 10000) AS mtti_seconds,\n MONTHNAME(DATE '2020-01-01' + CAST((i % 365) AS INTEGER)) AS created_month,\n (i % 5) AS severity_id_int,\n \n -- Special values for NULL testing\n CASE WHEN i % 10 = 0 THEN NULL ELSE 'value_' || i END AS nullable_string,\n CASE WHEN i % 15 = 0 THEN NULL ELSE (i % 1000) END AS nullable_int,\n CASE WHEN i % 20 = 0 THEN NULL ELSE DATE '2020-01-01' + CAST((i % 365) AS INTEGER) END AS nullable_date,\n \n -- Edge case values\n CASE\n WHEN i % 100 = 0 THEN 'value with \"quotes\"'\n WHEN i % 100 = 1 THEN 'value with ''apostrophe'''\n WHEN i % 100 = 2 THEN 'value with \\\\ backslash'\n WHEN i % 100 = 3 THEN ''\n ELSE 'normal_value_' || i\n END AS edge_case_string\n \n FROM range(0, 1000000) AS t(i)\n `);\n \n console.log('✅ Created fact_all_types with 1M rows');\n}\n\n/**\n * Create dimension table: dim_user\n */\nexport async function createDimUserTable(): Promise<void> {\n console.log('Creating dim_user table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_user AS\n SELECT\n 'user_' || i AS user_id,\n 'User ' || i AS user_name,\n 'user' || i || '@example.com' AS user_email,\n CASE (i % 3)\n WHEN 0 THEN 'enterprise'\n WHEN 1 THEN 'pro'\n ELSE 'free'\n END AS user_segment,\n CASE (i % 4)\n WHEN 0 THEN 'engineering'\n WHEN 1 THEN 'product'\n WHEN 2 THEN 'support'\n ELSE 'sales'\n END AS user_department,\n DATE '2019-01-01' + CAST((i % 1095) AS INTEGER) AS user_created_date,\n (i % 2 = 0) AS is_active_user\n FROM range(0, 10000) AS t(i)\n `);\n \n console.log('✅ Created dim_user with 10K rows');\n}\n\n/**\n * Create dimension table: dim_part\n */\nexport async function createDimPartTable(): Promise<void> {\n console.log('Creating dim_part table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_part AS\n SELECT\n 'part_' || i AS part_id,\n 'Part ' || i AS part_name,\n CASE (i % 5)\n WHEN 0 THEN 'electronics'\n WHEN 1 THEN 'furniture'\n WHEN 2 THEN 'clothing'\n WHEN 3 THEN 'food'\n ELSE 'other'\n END AS product_category,\n CASE (i % 3)\n WHEN 0 THEN 'premium'\n WHEN 1 THEN 'standard'\n ELSE 'budget'\n END AS product_tier,\n (i % 1000) / 10.0 AS weight,\n (i % 10000) / 100.0 AS price,\n (i % 2 = 0) AS in_stock\n FROM range(0, 5000) AS t(i)\n `);\n \n console.log('✅ Created dim_part with 5K rows');\n}\n\n/**\n * Create all synthetic tables in one go\n */\nexport async function createAllSyntheticTables(): Promise<void> {\n const startTime = Date.now();\n \n await createFactAllTypesTable();\n await createDimUserTable();\n await createDimPartTable();\n \n const duration = ((Date.now() - startTime) / 1000).toFixed(2);\n console.log(`\\n✅ All synthetic tables created in ${duration}s`);\n}\n\n/**\n * Drop all synthetic tables (for cleanup)\n */\nexport async function dropSyntheticTables(): Promise<void> {\n console.log('Dropping synthetic tables...');\n \n await duckdbExec('DROP TABLE IF EXISTS fact_all_types');\n await duckdbExec('DROP TABLE IF EXISTS dim_user');\n await duckdbExec('DROP TABLE IF EXISTS dim_part');\n \n console.log('✅ Synthetic tables dropped');\n}\n\n/**\n * Verify tables exist and have data\n */\nexport async function verifySyntheticTables(): Promise<void> {\n const factCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM fact_all_types'\n )) as Array<{ count: number }>;\n const userCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_user'\n )) as Array<{ count: number }>;\n const partCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_part'\n )) as Array<{ count: number }>;\n \n console.log('\\n📊 Synthetic Table Verification:');\n console.log(` fact_all_types: ${factCount[0].count} rows`);\n console.log(` dim_user: ${userCount[0].count} rows`);\n console.log(` dim_part: ${partCount[0].count} rows`);\n}\n\n"],"names":["createAllSyntheticTables","createDimPartTable","createDimUserTable","createFactAllTypesTable","dropSyntheticTables","verifySyntheticTables","console","log","duckdbExec","startTime","Date","now","duration","toFixed","factCount","userCount","partCount","count"],"mappings":"AAAA;;;;;CAKC;;;;;;;;IA+NqBA,wBAAwB;eAAxBA;;IAhCAC,kBAAkB;eAAlBA;;IA/BAC,kBAAkB;eAAlBA;;IAxJAC,uBAAuB;eAAvBA;;IAqOAC,mBAAmB;eAAnBA;;IAaAC,qBAAqB;eAArBA;;;4BAxPK;AAMpB,eAAeF;IACpBG,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6IlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeL;IACpBI,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;EAoBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeN;IACpBK,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;EAqBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeP;IACpB,MAAMS,YAAYC,KAAKC,GAAG;IAE1B,MAAMR;IACN,MAAMD;IACN,MAAMD;IAEN,MAAMW,WAAW,AAAC,CAAA,AAACF,CAAAA,KAAKC,GAAG,KAAKF,SAAQ,IAAK,IAAG,EAAGI,OAAO,CAAC;IAC3DP,QAAQC,GAAG,CAAC,CAAC,oCAAoC,EAAEK,SAAS,CAAC,CAAC;AAChE;AAKO,eAAeR;IACpBE,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IAEjBF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeF;IACpB,MAAMS,YAAa,MAAMN,IAAAA,sBAAU,EACjC;IAEF,MAAMO,YAAa,MAAMP,IAAAA,sBAAU,EACjC;IAEF,MAAMQ,YAAa,MAAMR,IAAAA,sBAAU,EACjC;IAGFF,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,CAAC,mBAAmB,EAAEO,SAAS,CAAC,EAAE,CAACG,KAAK,CAAC,KAAK,CAAC;IAC3DX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEQ,SAAS,CAAC,EAAE,CAACE,KAAK,CAAC,KAAK,CAAC;IACrDX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAES,SAAS,CAAC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;AACvD"}
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/schema-setup.ts"],"sourcesContent":["/**\n * Synthetic Schema Setup\n * \n * Creates comprehensive test tables with 1M+ rows covering all data types\n * and patterns used in production Meerkat queries.\n */\n\nimport { duckdbExec } from '../../../duckdb-exec';\n\n/**\n * Create the comprehensive fact_all_types table\n * This table contains ~100 columns covering all normalized DB types\n */\nexport async function createFactAllTypesTable(): Promise<void> {\n console.log('Creating fact_all_types table with 1M rows...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS fact_all_types AS\n SELECT\n -- Keys/IDs\n i AS id_bigint,\n 'inc_' || (i % 100000) AS incident_id,\n 'user_' || (i % 10000) AS user_id,\n 'part_' || (i % 5000) AS part_id,\n \n -- Numeric types: BIGINT\n CAST(i * 10 AS BIGINT) AS metric_bigint,\n CAST((i % 1000) AS BIGINT) AS small_bigint,\n \n -- Numeric types: NUMERIC/DECIMAL\n CAST((i % 1000) / 10.0 AS DECIMAL(18,2)) AS metric_numeric,\n CAST((i % 10000) / 100.0 AS DECIMAL(18,4)) AS precise_numeric,\n \n -- Numeric types: DOUBLE/FLOAT\n (i % 1000) / 3.0 AS metric_double,\n (i % 1000) * 1.5 AS metric_float,\n \n -- Boolean\n (i % 10 = 0) AS is_deleted,\n (i % 3 = 0) AS flag_boolean,\n -- Use a different modulus base to avoid correlation with status buckets.\n ((CAST(i / 3 AS BIGINT)) % 2 = 0) AS is_active,\n CASE WHEN i % 7 = 0 THEN NULL ELSE CAST(i % 10000 AS BIGINT) END AS resolved_by,\n \n -- Strings/enums (VARCHAR)\n CASE (i % 5)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n WHEN 2 THEN 'low'\n WHEN 3 THEN 'critical'\n ELSE 'unknown'\n END AS priority,\n \n CASE (i % 4)\n WHEN 0 THEN 'open'\n WHEN 1 THEN 'in_progress'\n WHEN 2 THEN 'resolved'\n ELSE 'closed'\n END AS status,\n \n CASE (i % 3)\n WHEN 0 THEN 'P0'\n WHEN 1 THEN 'P1'\n ELSE 'P2'\n END AS severity_label,\n \n CASE (i % 4)\n WHEN 0 THEN 'production'\n WHEN 1 THEN 'staging'\n WHEN 2 THEN 'development'\n ELSE 'test'\n END AS environment,\n \n 'Title ' || i AS title,\n 'Test description for incident ' || i AS description,\n \n -- Dates (cast to INTEGER for date arithmetic)\n -- Using % 1460 for ~4 year cycle, % 366 for full year including leap day\n DATE '2020-01-01' + CAST((i % 1460) AS INTEGER) AS record_date,\n DATE '2020-01-01' + CAST((i % 366) AS INTEGER) AS created_date,\n DATE '2020-01-01' + CAST(((i + 30) % 1460) AS INTEGER) AS mitigated_date,\n DATE '2019-01-01' + CAST((i % 730) AS INTEGER) AS partition_record_date,\n \n -- Timestamps\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY + INTERVAL (CAST((i % 86400) AS INTEGER)) SECOND AS created_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST(((i + 100) % 1460) AS INTEGER)) DAY AS identified_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 366) AS INTEGER)) DAY AS deployment_time,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY AS partition_record_ts,\n \n -- Arrays (VARCHAR[])\n CASE\n WHEN i % 4 = 0 THEN ARRAY['backend', 'urgent']\n WHEN i % 4 = 1 THEN ARRAY['frontend']\n WHEN i % 4 = 2 THEN ARRAY['api', 'backend']\n ELSE ARRAY[]::VARCHAR[]\n END AS tags,\n \n CASE\n WHEN i % 3 = 0 THEN ARRAY['user_' || ((i % 1000) + 1), 'user_' || ((i % 1000) + 2)]\n WHEN i % 3 = 1 THEN ARRAY['user_' || (i % 1000)]\n ELSE ARRAY[]::VARCHAR[]\n END AS owned_by_ids,\n \n CASE\n WHEN i % 5 = 0 THEN ARRAY['part_' || (i % 500), 'part_' || ((i % 500) + 1), 'part_' || ((i % 500) + 2)]\n WHEN i % 5 = 1 THEN ARRAY['part_' || (i % 500)]\n ELSE ARRAY[]::VARCHAR[]\n END AS part_ids,\n\n -- Number arrays (INTEGER[])\n CASE\n WHEN i % 4 = 0 THEN ARRAY[1, 2, 3]\n WHEN i % 4 = 1 THEN ARRAY[2, 4]\n WHEN i % 4 = 2 THEN ARRAY[1, 5]\n ELSE ARRAY[]::INTEGER[]\n END AS score_ids,\n \n -- JSON-like VARCHAR (to test JSON extraction)\n '{\"severity_id\": ' || ((i % 5) + 1) || ', \"impact\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n ELSE 'low'\n END ||\n '\", \"source\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'web'\n WHEN 1 THEN 'mobile'\n ELSE 'api'\n END ||\n '\", \"reported_by\": \"' || 'user_' || (i % 100) || '\"}' AS metadata_json,\n \n '{\"stage\": \"' || \n CASE (i % 4)\n WHEN 0 THEN 'investigation'\n WHEN 1 THEN 'mitigation'\n WHEN 2 THEN 'resolution'\n ELSE 'closed'\n END || '\"}' AS stage_json,\n \n '{\"customers\": [' || \n '\"customer_' || (i % 1000) || '\", ' ||\n '\"customer_' || ((i % 1000) + 1) || '\"' ||\n ']}' AS impact_json,\n \n -- Derived-style fields (mirroring real widget expressions)\n (i % 10000) AS mtti_seconds,\n MONTHNAME(DATE '2020-01-01' + CAST((i % 365) AS INTEGER)) AS created_month,\n (i % 5) AS severity_id_int,\n \n -- Special values for NULL testing\n CASE WHEN i % 10 = 0 THEN NULL ELSE 'value_' || i END AS nullable_string,\n CASE WHEN i % 15 = 0 THEN NULL ELSE (i % 1000) END AS nullable_int,\n CASE WHEN i % 20 = 0 THEN NULL ELSE DATE '2020-01-01' + CAST((i % 365) AS INTEGER) END AS nullable_date,\n \n -- Edge case values\n CASE\n WHEN i % 100 = 0 THEN 'value with \"quotes\"'\n WHEN i % 100 = 1 THEN 'value with ''apostrophe'''\n WHEN i % 100 = 2 THEN 'value with \\\\ backslash'\n WHEN i % 100 = 3 THEN ''\n ELSE 'normal_value_' || i\n END AS edge_case_string\n \n FROM range(0, 1000000) AS t(i)\n `);\n \n console.log('✅ Created fact_all_types with 1M rows');\n}\n\n/**\n * Create dimension table: dim_user\n */\nexport async function createDimUserTable(): Promise<void> {\n console.log('Creating dim_user table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_user AS\n SELECT\n 'user_' || i AS user_id,\n 'User ' || i AS user_name,\n 'user' || i || '@example.com' AS user_email,\n CASE (i % 3)\n WHEN 0 THEN 'enterprise'\n WHEN 1 THEN 'pro'\n ELSE 'free'\n END AS user_segment,\n CASE (i % 4)\n WHEN 0 THEN 'engineering'\n WHEN 1 THEN 'product'\n WHEN 2 THEN 'support'\n ELSE 'sales'\n END AS user_department,\n DATE '2019-01-01' + CAST((i % 1095) AS INTEGER) AS user_created_date,\n (i % 2 = 0) AS is_active_user\n FROM range(0, 10000) AS t(i)\n `);\n \n console.log('✅ Created dim_user with 10K rows');\n}\n\n/**\n * Create dimension table: dim_part\n */\nexport async function createDimPartTable(): Promise<void> {\n console.log('Creating dim_part table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_part AS\n SELECT\n 'part_' || i AS part_id,\n 'Part ' || i AS part_name,\n CASE (i % 5)\n WHEN 0 THEN 'electronics'\n WHEN 1 THEN 'furniture'\n WHEN 2 THEN 'clothing'\n WHEN 3 THEN 'food'\n ELSE 'other'\n END AS product_category,\n CASE (i % 3)\n WHEN 0 THEN 'premium'\n WHEN 1 THEN 'standard'\n ELSE 'budget'\n END AS product_tier,\n (i % 1000) / 10.0 AS weight,\n (i % 10000) / 100.0 AS price,\n (i % 2 = 0) AS in_stock\n FROM range(0, 5000) AS t(i)\n `);\n \n console.log('✅ Created dim_part with 5K rows');\n}\n\n/**\n * Create all synthetic tables in one go\n */\nexport async function createAllSyntheticTables(): Promise<void> {\n const startTime = Date.now();\n \n await createFactAllTypesTable();\n await createDimUserTable();\n await createDimPartTable();\n \n const duration = ((Date.now() - startTime) / 1000).toFixed(2);\n console.log(`\\n✅ All synthetic tables created in ${duration}s`);\n}\n\n/**\n * Drop all synthetic tables (for cleanup)\n */\nexport async function dropSyntheticTables(): Promise<void> {\n console.log('Dropping synthetic tables...');\n \n await duckdbExec('DROP TABLE IF EXISTS fact_all_types');\n await duckdbExec('DROP TABLE IF EXISTS dim_user');\n await duckdbExec('DROP TABLE IF EXISTS dim_part');\n \n console.log('✅ Synthetic tables dropped');\n}\n\n/**\n * Verify tables exist and have data\n */\nexport async function verifySyntheticTables(): Promise<void> {\n const factCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM fact_all_types'\n )) as Array<{ count: number }>;\n const userCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_user'\n )) as Array<{ count: number }>;\n const partCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_part'\n )) as Array<{ count: number }>;\n \n console.log('\\n📊 Synthetic Table Verification:');\n console.log(` fact_all_types: ${factCount[0].count} rows`);\n console.log(` dim_user: ${userCount[0].count} rows`);\n console.log(` dim_part: ${partCount[0].count} rows`);\n}\n\n"],"names":["createAllSyntheticTables","createDimPartTable","createDimUserTable","createFactAllTypesTable","dropSyntheticTables","verifySyntheticTables","console","log","duckdbExec","startTime","Date","now","duration","toFixed","factCount","userCount","partCount","count"],"mappings":"AAAA;;;;;CAKC;;;;;;;;IAuOqBA,wBAAwB;eAAxBA;;IAhCAC,kBAAkB;eAAlBA;;IA/BAC,kBAAkB;eAAlBA;;IAhKAC,uBAAuB;eAAvBA;;IA6OAC,mBAAmB;eAAnBA;;IAaAC,qBAAqB;eAArBA;;;4BAhQK;AAMpB,eAAeF;IACpBG,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqJlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeL;IACpBI,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;EAoBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeN;IACpBK,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;EAqBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeP;IACpB,MAAMS,YAAYC,KAAKC,GAAG;IAE1B,MAAMR;IACN,MAAMD;IACN,MAAMD;IAEN,MAAMW,WAAW,AAAC,CAAA,AAACF,CAAAA,KAAKC,GAAG,KAAKF,SAAQ,IAAK,IAAG,EAAGI,OAAO,CAAC;IAC3DP,QAAQC,GAAG,CAAC,CAAC,oCAAoC,EAAEK,SAAS,CAAC,CAAC;AAChE;AAKO,eAAeR;IACpBE,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IAEjBF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeF;IACpB,MAAMS,YAAa,MAAMN,IAAAA,sBAAU,EACjC;IAEF,MAAMO,YAAa,MAAMP,IAAAA,sBAAU,EACjC;IAEF,MAAMQ,YAAa,MAAMR,IAAAA,sBAAU,EACjC;IAGFF,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,CAAC,mBAAmB,EAAEO,SAAS,CAAC,EAAE,CAACG,KAAK,CAAC,KAAK,CAAC;IAC3DX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEQ,SAAS,CAAC,EAAE,CAACE,KAAK,CAAC,KAAK,CAAC;IACrDX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAES,SAAS,CAAC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;AACvD"}
|
|
@@ -262,6 +262,11 @@ const FACT_ALL_TYPES_SCHEMA = {
|
|
|
262
262
|
sql: 'part_ids',
|
|
263
263
|
type: 'string_array'
|
|
264
264
|
},
|
|
265
|
+
{
|
|
266
|
+
name: 'score_ids',
|
|
267
|
+
sql: 'score_ids',
|
|
268
|
+
type: 'number_array'
|
|
269
|
+
},
|
|
265
270
|
// JSON-derived dimensions (stored as VARCHAR)
|
|
266
271
|
{
|
|
267
272
|
name: 'metadata_json',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/table-schemas.ts"],"sourcesContent":["/**\n * TableSchema Definitions for Synthetic Test Tables\n * \n * These schemas match the synthetic tables created in schema-setup.ts\n * and follow the same conventions as production Meerkat schemas.\n */\n\nexport const FACT_ALL_TYPES_SCHEMA = {\n name: 'fact_all_types',\n sql: 'SELECT * FROM fact_all_types',\n \n measures: [\n // Numeric measures\n { name: 'metric_bigint', sql: 'metric_bigint', type: 'number' },\n { name: 'small_bigint', sql: 'small_bigint', type: 'number' },\n { name: 'metric_numeric', sql: 'metric_numeric', type: 'number' },\n { name: 'precise_numeric', sql: 'precise_numeric', type: 'number' },\n { name: 'metric_double', sql: 'metric_double', type: 'number' },\n { name: 'metric_float', sql: 'metric_float', type: 'number' },\n { name: 'nullable_int', sql: 'nullable_int', type: 'number' },\n { name: 'mtti_seconds', sql: 'mtti_seconds', type: 'number' },\n { name: 'severity_id_int', sql: 'severity_id_int', type: 'number' },\n \n // Aggregate measures\n { name: 'count', sql: 'COUNT(*)', type: 'number' },\n { name: 'sum_metric_bigint', sql: 'SUM(metric_bigint)', type: 'number' },\n { name: 'avg_metric_double', sql: 'AVG(metric_double)', type: 'number' },\n { name: 'min_metric_numeric', sql: 'MIN(metric_numeric)', type: 'number' },\n { name: 'max_metric_numeric', sql: 'MAX(metric_numeric)', type: 'number' },\n { name: 'count_distinct_user_id', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n // ID fields\n { name: 'id_bigint', sql: 'id_bigint', type: 'number' },\n { name: 'incident_id', sql: 'incident_id', type: 'string' },\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'part_id', sql: 'part_id', type: 'string' },\n \n // Boolean dimensions\n { name: 'is_deleted', sql: 'is_deleted', type: 'boolean' },\n { name: 'flag_boolean', sql: 'flag_boolean', type: 'boolean' },\n { name: 'is_active', sql: 'is_active', type: 'boolean' },\n { name: 'resolved_by', sql: 'resolved_by', type: 'number' },\n \n // String/enum dimensions\n { name: 'priority', sql: 'priority', type: 'string' },\n { name: 'status', sql: 'status', type: 'string' },\n { name: 'severity_label', sql: 'severity_label', type: 'string' },\n { name: 'environment', sql: 'environment', type: 'string' },\n { name: 'title', sql: 'title', type: 'string' },\n { name: 'description', sql: 'description', type: 'string' },\n { name: 'nullable_string', sql: 'nullable_string', type: 'string' },\n { name: 'edge_case_string', sql: 'edge_case_string', type: 'string' },\n \n // Date dimensions\n { name: 'record_date', sql: 'record_date', type: 'time' },\n { name: 'created_date', sql: 'created_date', type: 'time' },\n { name: 'mitigated_date', sql: 'mitigated_date', type: 'time' },\n { name: 'partition_record_date', sql: 'partition_record_date', type: 'time' },\n { name: 'nullable_date', sql: 'nullable_date', type: 'time' },\n \n // Timestamp dimensions\n { name: 'created_timestamp', sql: 'created_timestamp', type: 'time' },\n { name: 'identified_timestamp', sql: 'identified_timestamp', type: 'time' },\n { name: 'deployment_time', sql: 'deployment_time', type: 'time' },\n { name: 'partition_record_ts', sql: 'partition_record_ts', type: 'time' },\n \n // Array dimensions\n { name: 'tags', sql: 'tags', type: 'string_array' },\n { name: 'owned_by_ids', sql: 'owned_by_ids', type: 'string_array' },\n { name: 'part_ids', sql: 'part_ids', type: 'string_array' },\n \n // JSON-derived dimensions (stored as VARCHAR)\n { name: 'metadata_json', sql: 'metadata_json', type: 'string' },\n { name: 'stage_json', sql: 'stage_json', type: 'string' },\n { name: 'impact_json', sql: 'impact_json', type: 'string' },\n \n // Derived dimensions\n { name: 'created_month', sql: 'created_month', type: 'string' },\n \n // JSON extracted dimensions (examples of how to extract JSON fields)\n { \n name: 'severity_id_from_json', \n sql: \"CAST(json_extract_path_text(metadata_json, 'severity_id') AS INTEGER)\", \n type: 'number' \n },\n { \n name: 'impact_from_json', \n sql: \"json_extract_path_text(metadata_json, 'impact')\", \n type: 'string' \n },\n ],\n};\n\nexport const DIM_USER_SCHEMA = {\n name: 'dim_user',\n sql: 'SELECT * FROM dim_user',\n \n measures: [\n { name: 'count_users', sql: 'COUNT(*)', type: 'number' },\n { name: 'count_distinct_users', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'user_name', sql: 'user_name', type: 'string' },\n { name: 'user_email', sql: 'user_email', type: 'string' },\n { name: 'user_segment', sql: 'user_segment', type: 'string' },\n { name: 'user_department', sql: 'user_department', type: 'string' },\n { name: 'user_created_date', sql: 'user_created_date', type: 'time' },\n { name: 'is_active_user', sql: 'is_active_user', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.user_id = dim_user.user_id',\n },\n ],\n};\n\nexport const DIM_PART_SCHEMA = {\n name: 'dim_part',\n sql: 'SELECT * FROM dim_part',\n \n measures: [\n { name: 'count_parts', sql: 'COUNT(*)', type: 'number' },\n { name: 'avg_weight', sql: 'AVG(weight)', type: 'number' },\n { name: 'avg_price', sql: 'AVG(price)', type: 'number' },\n { name: 'sum_weight', sql: 'SUM(weight)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'part_id', sql: 'part_id', type: 'string' },\n { name: 'part_name', sql: 'part_name', type: 'string' },\n { name: 'product_category', sql: 'product_category', type: 'string' },\n { name: 'product_tier', sql: 'product_tier', type: 'string' },\n { name: 'weight', sql: 'weight', type: 'number' },\n { name: 'price', sql: 'price', type: 'number' },\n { name: 'in_stock', sql: 'in_stock', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.part_id = dim_part.part_id',\n },\n ],\n};\n\n/**\n * Helper to get all schemas as an array\n */\nexport function getAllSchemas() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA, DIM_PART_SCHEMA];\n}\n\n/**\n * Helper to get just the fact schema\n */\nexport function getFactSchema() {\n return FACT_ALL_TYPES_SCHEMA;\n}\n\n/**\n * Helper to get fact + one dimension\n */\nexport function getFactWithUserSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA];\n}\n\nexport function getFactWithPartSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_PART_SCHEMA];\n}\n\n"],"names":["DIM_PART_SCHEMA","DIM_USER_SCHEMA","FACT_ALL_TYPES_SCHEMA","getAllSchemas","getFactSchema","getFactWithPartSchema","getFactWithUserSchema","name","sql","measures","type","dimensions","joins","relationship"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/table-schemas.ts"],"sourcesContent":["/**\n * TableSchema Definitions for Synthetic Test Tables\n * \n * These schemas match the synthetic tables created in schema-setup.ts\n * and follow the same conventions as production Meerkat schemas.\n */\n\nexport const FACT_ALL_TYPES_SCHEMA = {\n name: 'fact_all_types',\n sql: 'SELECT * FROM fact_all_types',\n \n measures: [\n // Numeric measures\n { name: 'metric_bigint', sql: 'metric_bigint', type: 'number' },\n { name: 'small_bigint', sql: 'small_bigint', type: 'number' },\n { name: 'metric_numeric', sql: 'metric_numeric', type: 'number' },\n { name: 'precise_numeric', sql: 'precise_numeric', type: 'number' },\n { name: 'metric_double', sql: 'metric_double', type: 'number' },\n { name: 'metric_float', sql: 'metric_float', type: 'number' },\n { name: 'nullable_int', sql: 'nullable_int', type: 'number' },\n { name: 'mtti_seconds', sql: 'mtti_seconds', type: 'number' },\n { name: 'severity_id_int', sql: 'severity_id_int', type: 'number' },\n \n // Aggregate measures\n { name: 'count', sql: 'COUNT(*)', type: 'number' },\n { name: 'sum_metric_bigint', sql: 'SUM(metric_bigint)', type: 'number' },\n { name: 'avg_metric_double', sql: 'AVG(metric_double)', type: 'number' },\n { name: 'min_metric_numeric', sql: 'MIN(metric_numeric)', type: 'number' },\n { name: 'max_metric_numeric', sql: 'MAX(metric_numeric)', type: 'number' },\n { name: 'count_distinct_user_id', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n // ID fields\n { name: 'id_bigint', sql: 'id_bigint', type: 'number' },\n { name: 'incident_id', sql: 'incident_id', type: 'string' },\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'part_id', sql: 'part_id', type: 'string' },\n \n // Boolean dimensions\n { name: 'is_deleted', sql: 'is_deleted', type: 'boolean' },\n { name: 'flag_boolean', sql: 'flag_boolean', type: 'boolean' },\n { name: 'is_active', sql: 'is_active', type: 'boolean' },\n { name: 'resolved_by', sql: 'resolved_by', type: 'number' },\n \n // String/enum dimensions\n { name: 'priority', sql: 'priority', type: 'string' },\n { name: 'status', sql: 'status', type: 'string' },\n { name: 'severity_label', sql: 'severity_label', type: 'string' },\n { name: 'environment', sql: 'environment', type: 'string' },\n { name: 'title', sql: 'title', type: 'string' },\n { name: 'description', sql: 'description', type: 'string' },\n { name: 'nullable_string', sql: 'nullable_string', type: 'string' },\n { name: 'edge_case_string', sql: 'edge_case_string', type: 'string' },\n \n // Date dimensions\n { name: 'record_date', sql: 'record_date', type: 'time' },\n { name: 'created_date', sql: 'created_date', type: 'time' },\n { name: 'mitigated_date', sql: 'mitigated_date', type: 'time' },\n { name: 'partition_record_date', sql: 'partition_record_date', type: 'time' },\n { name: 'nullable_date', sql: 'nullable_date', type: 'time' },\n \n // Timestamp dimensions\n { name: 'created_timestamp', sql: 'created_timestamp', type: 'time' },\n { name: 'identified_timestamp', sql: 'identified_timestamp', type: 'time' },\n { name: 'deployment_time', sql: 'deployment_time', type: 'time' },\n { name: 'partition_record_ts', sql: 'partition_record_ts', type: 'time' },\n \n // Array dimensions\n { name: 'tags', sql: 'tags', type: 'string_array' },\n { name: 'owned_by_ids', sql: 'owned_by_ids', type: 'string_array' },\n { name: 'part_ids', sql: 'part_ids', type: 'string_array' },\n { name: 'score_ids', sql: 'score_ids', type: 'number_array' },\n \n // JSON-derived dimensions (stored as VARCHAR)\n { name: 'metadata_json', sql: 'metadata_json', type: 'string' },\n { name: 'stage_json', sql: 'stage_json', type: 'string' },\n { name: 'impact_json', sql: 'impact_json', type: 'string' },\n \n // Derived dimensions\n { name: 'created_month', sql: 'created_month', type: 'string' },\n \n // JSON extracted dimensions (examples of how to extract JSON fields)\n { \n name: 'severity_id_from_json', \n sql: \"CAST(json_extract_path_text(metadata_json, 'severity_id') AS INTEGER)\", \n type: 'number' \n },\n { \n name: 'impact_from_json', \n sql: \"json_extract_path_text(metadata_json, 'impact')\", \n type: 'string' \n },\n ],\n};\n\nexport const DIM_USER_SCHEMA = {\n name: 'dim_user',\n sql: 'SELECT * FROM dim_user',\n \n measures: [\n { name: 'count_users', sql: 'COUNT(*)', type: 'number' },\n { name: 'count_distinct_users', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'user_name', sql: 'user_name', type: 'string' },\n { name: 'user_email', sql: 'user_email', type: 'string' },\n { name: 'user_segment', sql: 'user_segment', type: 'string' },\n { name: 'user_department', sql: 'user_department', type: 'string' },\n { name: 'user_created_date', sql: 'user_created_date', type: 'time' },\n { name: 'is_active_user', sql: 'is_active_user', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.user_id = dim_user.user_id',\n },\n ],\n};\n\nexport const DIM_PART_SCHEMA = {\n name: 'dim_part',\n sql: 'SELECT * FROM dim_part',\n \n measures: [\n { name: 'count_parts', sql: 'COUNT(*)', type: 'number' },\n { name: 'avg_weight', sql: 'AVG(weight)', type: 'number' },\n { name: 'avg_price', sql: 'AVG(price)', type: 'number' },\n { name: 'sum_weight', sql: 'SUM(weight)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'part_id', sql: 'part_id', type: 'string' },\n { name: 'part_name', sql: 'part_name', type: 'string' },\n { name: 'product_category', sql: 'product_category', type: 'string' },\n { name: 'product_tier', sql: 'product_tier', type: 'string' },\n { name: 'weight', sql: 'weight', type: 'number' },\n { name: 'price', sql: 'price', type: 'number' },\n { name: 'in_stock', sql: 'in_stock', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.part_id = dim_part.part_id',\n },\n ],\n};\n\n/**\n * Helper to get all schemas as an array\n */\nexport function getAllSchemas() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA, DIM_PART_SCHEMA];\n}\n\n/**\n * Helper to get just the fact schema\n */\nexport function getFactSchema() {\n return FACT_ALL_TYPES_SCHEMA;\n}\n\n/**\n * Helper to get fact + one dimension\n */\nexport function getFactWithUserSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA];\n}\n\nexport function getFactWithPartSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_PART_SCHEMA];\n}\n\n"],"names":["DIM_PART_SCHEMA","DIM_USER_SCHEMA","FACT_ALL_TYPES_SCHEMA","getAllSchemas","getFactSchema","getFactWithPartSchema","getFactWithUserSchema","name","sql","measures","type","dimensions","joins","relationship"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -395,6 +395,135 @@ export declare const TEST_DATA_WITH_SAFE_ALIAS: ({
|
|
|
395
395
|
vendors: null;
|
|
396
396
|
})[];
|
|
397
397
|
})[] | {
|
|
398
|
+
testName: string;
|
|
399
|
+
expectedSQL: string;
|
|
400
|
+
cubeInput: {
|
|
401
|
+
measures: string[];
|
|
402
|
+
filters: {
|
|
403
|
+
member: string;
|
|
404
|
+
operator: string;
|
|
405
|
+
}[];
|
|
406
|
+
dimensions: never[];
|
|
407
|
+
};
|
|
408
|
+
expectedOutput: ({
|
|
409
|
+
order_id: number;
|
|
410
|
+
customer_id: string;
|
|
411
|
+
product_id: string;
|
|
412
|
+
order_date: string;
|
|
413
|
+
order_amount: number;
|
|
414
|
+
orders__vendors: never[];
|
|
415
|
+
vendors: never[];
|
|
416
|
+
orders__order_date?: undefined;
|
|
417
|
+
} | {
|
|
418
|
+
customer_id: string;
|
|
419
|
+
order_amount: number;
|
|
420
|
+
order_date: string;
|
|
421
|
+
order_id: number;
|
|
422
|
+
orders__order_date: undefined;
|
|
423
|
+
orders__vendors: null;
|
|
424
|
+
product_id: string;
|
|
425
|
+
vendors: null;
|
|
426
|
+
})[];
|
|
427
|
+
}[] | {
|
|
428
|
+
testName: string;
|
|
429
|
+
expectedSQL: string;
|
|
430
|
+
cubeInput: {
|
|
431
|
+
measures: string[];
|
|
432
|
+
filters: {
|
|
433
|
+
member: string;
|
|
434
|
+
operator: string;
|
|
435
|
+
}[];
|
|
436
|
+
dimensions: never[];
|
|
437
|
+
};
|
|
438
|
+
expectedOutput: ({
|
|
439
|
+
order_id: number;
|
|
440
|
+
customer_id: string;
|
|
441
|
+
product_id: string;
|
|
442
|
+
order_date: string;
|
|
443
|
+
order_amount: number;
|
|
444
|
+
orders__vendors: string[];
|
|
445
|
+
vendors: string[];
|
|
446
|
+
orders__order_date?: undefined;
|
|
447
|
+
} | {
|
|
448
|
+
customer_id: string;
|
|
449
|
+
order_amount: number;
|
|
450
|
+
order_date: string;
|
|
451
|
+
order_id: number;
|
|
452
|
+
orders__order_date: undefined;
|
|
453
|
+
orders__vendors: string[];
|
|
454
|
+
product_id: string;
|
|
455
|
+
vendors: string[];
|
|
456
|
+
} | {
|
|
457
|
+
customer_id: null;
|
|
458
|
+
order_amount: number;
|
|
459
|
+
order_date: string;
|
|
460
|
+
order_id: number;
|
|
461
|
+
orders__order_date: undefined;
|
|
462
|
+
orders__vendors: string[];
|
|
463
|
+
product_id: string;
|
|
464
|
+
vendors: string[];
|
|
465
|
+
})[];
|
|
466
|
+
}[] | {
|
|
467
|
+
testName: string;
|
|
468
|
+
expectedSQL: string;
|
|
469
|
+
cubeInput: {
|
|
470
|
+
measures: string[];
|
|
471
|
+
filters: {
|
|
472
|
+
member: string;
|
|
473
|
+
operator: string;
|
|
474
|
+
}[];
|
|
475
|
+
dimensions: never[];
|
|
476
|
+
};
|
|
477
|
+
expectedOutput: {
|
|
478
|
+
customer_id: null;
|
|
479
|
+
order_amount: number;
|
|
480
|
+
order_date: string;
|
|
481
|
+
order_id: number;
|
|
482
|
+
orders__customer_id: null;
|
|
483
|
+
orders__order_date: undefined;
|
|
484
|
+
product_id: string;
|
|
485
|
+
vendors: string[];
|
|
486
|
+
}[];
|
|
487
|
+
}[] | {
|
|
488
|
+
testName: string;
|
|
489
|
+
expectedSQL: string;
|
|
490
|
+
cubeInput: {
|
|
491
|
+
measures: string[];
|
|
492
|
+
filters: {
|
|
493
|
+
member: string;
|
|
494
|
+
operator: string;
|
|
495
|
+
}[];
|
|
496
|
+
dimensions: never[];
|
|
497
|
+
};
|
|
498
|
+
expectedOutput: ({
|
|
499
|
+
order_id: number;
|
|
500
|
+
customer_id: string;
|
|
501
|
+
orders__customer_id: string;
|
|
502
|
+
product_id: string;
|
|
503
|
+
order_date: string;
|
|
504
|
+
order_amount: number;
|
|
505
|
+
vendors: string[];
|
|
506
|
+
orders__order_date?: undefined;
|
|
507
|
+
} | {
|
|
508
|
+
customer_id: string;
|
|
509
|
+
order_amount: number;
|
|
510
|
+
order_date: string;
|
|
511
|
+
order_id: number;
|
|
512
|
+
orders__customer_id: string;
|
|
513
|
+
orders__order_date: undefined;
|
|
514
|
+
product_id: string;
|
|
515
|
+
vendors: string[];
|
|
516
|
+
} | {
|
|
517
|
+
customer_id: string;
|
|
518
|
+
order_amount: number;
|
|
519
|
+
order_date: string;
|
|
520
|
+
order_id: number;
|
|
521
|
+
orders__customer_id: string;
|
|
522
|
+
orders__order_date: undefined;
|
|
523
|
+
product_id: string;
|
|
524
|
+
vendors: null;
|
|
525
|
+
})[];
|
|
526
|
+
}[] | {
|
|
398
527
|
testName: string;
|
|
399
528
|
expectedSQL: string;
|
|
400
529
|
cubeInput: {
|
|
@@ -414,6 +414,135 @@ export declare const getTestData: () => ({
|
|
|
414
414
|
vendors: null;
|
|
415
415
|
})[];
|
|
416
416
|
})[] | {
|
|
417
|
+
testName: string;
|
|
418
|
+
expectedSQL: string;
|
|
419
|
+
cubeInput: {
|
|
420
|
+
measures: string[];
|
|
421
|
+
filters: {
|
|
422
|
+
member: string;
|
|
423
|
+
operator: string;
|
|
424
|
+
}[];
|
|
425
|
+
dimensions: never[];
|
|
426
|
+
};
|
|
427
|
+
expectedOutput: ({
|
|
428
|
+
order_id: number;
|
|
429
|
+
customer_id: string;
|
|
430
|
+
product_id: string;
|
|
431
|
+
order_date: string;
|
|
432
|
+
order_amount: number;
|
|
433
|
+
orders__vendors: never[];
|
|
434
|
+
vendors: never[];
|
|
435
|
+
orders__order_date?: undefined;
|
|
436
|
+
} | {
|
|
437
|
+
customer_id: string;
|
|
438
|
+
order_amount: number;
|
|
439
|
+
order_date: string;
|
|
440
|
+
order_id: number;
|
|
441
|
+
orders__order_date: undefined;
|
|
442
|
+
orders__vendors: null;
|
|
443
|
+
product_id: string;
|
|
444
|
+
vendors: null;
|
|
445
|
+
})[];
|
|
446
|
+
}[] | {
|
|
447
|
+
testName: string;
|
|
448
|
+
expectedSQL: string;
|
|
449
|
+
cubeInput: {
|
|
450
|
+
measures: string[];
|
|
451
|
+
filters: {
|
|
452
|
+
member: string;
|
|
453
|
+
operator: string;
|
|
454
|
+
}[];
|
|
455
|
+
dimensions: never[];
|
|
456
|
+
};
|
|
457
|
+
expectedOutput: ({
|
|
458
|
+
order_id: number;
|
|
459
|
+
customer_id: string;
|
|
460
|
+
product_id: string;
|
|
461
|
+
order_date: string;
|
|
462
|
+
order_amount: number;
|
|
463
|
+
orders__vendors: string[];
|
|
464
|
+
vendors: string[];
|
|
465
|
+
orders__order_date?: undefined;
|
|
466
|
+
} | {
|
|
467
|
+
customer_id: string;
|
|
468
|
+
order_amount: number;
|
|
469
|
+
order_date: string;
|
|
470
|
+
order_id: number;
|
|
471
|
+
orders__order_date: undefined;
|
|
472
|
+
orders__vendors: string[];
|
|
473
|
+
product_id: string;
|
|
474
|
+
vendors: string[];
|
|
475
|
+
} | {
|
|
476
|
+
customer_id: null;
|
|
477
|
+
order_amount: number;
|
|
478
|
+
order_date: string;
|
|
479
|
+
order_id: number;
|
|
480
|
+
orders__order_date: undefined;
|
|
481
|
+
orders__vendors: string[];
|
|
482
|
+
product_id: string;
|
|
483
|
+
vendors: string[];
|
|
484
|
+
})[];
|
|
485
|
+
}[] | {
|
|
486
|
+
testName: string;
|
|
487
|
+
expectedSQL: string;
|
|
488
|
+
cubeInput: {
|
|
489
|
+
measures: string[];
|
|
490
|
+
filters: {
|
|
491
|
+
member: string;
|
|
492
|
+
operator: string;
|
|
493
|
+
}[];
|
|
494
|
+
dimensions: never[];
|
|
495
|
+
};
|
|
496
|
+
expectedOutput: {
|
|
497
|
+
customer_id: null;
|
|
498
|
+
order_amount: number;
|
|
499
|
+
order_date: string;
|
|
500
|
+
order_id: number;
|
|
501
|
+
orders__customer_id: null;
|
|
502
|
+
orders__order_date: undefined;
|
|
503
|
+
product_id: string;
|
|
504
|
+
vendors: string[];
|
|
505
|
+
}[];
|
|
506
|
+
}[] | {
|
|
507
|
+
testName: string;
|
|
508
|
+
expectedSQL: string;
|
|
509
|
+
cubeInput: {
|
|
510
|
+
measures: string[];
|
|
511
|
+
filters: {
|
|
512
|
+
member: string;
|
|
513
|
+
operator: string;
|
|
514
|
+
}[];
|
|
515
|
+
dimensions: never[];
|
|
516
|
+
};
|
|
517
|
+
expectedOutput: ({
|
|
518
|
+
order_id: number;
|
|
519
|
+
customer_id: string;
|
|
520
|
+
orders__customer_id: string;
|
|
521
|
+
product_id: string;
|
|
522
|
+
order_date: string;
|
|
523
|
+
order_amount: number;
|
|
524
|
+
vendors: string[];
|
|
525
|
+
orders__order_date?: undefined;
|
|
526
|
+
} | {
|
|
527
|
+
customer_id: string;
|
|
528
|
+
order_amount: number;
|
|
529
|
+
order_date: string;
|
|
530
|
+
order_id: number;
|
|
531
|
+
orders__customer_id: string;
|
|
532
|
+
orders__order_date: undefined;
|
|
533
|
+
product_id: string;
|
|
534
|
+
vendors: string[];
|
|
535
|
+
} | {
|
|
536
|
+
customer_id: string;
|
|
537
|
+
order_amount: number;
|
|
538
|
+
order_date: string;
|
|
539
|
+
order_id: number;
|
|
540
|
+
orders__customer_id: string;
|
|
541
|
+
orders__order_date: undefined;
|
|
542
|
+
product_id: string;
|
|
543
|
+
vendors: null;
|
|
544
|
+
})[];
|
|
545
|
+
}[] | {
|
|
417
546
|
testName: string;
|
|
418
547
|
expectedSQL: string;
|
|
419
548
|
cubeInput: {
|