castor-extractor 0.21.3__py3-none-any.whl → 0.21.7__py3-none-any.whl
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.
Potentially problematic release.
This version of castor-extractor might be problematic. Click here for more details.
- CHANGELOG.md +20 -0
- castor_extractor/commands/upload.py +11 -31
- castor_extractor/uploader/__init__.py +1 -1
- castor_extractor/uploader/settings.py +24 -0
- castor_extractor/uploader/upload.py +38 -3
- castor_extractor/visualization/metabase/client/db/queries/card.sql +2 -19
- castor_extractor/visualization/metabase/client/db/queries/dashboard.sql +2 -19
- castor_extractor/warehouse/postgres/queries/schema.sql +3 -3
- castor_extractor/warehouse/postgres/queries/table.sql +2 -2
- castor_extractor/warehouse/redshift/queries/column.sql +3 -3
- {castor_extractor-0.21.3.dist-info → castor_extractor-0.21.7.dist-info}/METADATA +22 -2
- {castor_extractor-0.21.3.dist-info → castor_extractor-0.21.7.dist-info}/RECORD +15 -14
- {castor_extractor-0.21.3.dist-info → castor_extractor-0.21.7.dist-info}/LICENCE +0 -0
- {castor_extractor-0.21.3.dist-info → castor_extractor-0.21.7.dist-info}/WHEEL +0 -0
- {castor_extractor-0.21.3.dist-info → castor_extractor-0.21.7.dist-info}/entry_points.txt +0 -0
CHANGELOG.md
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
|
|
2
2
|
# Changelog
|
|
3
3
|
|
|
4
|
+
## 0.21.8 - 2024-11-26
|
|
5
|
+
|
|
6
|
+
* Redshift: improve deduplication of columns
|
|
7
|
+
|
|
8
|
+
## 0.21.7 - 2024-11-26
|
|
9
|
+
|
|
10
|
+
* Metabase: stop using deprecated table `view_log`
|
|
11
|
+
|
|
12
|
+
## 0.21.6 - 2024-11-22
|
|
13
|
+
|
|
14
|
+
* bump dependencies: ruff, setuptools
|
|
15
|
+
|
|
16
|
+
## 0.21.5 - 2024-11-20
|
|
17
|
+
|
|
18
|
+
* PostgreSQL: Fix schema extraction when owner is a role without login privilege
|
|
19
|
+
|
|
20
|
+
## 0.21.4 - 2024-11-20
|
|
21
|
+
|
|
22
|
+
* Uploader: Support environment variables as settings
|
|
23
|
+
|
|
4
24
|
## 0.21.3 - 2024-11-07
|
|
5
25
|
|
|
6
26
|
* Tableau: Fix metrics definition url
|
|
@@ -1,32 +1,28 @@
|
|
|
1
|
-
import argparse
|
|
2
1
|
import logging
|
|
2
|
+
from argparse import ArgumentParser
|
|
3
3
|
|
|
4
4
|
from castor_extractor.uploader import ( # type: ignore
|
|
5
5
|
FileType,
|
|
6
|
-
|
|
7
|
-
upload_manifest,
|
|
6
|
+
upload_any,
|
|
8
7
|
)
|
|
9
|
-
|
|
10
|
-
FILE_TYPES = {FileType.QUALITY, FileType.VIZ, FileType.WAREHOUSE}
|
|
8
|
+
from castor_extractor.utils import parse_filled_arguments # type: ignore
|
|
11
9
|
|
|
12
10
|
logging.basicConfig(level=logging.INFO, format="%(levelname)s - %(message)s")
|
|
13
11
|
|
|
14
12
|
|
|
15
|
-
def _args():
|
|
16
|
-
parser =
|
|
13
|
+
def _args() -> ArgumentParser:
|
|
14
|
+
parser = ArgumentParser()
|
|
17
15
|
parser.add_argument(
|
|
18
16
|
"-k",
|
|
19
17
|
"--token",
|
|
20
|
-
|
|
21
|
-
help="""API token provided by Castor""",
|
|
18
|
+
help="API token provided by CastorDoc",
|
|
22
19
|
)
|
|
23
20
|
parser.add_argument(
|
|
24
21
|
"-s",
|
|
25
22
|
"--source_id",
|
|
26
|
-
|
|
27
|
-
help="source id provided by castor",
|
|
23
|
+
help="source id provided by CastorDoc",
|
|
28
24
|
)
|
|
29
|
-
group = parser.add_mutually_exclusive_group(required=
|
|
25
|
+
group = parser.add_mutually_exclusive_group(required=False)
|
|
30
26
|
group.add_argument("-f", "--file_path", help="path to file to upload")
|
|
31
27
|
group.add_argument(
|
|
32
28
|
"-d",
|
|
@@ -44,25 +40,9 @@ def _args():
|
|
|
44
40
|
),
|
|
45
41
|
choices=supported_file_type,
|
|
46
42
|
)
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
"token": parsed.token,
|
|
50
|
-
"source_id": parsed.source_id,
|
|
51
|
-
"file_path": parsed.file_path,
|
|
52
|
-
"directory_path": parsed.directory_path,
|
|
53
|
-
"file_type": FileType(parsed.file_type),
|
|
54
|
-
}
|
|
43
|
+
return parser
|
|
55
44
|
|
|
56
45
|
|
|
57
46
|
def main():
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
file_type = params.get("file_type")
|
|
61
|
-
if file_type in FILE_TYPES:
|
|
62
|
-
upload(**params)
|
|
63
|
-
|
|
64
|
-
if file_type == FileType.DBT:
|
|
65
|
-
dir_path = params.pop("directory_path")
|
|
66
|
-
assert not dir_path
|
|
67
|
-
del params["file_type"]
|
|
68
|
-
upload_manifest(**params)
|
|
47
|
+
parser = _args()
|
|
48
|
+
upload_any(**parse_filled_arguments(parser))
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
from .constant import FileType
|
|
2
|
-
from .upload import upload, upload_manifest
|
|
2
|
+
from .upload import upload, upload_any, upload_manifest
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from pydantic import UUID4, Field
|
|
4
|
+
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
5
|
+
|
|
6
|
+
from .constant import FileType
|
|
7
|
+
|
|
8
|
+
UPLOADER_ENV_PREFIX = "CASTOR_UPLOADER_"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UploaderSettings(BaseSettings):
|
|
12
|
+
"""Class holding Castor uploader attributes"""
|
|
13
|
+
|
|
14
|
+
model_config = SettingsConfigDict(
|
|
15
|
+
env_prefix=UPLOADER_ENV_PREFIX,
|
|
16
|
+
extra="ignore",
|
|
17
|
+
populate_by_name=True,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
directory_path: Optional[str] = None
|
|
21
|
+
file_path: Optional[str] = None
|
|
22
|
+
file_type: FileType
|
|
23
|
+
source_id: UUID4
|
|
24
|
+
token: str = Field(repr=False)
|
|
@@ -17,6 +17,7 @@ from .constant import (
|
|
|
17
17
|
FileType,
|
|
18
18
|
)
|
|
19
19
|
from .env import get_blob_env
|
|
20
|
+
from .settings import UploaderSettings
|
|
20
21
|
from .utils import iter_files
|
|
21
22
|
|
|
22
23
|
logger = logging.getLogger(__name__)
|
|
@@ -95,13 +96,15 @@ def _upload(
|
|
|
95
96
|
def upload_manifest(
|
|
96
97
|
token: str,
|
|
97
98
|
source_id: UUID,
|
|
98
|
-
file_path: str,
|
|
99
|
+
file_path: Optional[str] = None,
|
|
99
100
|
) -> None:
|
|
100
101
|
"""
|
|
101
|
-
|
|
102
|
+
token: backend public API token
|
|
102
103
|
source_id: id for the source
|
|
103
104
|
file_path: path to the local manifest to upload
|
|
104
105
|
"""
|
|
106
|
+
if not file_path:
|
|
107
|
+
raise ValueError("file path is needed to upload a manifest")
|
|
105
108
|
_upload(token, source_id, file_path, FileType.DBT)
|
|
106
109
|
|
|
107
110
|
|
|
@@ -113,7 +116,7 @@ def upload(
|
|
|
113
116
|
directory_path: Optional[str] = None,
|
|
114
117
|
) -> None:
|
|
115
118
|
"""
|
|
116
|
-
|
|
119
|
+
token: backend public API token
|
|
117
120
|
source_id: id for the source
|
|
118
121
|
file_type: type of file(s) uploaded - see FileType Enum
|
|
119
122
|
file_path: path to the local visualization or warehouse file to upload
|
|
@@ -130,3 +133,35 @@ def upload(
|
|
|
130
133
|
|
|
131
134
|
for file_ in files:
|
|
132
135
|
_upload(token, source_id, file_, file_type)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def upload_any(**kwargs) -> None:
|
|
139
|
+
"""
|
|
140
|
+
entrypath to upload either a file or a manifest
|
|
141
|
+
|
|
142
|
+
token: backend public API token
|
|
143
|
+
source_id: id for the source
|
|
144
|
+
file_type: type of file(s) uploaded - see FileType Enum
|
|
145
|
+
file_path: path to the local visualization or warehouse file to upload
|
|
146
|
+
directory_path: path to the local directory containing files to upload
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
settings = UploaderSettings(**kwargs)
|
|
150
|
+
file_type = settings.file_type
|
|
151
|
+
|
|
152
|
+
if file_type == FileType.DBT:
|
|
153
|
+
assert not settings.directory_path
|
|
154
|
+
upload_manifest(
|
|
155
|
+
token=settings.token,
|
|
156
|
+
source_id=settings.source_id,
|
|
157
|
+
file_path=settings.file_path,
|
|
158
|
+
)
|
|
159
|
+
return None
|
|
160
|
+
|
|
161
|
+
upload(
|
|
162
|
+
token=settings.token,
|
|
163
|
+
source_id=settings.source_id,
|
|
164
|
+
file_type=file_type,
|
|
165
|
+
file_path=settings.file_path,
|
|
166
|
+
directory_path=settings.directory_path,
|
|
167
|
+
)
|
|
@@ -1,21 +1,4 @@
|
|
|
1
|
-
WITH card_view_log AS
|
|
2
|
-
(
|
|
3
|
-
SELECT
|
|
4
|
-
model_id,
|
|
5
|
-
COUNT(id) AS view_count,
|
|
6
|
-
MAX("timestamp") AS last_viewed_at
|
|
7
|
-
FROM
|
|
8
|
-
{schema}.view_log
|
|
9
|
-
WHERE
|
|
10
|
-
model = 'card'
|
|
11
|
-
GROUP BY
|
|
12
|
-
1
|
|
13
|
-
)
|
|
14
|
-
|
|
15
1
|
SELECT
|
|
16
|
-
|
|
17
|
-
vl.last_viewed_at AS last_viewed_at,
|
|
18
|
-
COALESCE(vl.view_count, 0) AS view_count
|
|
2
|
+
*
|
|
19
3
|
FROM
|
|
20
|
-
{schema}.report_card
|
|
21
|
-
LEFT JOIN card_view_log AS vl ON rc.id = vl.model_id
|
|
4
|
+
{schema}.report_card
|
|
@@ -1,21 +1,4 @@
|
|
|
1
|
-
WITH dashboard_view_log AS
|
|
2
|
-
(
|
|
3
|
-
SELECT
|
|
4
|
-
model_id,
|
|
5
|
-
COUNT(id) AS view_count,
|
|
6
|
-
MAX("timestamp") AS last_viewed_at
|
|
7
|
-
FROM
|
|
8
|
-
{schema}.view_log
|
|
9
|
-
WHERE
|
|
10
|
-
model = 'dashboard'
|
|
11
|
-
GROUP BY
|
|
12
|
-
1
|
|
13
|
-
)
|
|
14
|
-
|
|
15
1
|
SELECT
|
|
16
|
-
|
|
17
|
-
vl.last_viewed_at AS last_viewed_at,
|
|
18
|
-
COALESCE(vl.view_count, 0) AS view_count
|
|
2
|
+
*
|
|
19
3
|
FROM
|
|
20
|
-
{schema}.report_dashboard
|
|
21
|
-
LEFT JOIN dashboard_view_log AS vl ON rd.id = vl.model_id
|
|
4
|
+
{schema}.report_dashboard
|
|
@@ -3,12 +3,12 @@ SELECT
|
|
|
3
3
|
db.datname AS database_name,
|
|
4
4
|
ns.oid::TEXT AS schema_id,
|
|
5
5
|
ns.nspname AS schema_name,
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
r.rolname AS schema_owner,
|
|
7
|
+
ns.nspowner AS schema_owner_id,
|
|
8
8
|
de.description AS "comment"
|
|
9
9
|
FROM pg_catalog.pg_namespace AS ns
|
|
10
10
|
CROSS JOIN pg_catalog.pg_database AS db
|
|
11
|
-
JOIN pg_catalog.
|
|
11
|
+
LEFT JOIN pg_catalog.pg_roles AS r ON r.oid = ns.nspowner
|
|
12
12
|
LEFT JOIN pg_catalog.pg_description AS de ON de.classoid = ns.oid
|
|
13
13
|
WHERE TRUE
|
|
14
14
|
AND db.datname = CURRENT_DATABASE()
|
|
@@ -4,14 +4,14 @@ WITH ids AS (
|
|
|
4
4
|
t.relname AS table_name,
|
|
5
5
|
n.nspname AS schema_name,
|
|
6
6
|
n.oid AS schema_id,
|
|
7
|
-
|
|
7
|
+
r.rolname AS table_owner,
|
|
8
8
|
t.relowner AS table_owner_id,
|
|
9
9
|
td.description AS "comment",
|
|
10
10
|
t.reltuples::BIGINT AS tuples
|
|
11
11
|
FROM pg_class AS t
|
|
12
12
|
JOIN pg_catalog.pg_namespace AS n ON n.oid = t.relnamespace
|
|
13
13
|
LEFT JOIN pg_catalog.pg_description AS td ON td.objoid = t.oid AND td.objsubid = 0
|
|
14
|
-
LEFT JOIN pg_catalog.
|
|
14
|
+
LEFT JOIN pg_catalog.pg_roles AS r ON r.oid = t.relowner
|
|
15
15
|
WHERE TRUE
|
|
16
16
|
AND n.nspname NOT LIKE 'pg_%%'
|
|
17
17
|
AND n.nspname NOT IN ('catalog_history', 'information_schema')
|
|
@@ -155,9 +155,9 @@ external_columns AS (
|
|
|
155
155
|
db.datname || '.' || s.schemaname || '.' || c.tablename AS table_id,
|
|
156
156
|
c.columnname AS column_name,
|
|
157
157
|
db.datname || '.' || s.schemaname || '.' || c.tablename || '.' || c.columnname AS column_id,
|
|
158
|
-
c.external_type AS data_type,
|
|
158
|
+
MIN(c.external_type) AS data_type,
|
|
159
159
|
MIN(c.columnnum) AS ordinal_position,
|
|
160
|
-
CASE c.is_nullable WHEN 'false' THEN 'NO' ELSE 'YES' END AS is_nullable,
|
|
160
|
+
MIN(CASE c.is_nullable WHEN 'false' THEN 'NO' ELSE 'YES' END) AS is_nullable,
|
|
161
161
|
NULL AS character_maximum_length,
|
|
162
162
|
NULL AS character_octet_length,
|
|
163
163
|
NULL AS numeric_precision,
|
|
@@ -172,7 +172,7 @@ external_columns AS (
|
|
|
172
172
|
JOIN pg_catalog.pg_database AS db ON CURRENT_DATABASE() = db.datname
|
|
173
173
|
|
|
174
174
|
-- To remove duplicate column names that can occur in external tables (no check on CSVs)
|
|
175
|
-
GROUP BY database_name, database_id, schema_name, schema_id, table_name, table_id, column_name, column_id
|
|
175
|
+
GROUP BY database_name, database_id, schema_name, schema_id, table_name, table_id, column_name, column_id
|
|
176
176
|
)
|
|
177
177
|
|
|
178
178
|
SELECT * FROM tables
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: castor-extractor
|
|
3
|
-
Version: 0.21.
|
|
3
|
+
Version: 0.21.7
|
|
4
4
|
Summary: Extract your metadata assets.
|
|
5
5
|
Home-page: https://www.castordoc.com/
|
|
6
6
|
License: EULA
|
|
@@ -52,7 +52,7 @@ Requires-Dist: pymssql (>=2.2.11,<3.0.0) ; extra == "sqlserver" or extra == "all
|
|
|
52
52
|
Requires-Dist: pymysql[rsa] (>=1.1.0,<2.0.0) ; extra == "mysql" or extra == "all"
|
|
53
53
|
Requires-Dist: python-dateutil (>=2.0.0,<=3.0.0)
|
|
54
54
|
Requires-Dist: requests (>=2.0.0,<3.0.0)
|
|
55
|
-
Requires-Dist: setuptools (>=
|
|
55
|
+
Requires-Dist: setuptools (>=75.3.0,<75.4.0)
|
|
56
56
|
Requires-Dist: snowflake-connector-python (>=3.4.0,<4.0.0) ; extra == "snowflake" or extra == "all"
|
|
57
57
|
Requires-Dist: snowflake-sqlalchemy (!=1.2.5,<2.0.0) ; extra == "snowflake" or extra == "all"
|
|
58
58
|
Requires-Dist: sqlalchemy (>=1.4,<1.5)
|
|
@@ -208,6 +208,26 @@ For any questions or bug report, contact us at [support@castordoc.com](mailto:su
|
|
|
208
208
|
|
|
209
209
|
# Changelog
|
|
210
210
|
|
|
211
|
+
## 0.21.8 - 2024-11-26
|
|
212
|
+
|
|
213
|
+
* Redshift: improve deduplication of columns
|
|
214
|
+
|
|
215
|
+
## 0.21.7 - 2024-11-26
|
|
216
|
+
|
|
217
|
+
* Metabase: stop using deprecated table `view_log`
|
|
218
|
+
|
|
219
|
+
## 0.21.6 - 2024-11-22
|
|
220
|
+
|
|
221
|
+
* bump dependencies: ruff, setuptools
|
|
222
|
+
|
|
223
|
+
## 0.21.5 - 2024-11-20
|
|
224
|
+
|
|
225
|
+
* PostgreSQL: Fix schema extraction when owner is a role without login privilege
|
|
226
|
+
|
|
227
|
+
## 0.21.4 - 2024-11-20
|
|
228
|
+
|
|
229
|
+
* Uploader: Support environment variables as settings
|
|
230
|
+
|
|
211
231
|
## 0.21.3 - 2024-11-07
|
|
212
232
|
|
|
213
233
|
* Tableau: Fix metrics definition url
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
CHANGELOG.md,sha256=
|
|
1
|
+
CHANGELOG.md,sha256=HIo_bRiTbT5GZ6Hugs5Y1gHIHSsfh1VDVWXhoC_SXWM,14881
|
|
2
2
|
Dockerfile,sha256=xQ05-CFfGShT3oUqaiumaldwA288dj9Yb_pxofQpufg,301
|
|
3
3
|
DockerfileUsage.md,sha256=2hkJQF-5JuuzfPZ7IOxgM6QgIQW7l-9oRMFVwyXC4gE,998
|
|
4
4
|
LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
@@ -27,7 +27,7 @@ castor_extractor/commands/extract_sqlserver.py,sha256=lwhbcNChaXHZgMgSOch3faVr7W
|
|
|
27
27
|
castor_extractor/commands/extract_tableau.py,sha256=VUb_1Y85EzfF1f9OaCQQt8kFYBdp0u31Mw1Wm2fkxWs,1221
|
|
28
28
|
castor_extractor/commands/extract_thoughtspot.py,sha256=caAYJlH-vK7u5IUB6OKXxcaWfLgc7d_XqnFDWK6YNS4,639
|
|
29
29
|
castor_extractor/commands/file_check.py,sha256=VSD84kpQKf7b0wJOhUgkJQ9n4mK3v52sjMWL7wkNYa0,2667
|
|
30
|
-
castor_extractor/commands/upload.py,sha256=
|
|
30
|
+
castor_extractor/commands/upload.py,sha256=rLXp7gQ8zb1kLbho4FT87q8eJd8Gvo_TkyIynAaQ-4s,1342
|
|
31
31
|
castor_extractor/file_checker/__init__.py,sha256=OSt6YLhUT42U_Cp3LCLHMVruwDkksL75Ij13X2UPnVk,119
|
|
32
32
|
castor_extractor/file_checker/column.py,sha256=fMchy5v-Sd-0xuYS0V9mob7wnljslzWLhQGqrKGybdk,3097
|
|
33
33
|
castor_extractor/file_checker/column_test.py,sha256=1j8PxvmvmJgpd-mk30iMYOme32ovPSIn4yCXywFoXrg,1935
|
|
@@ -68,11 +68,12 @@ castor_extractor/quality/soda/client/credentials.py,sha256=R1g7nHpJlQ5hBjtUFN06Q
|
|
|
68
68
|
castor_extractor/quality/soda/client/endpoints.py,sha256=x3B-XlnDF8NJMuk-81N72_6HA-YZEzA895khLyj0j54,228
|
|
69
69
|
castor_extractor/quality/soda/client/pagination.py,sha256=IrAnju5CFipHarTLZRWZflVZ3KHoRVMvaCaNAePHVug,555
|
|
70
70
|
castor_extractor/types.py,sha256=Hd_shbsGAknJLTrAk3SBxZeFPOlbWBXXjIscC9C7CW8,1281
|
|
71
|
-
castor_extractor/uploader/__init__.py,sha256=
|
|
71
|
+
castor_extractor/uploader/__init__.py,sha256=A4bq_SrEtKAsl0r_D_duSTvL5WIQjVfsMy7tDx9IKg0,87
|
|
72
72
|
castor_extractor/uploader/constant.py,sha256=yTigLHDlYwoRr6CpFIl7ReElFsQd4H-qkluMZJPWSx0,865
|
|
73
73
|
castor_extractor/uploader/env.py,sha256=5HSniVSOYVg4u38O4k8TB_qaJq9s8yJ1hjedkq_gdVg,878
|
|
74
74
|
castor_extractor/uploader/env_test.py,sha256=ClCWWtwd2N-5ClIDUxVMeKkWfhhOTxpppsXUDmdjxSg,472
|
|
75
|
-
castor_extractor/uploader/
|
|
75
|
+
castor_extractor/uploader/settings.py,sha256=3MvOX-UFRqrLZoiT7wYn9jUGro7NX4RCafYzrXrLQtA,590
|
|
76
|
+
castor_extractor/uploader/upload.py,sha256=XGoqr4UdpsARyLG0Mp5enBqDvc6m_WCK9nMB3yhUwlM,4296
|
|
76
77
|
castor_extractor/uploader/upload_test.py,sha256=7fwstdQe7FjuwGilsCdFpEQr1qLoR2WTRUzyy93fISw,402
|
|
77
78
|
castor_extractor/uploader/utils.py,sha256=Tx_i875L2vJ8btOLV3-L0UMEFiyhH8E5n0XXRyLjO0Y,793
|
|
78
79
|
castor_extractor/utils/__init__.py,sha256=jyYquzC2-R-UYl3VTP49ZDHB0IErGogTPMy3GfScbaA,1524
|
|
@@ -179,9 +180,9 @@ castor_extractor/visualization/metabase/client/db/client.py,sha256=s38mubBaun4Lf
|
|
|
179
180
|
castor_extractor/visualization/metabase/client/db/credentials.py,sha256=rhA6rM7QMTBSpF4BknYXz2VqujFcWAdx5TPR4kmdPy4,918
|
|
180
181
|
castor_extractor/visualization/metabase/client/db/queries/.sqlfluff,sha256=sOQQOpAa9QMj9cBlulfmt-DZ_kQzMpzSAEnh10QGSB0,76
|
|
181
182
|
castor_extractor/visualization/metabase/client/db/queries/base_url.sql,sha256=p2EL9kdt-hw_yh3aeCE91AXEB4RrYAbG2QrBBNqQjDE,79
|
|
182
|
-
castor_extractor/visualization/metabase/client/db/queries/card.sql,sha256=
|
|
183
|
+
castor_extractor/visualization/metabase/client/db/queries/card.sql,sha256=ORzsXqskth9708NO2Wq7G7w3e0SfHi1u9HgerYmXvg4,43
|
|
183
184
|
castor_extractor/visualization/metabase/client/db/queries/collection.sql,sha256=PstkeFOU2dB-DV0ND-gR-NCDOsWG__3veAbGypbd0UI,42
|
|
184
|
-
castor_extractor/visualization/metabase/client/db/queries/dashboard.sql,sha256=
|
|
185
|
+
castor_extractor/visualization/metabase/client/db/queries/dashboard.sql,sha256=oBhBvRw4PWX1OMxHdrIY4K3ufLb3IdOEj8PmegNjahw,48
|
|
185
186
|
castor_extractor/visualization/metabase/client/db/queries/dashboard_cards.sql,sha256=OMPeayxPoVHTCR0hb7dLxD2JqDuY8Of6MQzOABMWqc8,52
|
|
186
187
|
castor_extractor/visualization/metabase/client/db/queries/database.sql,sha256=Kx6d_odO9Ns_3991_WH8eB8jbdBCIBbskLm1MpMdTkM,49
|
|
187
188
|
castor_extractor/visualization/metabase/client/db/queries/table.sql,sha256=cCO8YjB8svDqaCW8pIHfM5hw0wugMTCYz1l9Fyiuq4c,46
|
|
@@ -364,8 +365,8 @@ castor_extractor/warehouse/postgres/queries/.sqlfluff,sha256=Z7nq1jdnKxpOKpKTpJI
|
|
|
364
365
|
castor_extractor/warehouse/postgres/queries/column.sql,sha256=N7UzWK0aslvoaXQritSf-EE7h8fpadT4AYFaCwfMo9s,1632
|
|
365
366
|
castor_extractor/warehouse/postgres/queries/database.sql,sha256=GRM-CHI3EGCjpEEvgzdefLhV74EPTqCOCaud0S1Rv_E,241
|
|
366
367
|
castor_extractor/warehouse/postgres/queries/group.sql,sha256=8p0wlqllnwOTiAgiV237DvFYHGOEcYwaHdyqVQg3F6E,101
|
|
367
|
-
castor_extractor/warehouse/postgres/queries/schema.sql,sha256=
|
|
368
|
-
castor_extractor/warehouse/postgres/queries/table.sql,sha256=
|
|
368
|
+
castor_extractor/warehouse/postgres/queries/schema.sql,sha256=brzNqvkoARjOgXUSu1nvCIXueS6QRk3ozQr_OoRwJdY,594
|
|
369
|
+
castor_extractor/warehouse/postgres/queries/table.sql,sha256=eHiajIJnBj43wpx19fYpGbbI_zvp3-IhqwUv9aVohLo,1485
|
|
369
370
|
castor_extractor/warehouse/postgres/queries/user.sql,sha256=sEXveJAuNvZacvpI6WfwsX6VavoMb2VqYA32f6Dt-_Y,170
|
|
370
371
|
castor_extractor/warehouse/postgres/query.py,sha256=5QmI79BP_EjqxeABNg56rxuM9XuuXHuFFzCk6svnFEw,540
|
|
371
372
|
castor_extractor/warehouse/redshift/__init__.py,sha256=CC82SejYDlwYhZhhn40ln-oTsRx7AJ1Km61cxPkymjE,125
|
|
@@ -374,7 +375,7 @@ castor_extractor/warehouse/redshift/client_test.py,sha256=74lZfna71qs80EKAuitJ8_
|
|
|
374
375
|
castor_extractor/warehouse/redshift/extract.py,sha256=pblUQ2XafVTpyHrDLrmwFKy55mUNF03dZvgPweihYUc,2723
|
|
375
376
|
castor_extractor/warehouse/redshift/extract_test.py,sha256=-8eWOsFEv4DFvBmalaE_TzQD6YdgwnGRPCkKsycJuxg,653
|
|
376
377
|
castor_extractor/warehouse/redshift/queries/.sqlfluff,sha256=W4pFQiY8KMtXwn3WguYQJA8cj78VR7K-iokPoZoy5aM,30
|
|
377
|
-
castor_extractor/warehouse/redshift/queries/column.sql,sha256=
|
|
378
|
+
castor_extractor/warehouse/redshift/queries/column.sql,sha256=6Y2WDTQXy3JRr42yr01p2NW2d8fDLsGzIzBb8Rp6NKk,6826
|
|
378
379
|
castor_extractor/warehouse/redshift/queries/database.sql,sha256=_C0knW159YDfReGuWLjIdvxHzefo1Xg2xw2dJKJzNk8,299
|
|
379
380
|
castor_extractor/warehouse/redshift/queries/group.sql,sha256=8p0wlqllnwOTiAgiV237DvFYHGOEcYwaHdyqVQg3F6E,101
|
|
380
381
|
castor_extractor/warehouse/redshift/queries/query.sql,sha256=yZNGnUdebvvDx0J0KMSJ2hNgkK4gPduyOfPM_7-DIfo,3465
|
|
@@ -424,8 +425,8 @@ castor_extractor/warehouse/sqlserver/queries/table.sql,sha256=kbBQP-TdG5px1IVgyx
|
|
|
424
425
|
castor_extractor/warehouse/sqlserver/queries/user.sql,sha256=gOrZsMVypusR2dc4vwVs4E1a-CliRsr_UjnD2EbXs-A,94
|
|
425
426
|
castor_extractor/warehouse/sqlserver/query.py,sha256=j_d5-HMnzBouwGfywVZMRSSwbXzPvzDWlFCZmvxcoGQ,539
|
|
426
427
|
castor_extractor/warehouse/synapse/queries/column.sql,sha256=lNcFoIW3Y0PFOqoOzJEXmPvZvfAsY0AP63Mu2LuPzPo,1351
|
|
427
|
-
castor_extractor-0.21.
|
|
428
|
-
castor_extractor-0.21.
|
|
429
|
-
castor_extractor-0.21.
|
|
430
|
-
castor_extractor-0.21.
|
|
431
|
-
castor_extractor-0.21.
|
|
428
|
+
castor_extractor-0.21.7.dist-info/LICENCE,sha256=sL-IGa4hweyya1HgzMskrRdybbIa2cktzxb5qmUgDg8,8254
|
|
429
|
+
castor_extractor-0.21.7.dist-info/METADATA,sha256=-vrBbF2Ipl1Ar3SwUthFTrDdvjod8IXzEzP2Sb-TuWg,22109
|
|
430
|
+
castor_extractor-0.21.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
431
|
+
castor_extractor-0.21.7.dist-info/entry_points.txt,sha256=7aVSxc-_2dicp28Ow-S4y0p4wGoTm9zGmVptMvfLdw8,1649
|
|
432
|
+
castor_extractor-0.21.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|