Compare commits

...

411 Commits

Author SHA1 Message Date
Beto Dealmeida
7e7b9f84aa WIP 2024-07-03 15:44:01 -04:00
Tyler Eason
5231e86b6c docs(docker compose): fix step 4 list formatting (#29468) 2024-07-03 11:39:11 -06:00
mknadh
6b73b69b41 feat(CLI command): Apache Superset "Factory Reset" CLI command #27207 (#27221) 2024-07-03 09:20:05 -07:00
Michael S. Molina
35da6ac270 fix: Dashboard hangs when initial filters cannot be loaded (#29456) 2024-07-03 09:16:07 -03:00
Beto Dealmeida
d5c0506faa fix: OAuth2 in async DBs (#29461) 2024-07-02 21:12:07 -04:00
Joe Li
fb1f2c4f18 fix: re-add missing code from PR #28132 (#29446) 2024-07-02 16:58:55 -07:00
Ville Brofeldt
7f3c8efab0 fix(metastore-cache): import dao in methods (#29451) 2024-07-02 15:28:42 +03:00
dependabot[bot]
7bb7fc0f49 chore(deps): bump deck.gl from 9.0.12 to 9.0.20 in /superset-frontend/plugins/legacy-preset-chart-deckgl (#29426)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 21:21:44 -06:00
dependabot[bot]
3449b8f9dc chore(deps-dev): update @types/lodash requirement from ^4.17.4 to ^4.17.6 in /superset-frontend/plugins/plugin-chart-handlebars (#29425)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@rusackas.com>
2024-07-01 17:02:44 -06:00
dependabot[bot]
7a0ae36c4a chore(deps): bump actions/checkout from 2 to 4 (#29434)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 15:16:11 -07:00
dependabot[bot]
cf031bbee4 chore(deps-dev): bump webpack from 5.91.0 to 5.92.1 in /docs (#29429)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 15:04:47 -06:00
dependabot[bot]
1e73820277 chore(deps): bump @algolia/client-search from 4.23.3 to 4.24.0 in /docs (#29428)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 15:03:13 -06:00
dependabot[bot]
839ca82a19 chore(deps): bump react-markdown from 8.0.3 to 8.0.7 in /superset-frontend (#29439)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 14:41:10 -06:00
Maxime Beauchemin
446a3b22dc chore: move all GHAs to ubuntu-22.04 (#29447) 2024-07-01 14:19:25 -06:00
saghatelian
028665030f chore: Added 10Web to the list of organizations that use Apache Superset (#29442) 2024-07-01 14:47:08 -03:00
Ville Brofeldt
7d6e933348 chore(key-value): convert command to dao (#29344) 2024-07-01 20:22:11 +03:00
dependabot[bot]
0cf676b574 chore(deps-dev): bump ts-jest from 29.1.2 to 29.1.5 in /superset-websocket (#29423)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 11:01:32 -06:00
dependabot[bot]
7727b9dc79 chore(deps-dev): bump eslint-import-resolver-typescript from 2.5.0 to 3.6.1 in /superset-frontend (#29435)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 10:06:14 -06:00
dependabot[bot]
5aac1b59b1 chore(deps): bump rehype-raw from 6.1.1 to 7.0.0 in /superset-frontend (#29433)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 10:03:39 -06:00
dependabot[bot]
cfe29406e5 chore(deps-dev): bump typescript from 5.4.5 to 5.5.2 in /docs (#29432)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 10:02:49 -06:00
dependabot[bot]
42773b9b1c chore(deps): bump stream from 0.0.2 to 0.0.3 in /docs (#29431)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 10:02:32 -06:00
Hex Café
179cf269c6 fix: SQL label missing for non-group-by queries (#29420) 2024-07-01 11:59:25 +03:00
Shubhendra Kushwaha
ba405bacbf docs: Update INTHEWILD.md with Aveti Learning (#29413) 2024-06-30 15:08:15 +03:00
ari-jane
5c9352fae4 docs: update INTHEWILD.md with bluquist (#29399) 2024-06-28 12:46:06 -07:00
Đỗ Trọng Hải
e274925b2a chore(frontend): remove obsolete ESLint rules in tests (#29405)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-06-28 12:45:38 -07:00
John Bodley
8fb8199a55 chore(dao/command): Add transaction decorator to try to enforce "unit of work" (#24969) 2024-06-28 12:33:56 -07:00
Đỗ Trọng Hải
a3f0d00714 refactor(src/explore/comp/controls/metricControl): migrate Enzyme test to RTL syntax (#29380)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2024-06-28 13:22:19 -03:00
Jan Suleiman
f128718d34 docs: fix typos (#29400) 2024-06-28 09:31:54 -06:00
dependabot[bot]
ed3c66b6a6 chore(deps): bump scroll-into-view-if-needed from 2.2.28 to 3.1.0 in /superset-frontend (#28816)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-28 09:30:58 -06:00
Geido
66bc8ceddd chore(Table): Add aria-label to Table page size selector (#29391) 2024-06-28 16:19:58 +02:00
Geido
2a587a771c feat: Add Ant Design 5 Theme (#29328) 2024-06-28 15:16:05 +02:00
Evan Rusackas
c70a9d0e67 fix(readme): changing video from mp4 to webm format (#29392) 2024-06-27 11:30:59 -06:00
Jan Suleiman
9c5c124155 docs: fix typo in docker compose doc (#29390) 2024-06-27 10:25:53 -07:00
Daniel Vaz Gaspar
59d1eea4c8 ci: remove update repo on issue comment (#29388) 2024-06-27 10:25:07 -07:00
John Bodley
9d405738c0 chore(tests): Remove unnecessary mock (#29386) 2024-06-27 07:28:50 -07:00
John Bodley
466dda2b14 chore(security): Clean up session/commit logic (#29381) 2024-06-26 12:57:51 -07:00
John Bodley
5948dac889 chore(ci): Start Celery worker as a background process (#29371) 2024-06-26 12:10:05 -07:00
John Bodley
53450b7e2f fix(tox): Address issue with generative environment variables (#29368) 2024-06-26 12:01:50 -07:00
John Bodley
731cfb1553 chore(tests): Mark TestConnectionDatabaseCommand as non-test related (#29366) 2024-06-26 12:01:26 -07:00
Evan Rusackas
c49a6dfdef feat(e2e): implementing Cypress Dashboard on master branch merges (#29351) 2024-06-26 09:34:30 -06:00
Michael S. Molina
d4054e3d85 feat: Adds chart IDs option to migrate-viz (#29361) 2024-06-26 09:20:29 -03:00
Michael S. Molina
c83d5b88e1 feat: Adds the ECharts Sankey chart (#29329) 2024-06-26 08:36:07 -03:00
JUST.in DO IT
58f33d227a fix(explore): don't respect y-axis formatting (#29367) 2024-06-26 08:16:36 -03:00
Ross Mabbett
de6a518161 fix(Query): Parse html string error responses to avoid displaying raw HTML as error message (#29321) 2024-06-25 20:48:35 -04:00
Ross Mabbett
b5a72e21f7 refactor(Homepage): Migrate Home.test to RTL (#29353) 2024-06-25 17:58:26 -04:00
Jessie R
d74d3a87bb fix: default logging (#27777) 2024-06-25 13:25:21 -07:00
Đỗ Trọng Hải
dffad48504 feat(build): uplift Jest to v29 (#29118)
Signed-off-by: hainenber <dotronghai96@gmail.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
Co-authored-by: JUST.in DO IT <justin.park@airbnb.com>
2024-06-25 11:56:14 -06:00
John Bodley
f9f70e3e55 chore(tests): Fix MySQL logic (#29356) 2024-06-25 10:20:04 -07:00
John Bodley
c12b4e9cba chore(tests): Cleanup Celery tests (#29355) 2024-06-25 10:19:16 -07:00
John Bodley
d69363ef11 fix(tests): Ensure fixture is invoked (#29352) 2024-06-25 10:17:58 -07:00
Michael S. Molina
708afb7146 fix(revert 27883): Excess padding in horizontal Bar charts (#29345) 2024-06-25 13:33:53 -03:00
Michael S. Molina
213fd69b2b chore: Rename Totals to Summary in table chart (#29360) 2024-06-25 13:33:16 -03:00
Régis Behmo
5ffa616d98 fix: actually write changes on "superset import-datasources" (#14817) 2024-06-25 09:25:38 -06:00
JUST.in DO IT
160cece017 fix(explore): restored hidden field values has discarded (#29349) 2024-06-24 14:52:32 -07:00
Michael S. Molina
ee5227733b fix: Cannot delete empty column inside a tab using the dashboard editor (#29346) 2024-06-24 11:36:18 -06:00
Martin De Wulf
01ffc1227a docs: Update INTHEWILD.md with Bluesquare (#29337) 2024-06-24 11:22:29 -06:00
Evan Rusackas
4fe04e63ac chore(e2e): simplify Cypress record key usage (#29327) 2024-06-24 10:07:04 -06:00
Michael S. Molina
fe3ba12801 refactor: Adds the sort_by_metric control to sharedControls (#29325) 2024-06-21 14:10:33 -03:00
Daniel Vaz Gaspar
79d84f30f5 docs: update CVEs fixed on 4.0.1 and 3.1.3 (#29313) 2024-06-21 12:08:40 +01:00
Jessie R
9444c6bd4b fix: Remove recursive repr call (#29314) 2024-06-21 10:24:50 +03:00
dependabot[bot]
8c990adabe build(deps): bump deck.gl from 9.0.6 to 9.0.12 in /superset-frontend/plugins/legacy-preset-chart-deckgl (#28296)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: GitHub-Actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-20 21:53:09 -06:00
Evan Rusackas
118552d4d2 chore(e2e): more instructions for manual test runs. (#29319) 2024-06-20 17:47:24 -06:00
Maxime Beauchemin
514eda82fb fix: don't strip SQL comments in Explore - 2nd try (#28753) 2024-06-20 14:30:03 -07:00
Maxime Beauchemin
5e060cef7c feat: add new SQLLAB_FORCE_RUN_ASYNC feature flag (#29231)
Co-authored-by: Geido <60598000+geido@users.noreply.github.com>
2024-06-20 14:28:46 -07:00
Aditya Mishra
6378ec5d69 feat(dashboard): Enables pivot table download option at dashboard level (#29123)
Co-authored-by: adimyth <aditya@fnp.dev>
2024-06-20 13:28:10 -04:00
Evan Rusackas
03143bf9ad chore(applitools): making tests more static for consistent testing (#28201) 2024-06-20 10:41:59 -06:00
Jack
a5355d86fc feat: Dashboard tabs api endpoint (#27962) 2024-06-20 18:40:54 +02:00
Ed Jannoo
70f6f5f3ef fix(ui): Disable ability to export data when user does not have the correct permission (#28429) 2024-06-20 09:26:51 -06:00
Geido
313ee596f5 fix(Dashboard): Color inconsistency on refreshes and conflicts (#27439) 2024-06-20 15:30:11 +02:00
Ville Brofeldt
1770f8b783 fix(key-value): use flush instead of commit (#29286) 2024-06-20 16:19:41 +03:00
Ville Brofeldt
03969d5f90 chore(distributed-lock): refactor tests (#29302) 2024-06-20 15:58:25 +03:00
Ville Brofeldt
172ddb47d5 fix(metastore-cache): prune before add (#29301) 2024-06-20 14:59:32 +03:00
dependabot[bot]
99fc04b9a6 build(deps-dev): bump ws from 7.5.7 to 7.5.10 in /superset-embedded-sdk (#29308)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-19 11:21:58 -06:00
Evan Rusackas
36b1535199 chore(e2e): using updated repo secret, new Cypress project id (#29296) 2024-06-19 08:40:47 -06:00
BoMBaY
188b5f4781 docs: add Agoda to users list (#29300) 2024-06-19 12:24:07 +03:00
Ville Brofeldt
9f70697046 chore: use json codec for key value lock (#29285) 2024-06-19 01:33:47 +03:00
Maxime Beauchemin
796726376a chore: make flask-talisman work with test config (#29277) 2024-06-18 14:46:40 -07:00
JUST.in DO IT
4537ab6b1a fix(sqllab): excessive API calls for schemas (#29279) 2024-06-18 14:02:40 -07:00
JUST.in DO IT
725afc3848 fix(sqllab): invalid empty state on switch tab (#29278) 2024-06-18 11:45:09 -07:00
ka-weihe
527f1d20ad fix: filters not updating with force update when caching is enabled (#29291) 2024-06-18 13:56:56 -03:00
Maxime Beauchemin
ab7f8ad1bf docs: remove comment header in README.md (#29273) 2024-06-18 09:16:14 -07:00
dependabot[bot]
c7b8ae9013 build(deps): bump ws from 7.5.9 to 7.5.10 in /docs (#29275)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 16:20:34 -06:00
dependabot[bot]
358e83a849 build(deps): bump ws from 8.17.0 to 8.17.1 in /superset-websocket (#29276)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 16:20:09 -06:00
Maxime Beauchemin
d49d79121c chore: trigger CI jobs on all release-related branches (#29274) 2024-06-17 13:42:58 -07:00
Elizabeth Thompson
ae7c40920e chore: translate strings to French (#29247) 2024-06-17 13:01:04 -07:00
Jack
914ebd9ba3 fix(permalink): adding anchor to dashboard permalink generation (#28744) 2024-06-17 17:52:31 +02:00
Michael S. Molina
08e44c0850 feat: Improves the Drill By feature (#29242)
Co-authored-by: JUST.in DO IT <justin.park@airbnb.com>
2024-06-17 09:25:20 -03:00
JUST.in DO IT
ddc9f06786 refactor(sqllab): nonblocking delete query editor (#29233) 2024-06-14 12:25:55 -07:00
Antonio Rivero
7ddea62331 feat(table): Table with Time Comparison (#28057)
Co-authored-by: Lily Kuang <lily@preset.io>
Co-authored-by: lilykuang <jialikuang@gmail.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
2024-06-14 20:21:43 +02:00
Geido
37753cbdc2 fix: Catalog with restricted permissions produces an error during database connection (#29257) 2024-06-14 19:48:47 +02:00
Michael S. Molina
16c449748a fix: Custom SQL filter control (#29260) 2024-06-14 10:26:58 -07:00
Ross Mabbett
2418efe85c test(Explorer): Fix minor errors in ExploreViewContainer syntax, add tests (#29249) 2024-06-14 13:40:05 -03:00
John Bodley
b50e3af07c fix(sqllab): Do not strip comments when executing SQL statements (#29248) 2024-06-14 13:38:36 -03:00
JUST.in DO IT
05829cbda9 chore(sqllab): Add logging for actions (#28876) 2024-06-14 09:35:17 -07:00
Mehmet Salih Yavuz
66bd0ce3d0 test(storybook): fix component stories (#29245) 2024-06-14 16:33:08 +02:00
Vitor Avila
3dadefcfb0 feat: Support a dynamic minimum interval for alerts and reports (#29241) 2024-06-13 19:12:45 -03:00
Ross Mabbett
0dc9215c89 fix(Explore): Keep necessary form data to allow query mode switching (#29234) 2024-06-13 14:30:49 -03:00
John Bodley
daf37cbe58 chore: Remove the need for explicit bubble up of certain exceptions (#29235) 2024-06-13 09:36:59 -07:00
John Bodley
f185bbed3c chore: Set isolation level to READ COMMITTED for testing et al. (#28628) 2024-06-13 09:36:25 -07:00
John Bodley
53798c7904 feat(trino): Add functionality to upload data (#29164) 2024-06-13 08:55:09 -07:00
John Bodley
6b016da185 fix: Workaround for Pandas.DataFrame.to_csv bug (#28755) 2024-06-13 08:54:54 -07:00
JUST.in DO IT
31afb62e95 refactor(sqllab): nonblocking switch query editor (#29108) 2024-06-12 15:07:34 -07:00
JUST.in DO IT
a88979631e fix(sqllab): run previous state query (#29230) 2024-06-12 15:04:19 -07:00
dependabot[bot]
f2d5bbc671 build(deps-dev): bump braces from 3.0.2 to 3.0.3 in /superset-embedded-sdk (#29232)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-12 14:25:47 -06:00
Maxime Beauchemin
4bb2e2f8af chore: enable ruff lint rule TRY201 and B904 to improve raise stack traces (#29166) 2024-06-12 13:04:42 -07:00
Vitor Avila
5167d20f27 fix: Improving handling for tag relationship when deleting assets v2 (#29229) 2024-06-12 09:39:34 -07:00
Hex Café
a067ffb92d feat(echarts-pie): add string template support for labels (#28774) 2024-06-12 10:18:45 -06:00
RIS3cz
cc492ffed4 chore(intros): Update INTHEWILD.md (#29226) 2024-06-12 09:48:50 -06:00
dependabot[bot]
dfda0877c0 build(deps-dev): bump braces from 3.0.2 to 3.0.3 in /superset-websocket (#29167)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-11 15:28:46 -06:00
dependabot[bot]
a7294be94f chore(deps): bump distributions from 1.1.0 to 2.2.0 in /superset-frontend (#28836)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-11 15:28:20 -06:00
Pushpender Saini
8699571654 fix(maps): Load indian map borders correctly (Restores #24927 fixes) (#29170) 2024-06-11 15:06:50 -06:00
dependabot[bot]
adbbe8f453 build(deps): bump braces from 3.0.2 to 3.0.3 in /superset-frontend/cypress-base (#29168)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-11 14:05:44 -06:00
dependabot[bot]
2ea859e4e5 build(deps): bump braces from 3.0.2 to 3.0.3 in /docs (#29169)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-11 08:44:42 -07:00
dependabot[bot]
684e10d718 build(deps): update urijs requirement from ^1.19.8 to ^1.19.11 in /superset-frontend/plugins/legacy-preset-chart-deckgl (#28295)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: GitHub-Actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-10 20:49:18 -06:00
Vitor Avila
dd67772ad9 fix: Improving handling for tag relationship when deleting assets (#29117) 2024-06-10 16:14:26 -07:00
Matheus Batista
024cfd86e4 feat(formatters): Add custom d3-time-format locale (#24263) 2024-06-10 12:24:33 -06:00
Beto Dealmeida
8e15d4807f chore: s/MockFixture/MockerFixture/g (#29160) 2024-06-10 12:35:07 -04:00
Vishal
bfae2c8348 docs: Add Analytics Aura to INTHEWILD (#29142) 2024-06-10 09:29:16 -07:00
Kamil Gabryjelski
68fd189586 fix(mixed-timeseries-plugin): Second query stacks stacked on top of first query series (#29119) 2024-06-10 12:22:35 +02:00
Beto Dealmeida
5660f8e554 feat: OAuth2 client initial work (#29109) 2024-06-09 22:11:18 -04:00
JUST.in DO IT
fc9bc175e6 fix: CI failture due to Default React import (#29110) 2024-06-06 16:14:33 -07:00
Pranav Sadagopan
066f6b1f8a feat: add Current time-range options for time filter (#28637)
Co-authored-by: Evan Rusackas <evan@preset.io>
2024-06-06 14:07:09 -06:00
Sabyrzhan Tynybayev
f2e020e398 fix(helm): Set priorityClassName to pods (superset, celeryBeat, celeryBeatFlower, celeryBeatWorker, celeryBeatWebsocket, jobs) (#29091) 2024-06-06 11:55:55 -07:00
Nina Viereckel
9cdf6b88ad docs: Add Gavagai to INTHEWILD (#29104) 2024-06-06 11:24:04 -07:00
Enzo Martellucci
961cb961e9 refactor: Removes the export of QueryFormData (#28786) 2024-06-06 18:50:52 +03:00
Hex Café
5c9a79442c fix(embedded): add missing GUEST_TOKEN_HEADER_NAME to bootstrap data (#28932) 2024-06-05 18:58:38 -07:00
Maxime Beauchemin
8f02eb0a34 fix: Cypress CI process while opening PR from a fork (#29098) 2024-06-05 17:59:11 -07:00
Elizabeth Thompson
bb9f326f9b chore: change security error level (#28641) 2024-06-05 15:43:22 -07:00
Daniel
eef7828681 fix(i18n): improved Russian translation (#28572) 2024-06-05 13:46:26 -07:00
Michael Holthausen
de3a1d87b3 docs: various adjustments across the docs (#29093)
Co-authored-by: Evan Rusackas <evan@preset.io>
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
2024-06-05 14:53:08 -04:00
Maxime Beauchemin
b5d9ac0690 chore: only use cypress.io when triggered manually (#29077) 2024-06-05 11:10:40 -07:00
John Bodley
17d7e7e5e1 fix: Remove BASE_AXIS from pre-query (#29084) 2024-06-05 10:27:26 -07:00
Michael S. Molina
df0b1cb8ed feat: Adds Histogram chart migration logic (#28780) 2024-06-05 13:33:50 -03:00
JUST.in DO IT
dabb4e064f fix(explore): Drill to detail truncates int64 IDs (#29081) 2024-06-05 09:03:06 -07:00
Hans Lemm
d303852609 feat(helm): allow removal of Node & Worker replicas for custom HPA solutions (#28762) 2024-06-05 07:47:48 -07:00
Michael S. Molina
a9cebe81ea fix: CI errors as the result of removing React imports (#29089) 2024-06-05 09:09:49 -03:00
Đỗ Trọng Hải
0ca42a8e4d chore: remove React 16.4's obsolete React imports (#28571)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-06-05 08:13:24 -03:00
JUST.in DO IT
8a8ce16a1f refactor(sqllab): nonblocking new query editor (#28795) 2024-06-04 18:56:50 -07:00
bhaugeea
1a52c6a3b8 fix(embedded-sdk): add accessible title to iframe (#27017)
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-06-04 16:51:14 -06:00
Elizabeth Thompson
725375541d fix: use channel id with new slack api for file uploads (#28797) 2024-06-04 15:18:29 -07:00
Michael S. Molina
95706d9be2 feat: Adds the Featured Charts dashboard (#28789) 2024-06-04 16:59:10 -03:00
Michael S. Molina
896fe854dc feat: Adds the ECharts Histogram chart (#28652) 2024-06-04 09:35:18 -03:00
Joe Li
bc9eab9902 fix: Update downgrade path for migration to remove sl_tables (#28838) 2024-06-03 12:39:19 -07:00
dependabot[bot]
8b6496715f chore(deps-dev): update @types/lodash requirement from ^4.17.0 to ^4.17.4 in /superset-frontend/plugins/plugin-chart-handlebars (#28822)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: GitHub-Actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-03 09:23:07 -07:00
dependabot[bot]
e6c5435f72 chore(deps): bump core-js from 3.8.3 to 3.37.1 in /superset-frontend (#28814)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 10:09:58 -06:00
dependabot[bot]
22c5d510a0 chore(deps): bump @types/lodash from 4.17.0 to 4.17.4 in /superset-websocket (#28812)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 10:09:17 -06:00
dependabot[bot]
4640a6e382 chore(deps): bump react-intersection-observer from 9.8.2 to 9.10.2 in /superset-frontend (#28811)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 10:09:02 -06:00
dependabot[bot]
9b5a27f195 chore(deps): bump @types/json-bigint from 1.0.1 to 1.0.4 in /superset-frontend (#28808)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 10:08:42 -06:00
dependabot[bot]
f0066a859a chore(deps-dev): bump @docusaurus/tsconfig from 3.3.2 to 3.4.0 in /docs (#28801)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 10:07:48 -06:00
dependabot[bot]
aa766c0664 chore(deps): bump @ant-design/icons from 5.3.6 to 5.3.7 in /docs (#28799)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 09:56:57 -06:00
dependabot[bot]
25ace49ec1 chore(deps-dev): bump @types/react from 18.3.1 to 18.3.3 in /docs (#28802)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 09:56:28 -06:00
dependabot[bot]
84b893a7bd chore(deps): bump swagger-ui-react from 5.17.5 to 5.17.14 in /docs (#28805)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 09:56:15 -06:00
dependabot[bot]
a6a232fa47 chore(deps-dev): bump @docusaurus/module-type-aliases from 3.2.1 to 3.4.0 in /docs (#28806)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 09:55:55 -06:00
dependabot[bot]
940f79e7c0 chore(deps-dev): bump @types/node from 20.12.7 to 20.13.0 in /superset-websocket (#28809)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 09:55:41 -06:00
dependabot[bot]
fdad607de4 chore(deps-dev): bump @hot-loader/react-dom from 16.13.0 to 16.14.0 in /superset-frontend (#28817)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 09:54:40 -06:00
dependabot[bot]
4fd9170958 chore(deps-dev): bump exports-loader from 0.7.0 to 5.0.0 in /superset-frontend (#28827)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-02 21:11:18 -06:00
dependabot[bot]
c6f4d507e9 chore(deps-dev): bump imports-loader from 3.1.1 to 5.0.0 in /superset-frontend (#28826)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-02 21:10:25 -06:00
dependabot[bot]
ba848cf0e6 chore(deps): bump react-window and @types/react-window in /superset-frontend (#28824)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-02 21:09:15 -06:00
dependabot[bot]
dd7ce3755c chore(deps): bump debug from 4.3.4 to 4.3.5 in /superset-websocket/utils/client-ws-app (#28823)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-02 21:08:49 -06:00
Ross Mabbett
35e1820f8a fix(Mixed Chart Filter Control): Allow delete condition for adhoc_filters_b (#28771) 2024-05-31 14:44:37 -07:00
Elizabeth Thompson
a608bdb8d4 fix: use upload v2 for slack (#28783) 2024-05-30 14:10:05 -07:00
JUST.in DO IT
ce568c34f9 fix(dashboard): unable to resize due to the overlapped droptarget (#28772) 2024-05-30 13:08:33 -07:00
Maxime Beauchemin
2dbb44b725 chore: make docker-compose use less memory (#28773)
Co-authored-by: Evan Rusackas <evan@preset.io>
2024-05-30 11:42:03 -07:00
Beto Dealmeida
0070097af8 feat: impersonate with email prefix (#28770) 2024-05-30 13:32:39 -04:00
Maxime Beauchemin
7dd28a9003 chore: remove sl_ tables (#28704) 2024-05-29 19:04:37 -07:00
Maxime Beauchemin
8d57a35531 feat: bake translations as part of the build processes (#28483) 2024-05-29 16:58:08 -07:00
Elizabeth Thompson
78aa79bb15 chore(revert): "add listener to repaint on visibility change for canvas" (#28654) 2024-05-29 13:54:00 -07:00
Elizabeth Thompson
cbd3fa2190 fix: do not close database modal on mask click (#28750) 2024-05-29 13:53:35 -07:00
Beto Dealmeida
643ee17544 chore: remove duplicate code in SqlaTable (#28752) 2024-05-29 15:07:21 -04:00
Vitor Avila
020c79970f fix(reports): Update the element class to wait for when taking a screenshot (#28745) 2024-05-29 13:05:48 -06:00
JUST.in DO IT
453a645356 fix(sqllab): Sort db selector options by the API order (#28749) 2024-05-29 11:17:37 -07:00
Evan Rusackas
a67b0edfb2 fix(docs): fix url typo to fix a broken image (#28765) 2024-05-29 11:45:51 -06:00
Seboeb
f0662475ad chore: updated Dutch translations (#28710)
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-29 11:25:05 -06:00
Daniel Vaz Gaspar
5dfbab5424 fix: adds the ability to disallow SQL functions per engine (#28639) 2024-05-29 10:51:28 +01:00
SkinnyPigeon
6575cacc5d feat(reports): allowing the email mutator to update recipients (#27851) 2024-05-28 18:03:42 -07:00
Eyal Ezer
07b2449bd7 refactor: Unify all json.(loads|dumps) usage to utils.json (#28702)
Co-authored-by: Eyal Ezer <eyal.ezer@ge.com>
2024-05-28 14:17:41 -07:00
Daniel Vaz Gaspar
87110ebce4 fix: dashboard performance (#28609)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Joe Li <joe@preset.io>
2024-05-28 13:09:05 -07:00
Hex Café
f9d2451b23 feat: add Nightingale chart support for echarts pie chart (#28597) 2024-05-28 12:19:38 -06:00
github-actions[bot]
30dfd92577 chore(🦾): bump python celery 5.3.6 -> 5.4.0 (#28471)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 10:38:14 -07:00
Michael S. Molina
e17724a73a feat: Adds Bar chart migration logic (#28602) 2024-05-28 13:58:35 -03:00
dependabot[bot]
8c3250396f chore(deps): bump pug from 3.0.2 to 3.0.3 in /superset-websocket/utils/client-ws-app (#28742)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-28 09:20:29 -07:00
github-actions[bot]
c67e3e7e1d chore(🦾): bump python importlib-resources 5.12.0 -> 6.4.0 (#28716)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 09:02:19 -07:00
github-actions[bot]
18f327781d chore(🦾): bump python zipp 3.18.2 -> 3.19.0 (#28718)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:59:14 -07:00
github-actions[bot]
6a734e2746 chore(🦾): bump python cachetools 5.3.2 -> 5.3.3 (#28719)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:58:02 -07:00
github-actions[bot]
03a62aaa33 chore(🦾): bump python markdown-it-py 2.2.0 -> 3.0.0 (#28720)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:57:41 -07:00
John Bodley
4ff17409ab fix: Handling of column types for Presto, Trino, et al. (#28653) 2024-05-28 08:56:38 -07:00
github-actions[bot]
a59bad83d4 chore(🦾): bump python slack-sdk 3.21.3 -> 3.27.2 (#28721)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:54:56 -07:00
github-actions[bot]
42e05ce494 chore(🦾): bump python prompt-toolkit 3.0.38 -> 3.0.44 (#28727)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:54:35 -07:00
github-actions[bot]
4bdf7b560b chore(🦾): bump python attrs 23.1.0 -> 23.2.0 (#28729)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:54:16 -07:00
github-actions[bot]
307477a62a chore(🦾): bump python apsw 3.45.3.0 -> 3.46.0.0 (#28730)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:53:54 -07:00
github-actions[bot]
51dd41bb72 chore(🦾): bump python pytz 2021.3 -> 2024.1 (#28731)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:53:32 -07:00
Vitor Avila
0fdb4b7c23 chore(tags): Handle tagging as part of asset update call (#28570) 2024-05-28 11:41:31 -04:00
github-actions[bot]
475364248f chore(🦾): bump python wrapt 1.15.0 -> 1.16.0 (#28722)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:06:51 -07:00
github-actions[bot]
22d8074c49 chore(🦾): bump python limits 3.4.0 -> 3.12.0 (#28717)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:03:14 -07:00
github-actions[bot]
4d252647ef chore(🦾): bump python mako 1.3.3 -> 1.3.5 (#28723)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:01:19 -07:00
github-actions[bot]
f988d997ff chore(🦾): bump python marshmallow-sqlalchemy 0.23.1 -> 0.28.2 (#28724)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:00:59 -07:00
github-actions[bot]
0ed87c5d56 chore(🦾): bump python wcwidth 0.2.5 -> 0.2.13 (#28725)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:00:29 -07:00
github-actions[bot]
57bd3c35c2 chore(🦾): bump python pyasn1 0.5.1 -> 0.6.0 (#28726)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 08:00:14 -07:00
github-actions[bot]
b53ccf893f chore(🦾): bump python google-auth 2.27.0 -> 2.29.0 (#28732)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 07:58:56 -07:00
github-actions[bot]
4ad823e97a chore(🦾): bump python certifi 2023.7.22 -> 2024.2.2 (#28733)
Co-authored-by: GitHub Action <action@github.com>
2024-05-28 07:58:35 -07:00
github-actions[bot]
f7b273460d chore(🦾): bump python boto3 1.26.130 -> 1.34.112 (#28679)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-27 21:47:11 -07:00
Maxime Beauchemin
9ac0cf7d14 chore: remove ipython from development dependencies (#28703) 2024-05-25 01:25:12 -07:00
github-actions[bot]
5f553601f7 chore(🦾): bump python stack-data 0.6.2 -> 0.6.3 (#28661)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 22:39:43 -07:00
github-actions[bot]
c1a7bb4f62 chore(🦾): bump python googleapis-common-protos 1.59.0 -> 1.63.0 (#28663)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 22:39:23 -07:00
github-actions[bot]
eadf84d8cf chore(🦾): bump python ruff 0.4.4 -> 0.4.5 (#28669)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 22:39:08 -07:00
github-actions[bot]
c82c4b6877 chore(🦾): bump python matplotlib 3.7.1 -> 3.9.0 (#28674)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 22:38:51 -07:00
Sam Firke
2c982cf5b3 chore(docs): address common docker compose error message in Quickstart (#28696) 2024-05-24 15:36:39 -04:00
github-actions[bot]
278570bc38 chore(🦾): bump python requests-oauthlib 1.3.1 -> 2.0.0 (#28681)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-24 11:40:38 -07:00
github-actions[bot]
3d67346f77 chore(🦾): bump python flask-limiter 3.3.1 -> 3.7.0 (#28670)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:27:50 -07:00
github-actions[bot]
21486da2b4 chore(🦾): bump python marshmallow 3.19.0 -> 3.21.2 (#28655)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:22:20 -07:00
github-actions[bot]
820fecb481 chore(🦾): bump python bcrypt 4.0.1 -> 4.1.3 (#28590)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:22:13 -07:00
github-actions[bot]
f39eda150f chore(🦾): bump python bottleneck 1.3.7 -> 1.3.8 (#28657)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:19:16 -07:00
github-actions[bot]
a5df955a39 chore(🦾): bump python cattrs 23.2.1 -> 23.2.3 (#28658)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:19:08 -07:00
github-actions[bot]
63e98286e9 chore(🦾): bump python typing-extensions 4.11.0 -> 4.12.0 (#28659)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:18:57 -07:00
github-actions[bot]
6044f643ed chore(🦾): bump python wheel 0.40.0 -> 0.43.0 (#28660)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:18:19 -07:00
github-actions[bot]
65937947a9 chore(🦾): bump python pexpect 4.8.0 -> 4.9.0 (#28662)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:17:56 -07:00
github-actions[bot]
a48128d317 chore(🦾): bump python traitlets 5.9.0 -> 5.14.3 (#28665)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:17:47 -07:00
github-actions[bot]
207a5f054b chore(🦾): bump python freezegun 1.4.0 -> 1.5.1 (#28666)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:17:39 -07:00
github-actions[bot]
dfc2ee2a88 chore(🦾): bump python babel 2.9.1 -> 2.15.0 (#28668)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:16:59 -07:00
github-actions[bot]
1fd2f2c80e chore(🦾): bump python pyproject-api 1.5.2 -> 1.6.1 (#28672)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:16:01 -07:00
github-actions[bot]
94f1c4d2a9 chore(🦾): bump python click-repl 0.2.0 -> 0.3.0 (#28671)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:15:50 -07:00
github-actions[bot]
8953a822a4 chore(🦾): bump python kombu 5.3.4 -> 5.3.7 (#28675)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:15:24 -07:00
github-actions[bot]
e5341d28e4 chore(🦾): bump python cffi 1.15.1 -> 1.16.0 (#28676)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:15:05 -07:00
github-actions[bot]
d8b69c2656 chore(🦾): bump python click-didyoumean 0.3.0 -> 0.3.1 (#28677)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:14:48 -07:00
github-actions[bot]
796f279aec chore(🦾): bump python identify 2.5.24 -> 2.5.36 (#28680)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:14:32 -07:00
github-actions[bot]
b99a815da5 chore(🦾): bump python pydruid 0.6.6 -> 0.6.9 (#28682)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:13:21 -07:00
github-actions[bot]
61d44488dd chore(🦾): bump python kiwisolver 1.4.4 -> 1.4.5 (#28683)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:13:01 -07:00
github-actions[bot]
344d359ba9 chore(🦾): bump python requests 2.31.0 -> 2.32.2 (#28684)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 11:12:42 -07:00
github-actions[bot]
296f67197e chore(🦾): bump python dnspython 2.1.0 -> 2.6.1 (#28574)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 10:34:58 -07:00
github-actions[bot]
bf80273577 chore(🦾): bump python rich 13.3.4 -> 13.7.1 (#28573)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 10:34:19 -07:00
github-actions[bot]
d07cebc220 chore(🦾): bump python pygments 2.15.0 -> 2.18.0 (#28535)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 10:33:08 -07:00
github-actions[bot]
6ecbaf3468 chore(🦾): bump python deprecated 1.2.13 -> 1.2.14 (#28580)
Co-authored-by: GitHub Action <action@github.com>
2024-05-24 10:31:23 -07:00
github-actions[bot]
a4ed34ceaf chore(🦾): bump python tzlocal 4.3 -> 5.2 (#28526)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-24 10:30:32 -07:00
github-actions[bot]
876074cc50 chore(🦾): bump python lazy-object-proxy 1.9.0 -> 1.10.0 (#28533)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-24 10:30:20 -07:00
github-actions[bot]
5eb9002868 chore(🦾): bump python jsonlines 3.1.0 -> 4.0.0 (#28527)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-23 18:14:40 -07:00
github-actions[bot]
2b73b6a80c chore(🦾): bump python flask-babel 1.0.0 -> 2.0.0 (#28576)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:10:06 -07:00
github-actions[bot]
5d52aaf49d chore(🦾): bump python tqdm 4.65.0 -> 4.66.4 (#28577)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:07:08 -07:00
github-actions[bot]
245a369d9f chore(🦾): bump python parso 0.8.3 -> 0.8.4 (#28578)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:06:36 -07:00
github-actions[bot]
d5886dc180 chore(🦾): bump python tzdata 2023.3 -> 2024.1 (#28579)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:06:11 -07:00
github-actions[bot]
bf7946e31c chore(🦾): bump python ijson 3.2.0.post0 -> 3.2.3 (#28581)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:05:25 -07:00
github-actions[bot]
071df0263c chore(🦾): bump python apsw 3.42.0.1 -> 3.45.3.0 (#28582)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:04:59 -07:00
github-actions[bot]
d625a5b99c chore(🦾): bump python distlib 0.3.6 -> 0.3.8 (#28583)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:04:38 -07:00
github-actions[bot]
948c0d08f3 chore(🦾): bump python pycparser 2.20 -> 2.22 (#28585)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:04:09 -07:00
github-actions[bot]
262a2fc5fb chore(🦾): bump python idna 3.2 -> 3.7 (#28589)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:03:50 -07:00
github-actions[bot]
51f49c4df4 chore(🦾): bump python pre-commit 3.7.0 -> 3.7.1 (#28586)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:03:12 -07:00
github-actions[bot]
c42f674089 chore(🦾): bump python sqlalchemy-bigquery 1.10.0 -> 1.11.0 (#28587)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:02:50 -07:00
github-actions[bot]
7a55ea717d chore(🦾): bump python google-resumable-media 2.5.0 -> 2.7.0 (#28588)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:02:32 -07:00
github-actions[bot]
057656f8be chore(🦾): bump python zipp 3.18.1 -> 3.18.2 (#28591)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:01:22 -07:00
github-actions[bot]
d6a90b0abd chore(🦾): bump python pip-tools 7.3.0 -> 7.4.1 (#28593)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 18:00:51 -07:00
github-actions[bot]
8ae2974a8e chore(🦾): bump python ruff 0.4.0 -> 0.4.4 (#28584)
Co-authored-by: GitHub Action <action@github.com>
2024-05-23 17:59:50 -07:00
github-actions[bot]
575c54f48e chore(🦾): bump python tomlkit 0.11.8 -> 0.12.5 (#28540)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-23 16:14:31 -07:00
github-actions[bot]
ac2e0e227a chore(🦾): bump python db-dtypes 1.1.1 -> 1.2.0 (#28541)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-23 16:14:18 -07:00
Maxime Beauchemin
35284589cb feat: unpack payload into log function (#28521) 2024-05-23 10:40:15 -07:00
Daniel Vaz Gaspar
1573c101a7 fix(ci): restrict issue comments to members or owners (#28633) 2024-05-22 22:31:54 +01:00
Hugh A. Miles II
ac53f7fea9 feat: Data Zoom scrolls using the mouse (mark II) (#28629) 2024-05-22 10:17:49 -07:00
John Bodley
4fa7619b1f fix: revert fix(presto preview): re-enable schema previsualization for Trino/Presto table/schemas" (#28613) 2024-05-21 15:23:32 -03:00
Elizabeth Thompson
62a0336425 fix: add listener to repaint on visibility change for canvas (#28568) 2024-05-21 09:52:32 -07:00
Ross Mabbett
0d5aec12d4 refactor(superset-ui-core): Migrate ChartFrame to RTL (#28563) 2024-05-21 18:21:47 +02:00
John Bodley
1c48fe05fd fix: Update migration logic in #27119 (#28482) 2024-05-20 11:30:56 -07:00
Eyal Ezer
56f0fc4ec2 refactor: Migration of json utilities from core (#28522)
Co-authored-by: Eyal Ezer <eyal.ezer@ge.com>
2024-05-20 10:27:22 -07:00
Geido
e954360eec fix: Fixes workflow Applitools Cypress (#28566) 2024-05-20 16:32:31 +03:00
github-actions[bot]
389d8b5b5d chore(🦾): bump python nodeenv 1.7.0 -> 1.8.0 (#28532)
Co-authored-by: GitHub Action <action@github.com>
2024-05-19 00:58:36 -07:00
github-actions[bot]
78530c6c17 chore(🦾): bump python numba 0.57.1 -> 0.59.1 (#28537)
Co-authored-by: GitHub Action <action@github.com>
2024-05-19 00:58:03 -07:00
github-actions[bot]
51d50358a0 chore(🦾): bump python dill 0.3.6 -> 0.3.8 (#28539)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-19 00:56:53 -07:00
github-actions[bot]
a27eea3450 chore(🦾): bump python charset-normalizer 3.2.0 -> 3.3.2 (#28531)
Co-authored-by: GitHub Action <action@github.com>
2024-05-19 00:56:29 -07:00
github-actions[bot]
3d8efbc6df chore(🦾): bump python jsonschema-spec 0.1.4 -> 0.1.6 (#28530)
Co-authored-by: GitHub Action <action@github.com>
2024-05-19 00:53:48 -07:00
Sivaramakrishnan Vaidyanathan
c51ca98e14 fix: Add back description column to saved queries #12431 (#28349)
Co-authored-by: SRK <sivaramakrishnan_vaidyanathan@apple.com>
Co-authored-by: ʈᵃᵢ <tai@apache.org>
2024-05-17 13:18:14 -06:00
Michael S. Molina
c9aa4a1f84 fix: Revert "fix: don't strip SQL comments in Explore (#28363)" (#28567) 2024-05-17 15:01:23 -03:00
aehanno
a2947d0c23 fix: Correction translation (#28497) 2024-05-17 10:09:19 -06:00
JUST.in DO IT
956511f7ef fix(explore): hide a control wrapped with StashFormDataContainer correctly (#28555) 2024-05-16 18:30:18 -03:00
JUST.in DO IT
5ae645828f fix: db migration revision (#28556) 2024-05-16 18:10:29 -03:00
aikawa-ohno
9924cfdf3c fix(i18n): Adding and modifying Japanese translations (#28487) 2024-05-16 10:50:48 -06:00
Beto Dealmeida
5da6d2bd88 feat: add support for catalogs (#28416) 2024-05-16 12:49:31 -04:00
Antonio Rivero
b1f85dce71 refactor(plugins): BigNumber Time Comparison with existing time_offset API (#27718)
Co-authored-by: lilykuang <jialikuang@gmail.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
2024-05-16 18:47:50 +02:00
github-actions[bot]
b69958b412 chore(🦾): bump python croniter 2.0.3 -> 2.0.5 (#28474)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 09:33:05 -07:00
github-actions[bot]
87f8340da4 chore(🦾): bump python amqp 5.1.1 -> 5.2.0 (#28536)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 09:32:14 -07:00
github-actions[bot]
c90eea2b31 chore(🦾): bump python flask-jwt-extended 4.5.3 -> 4.6.0 (#28544)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 09:26:29 -07:00
github-actions[bot]
bac71613de chore(🦾): bump python requests-cache 1.1.1 -> 1.2.0 (#28542)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 09:18:18 -07:00
github-actions[bot]
24fa7a94d0 chore(🦾): bump python zope-event 4.5.0 -> 5.0 (#28528)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 09:17:47 -07:00
github-actions[bot]
02b98b9565 chore(🦾): bump python pyasn1-modules 0.3.0 -> 0.4.0 (#28545)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 09:15:33 -07:00
Geido
938a7270eb fix(Dashboard): Prevent scroll when hovering filters (#28550) 2024-05-16 16:06:00 +03:00
Puridach wutthihathaithamrong
aa2b060da8 feat: Customizable email subject name (#26327)
Co-authored-by: Puridach Wutthihathaithamrong <>
2024-05-16 16:04:42 +03:00
github-actions[bot]
bfb92976cb chore(🦾): bump python fonttools 4.43.0 -> 4.51.0 (#28500)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 00:32:46 -07:00
github-actions[bot]
c08849883d chore(🦾): bump python email-validator 1.1.3 -> 2.1.1 (#28503)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 00:31:50 -07:00
github-actions[bot]
c369e8161c chore(🦾): bump python numexpr 2.9.0 -> 2.10.0 (#28506)
Co-authored-by: GitHub Action <action@github.com>
2024-05-16 00:27:30 -07:00
Evan Rusackas
cafc1a2c13 feat(maps): Adding ALL the countries to the Country Map plugin! 🌎 (#28265) 2024-05-15 15:35:56 -06:00
Maxime Beauchemin
97341a14b9 fix: move to slack-sdk files_upload_v2 (#28423) 2024-05-15 14:31:57 -07:00
Aleksey Karpov
8f0baa45b6 chore(docker): Reduce image size and update GECKODRIVER_VERSION ,FIRE… (#28508) 2024-05-15 15:02:04 -06:00
Evan Rusackas
0d5f08a2fd docs: creating a redirect for a legacy link about pre-commit hook (#28499) 2024-05-15 13:51:11 -06:00
Michael S. Molina
2defa10d37 chore: Adds setActiveTabs back (#28520) 2024-05-15 16:12:40 -03:00
Eyal Ezer
5f714b707c fix: utf-16 json encoder support (#28486)
Co-authored-by: Eyal Ezer <eyal.ezer@ge.com>
2024-05-15 08:53:19 -07:00
Jack
f420005b57 chore(docs): updating alerts & reports documentation WEBDRIVER_BASEURL settings for docker compose (#27951)
Co-authored-by: Evan Rusackas <evan@preset.io>
2024-05-15 08:52:15 -07:00
Vitor Avila
6232aac95a chore(D2D): Add granular permission for dashboard drilling operations (#28435) 2024-05-15 15:31:30 +01:00
Daniel Vaz Gaspar
11164e2450 fix: improve df to records performance (#28512) 2024-05-15 15:30:23 +01:00
JUST.in DO IT
65e0d54fa5 fix(dashboard): invalid drop item on a tab (#28507) 2024-05-15 08:48:14 -03:00
Michael S. Molina
821c7d7f2c fix: Time shifts calculation for ECharts plugins (#28432) 2024-05-15 08:11:52 -03:00
Daniel Vaz Gaspar
f0b7b95d05 chore: deprecate old Dashboard endpoints (#28399) 2024-05-15 09:36:47 +01:00
Daniel Vaz Gaspar
d7b6f1cb5d fix: bump sqlparse to 0.5.0 (#28144) 2024-05-15 09:36:20 +01:00
Daniel Vaz Gaspar
c12deed12e chore: deprecate multiple old APIs (#28492) 2024-05-14 22:00:45 +01:00
Daniel Vaz Gaspar
4f693c6db0 chore: bump gunicorn to 22.0.0 (#28490) 2024-05-14 20:06:41 +01:00
Michael S. Molina
964202adff chore: Don't mark Helm releases as latest (#28498) 2024-05-14 16:00:28 -03:00
Enzo Martellucci
920f2f437e refactor: Migrate saveModalActions to TypeScript (#28046) 2024-05-14 17:51:44 +03:00
Beto Dealmeida
b160fd40c8 chore: remove lost file (#28484) 2024-05-13 18:49:31 -04:00
Balthazar Rouberol
afdf0389a3 fix(presto preview): re-enable schema previsualization for Trino/Presto table/schemas (#26782) 2024-05-13 15:16:12 -07:00
dependabot[bot]
4c8e9a1414 build(deps): bump ejs from 3.1.8 to 3.1.10 in /superset-frontend (#28309)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 15:44:07 -06:00
github-actions[bot]
e9de641705 chore(🦾): bump python redis subpackage(s) (#28467)
Co-authored-by: GitHub Action <action@github.com>
2024-05-13 12:47:39 -07:00
github-actions[bot]
2199f6f60d chore(🦾): bump python flask-compress 1.14 -> 1.15 (#28469)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
2024-05-13 12:35:14 -07:00
Daniel Vaz Gaspar
0cb60aea8f chore: deprecate old Dataset related endpoints (#28453) 2024-05-13 20:09:47 +01:00
John Bodley
1ccbc655eb fix: Update migration logic in #27119 (#28422) 2024-05-13 11:55:59 -07:00
github-actions[bot]
e6aba5979a chore(🦾): bump python geopy subpackage(s) (#28479)
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Maxime Beauchemin <maximebeauchemin@gmail.com>
2024-05-13 11:45:01 -07:00
github-actions[bot]
fedd24522c chore(🦾): bump python cryptography 42.0.5 -> 42.0.7 (#28468)
Co-authored-by: GitHub Action <action@github.com>
2024-05-13 11:32:20 -07:00
github-actions[bot]
908a9bbb4c chore(🦾): bump python flask-session subpackage(s) (#28472)
Co-authored-by: GitHub Action <action@github.com>
2024-05-13 11:23:12 -07:00
github-actions[bot]
62b1757b07 chore(🦾): bump python flask-migrate subpackage(s) (#28465)
Co-authored-by: GitHub Action <action@github.com>
2024-05-13 10:53:42 -07:00
github-actions[bot]
e8ba5045d9 chore(🦾): bump python markdown subpackage(s) (#28464)
Co-authored-by: GitHub Action <action@github.com>
2024-05-13 10:49:44 -07:00
github-actions[bot]
3f5ffc7026 chore(🦾): bump python flask-caching 2.1.0 -> 2.3.0 (#28463)
Co-authored-by: GitHub Action <action@github.com>
2024-05-13 10:46:37 -07:00
Daniel Vaz Gaspar
356a58d5f6 fix: jwt extended broken by flask bump (#28451) 2024-05-13 17:51:29 +01:00
Jack
d871b4d267 fix(ar-modal): updateNotificationSettings not updating state (#28409) 2024-05-13 09:38:12 -07:00
Craig Rueda
89dbb9888c chore(models): Adding encrypted field checks (#28436) 2024-05-13 09:29:52 -07:00
Kamil Gabryjelski
983f809951 fix: Color scheme control crashing when dashboardId present (#28457) 2024-05-13 18:00:29 +02:00
lodu
e1cd0547de chore(helm): bumping app version to 4.0.1 in helm chart (#28456) 2024-05-13 15:43:58 +01:00
Michael S. Molina
d25928f125 chore: Updates CHANGELOG.md with 4.0.1 data (#28452) 2024-05-13 11:22:02 -03:00
Đỗ Trọng Hải
4f51f05133 fix(ci): fix failed docker-build CI job (#28442)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-05-13 11:48:08 +01:00
Daniel Vaz Gaspar
54e02f5b11 chore: deprecate old Database endpoints (#28404) 2024-05-13 08:42:56 +01:00
Sam Firke
add79a4b24 fix(docs): add missing link to meta-cross-db feature flag docs (#28433) 2024-05-10 15:05:19 -06:00
Ross Mabbett
b0157649af fix(dashboard): Change class name on last Droppable in a column (#28395) 2024-05-10 12:13:54 -07:00
Maxime Beauchemin
e91669821e fix: run some CI tests against previous python version (#28419) 2024-05-10 12:04:29 -07:00
JUST.in DO IT
02478e5b95 feat(dashboard): Add metadata bar to the header (#27857) 2024-05-10 10:28:57 -07:00
JUST.in DO IT
3a62eab163 fix(SIP-95): missing catalog cache key (#28415) 2024-05-10 10:18:14 -07:00
Maxime Beauchemin
26df7b4ad5 feat: clarify that 'Text' supports markdown (#28425) 2024-05-10 09:17:37 -07:00
Maxime Beauchemin
76a9e1d37d fix: set supersetbot orglabel to always succeed (#28418) 2024-05-10 09:08:19 -07:00
Maxime Beauchemin
5bad7fc4f3 chore(🦾): bump python werkzeug 3.0.1 -> 3.0.3 (#28421) 2024-05-10 09:07:30 -07:00
Sam Firke
8f9663ac67 chore(docs): fix two broken Docusaurus redirect links (#28430) 2024-05-10 08:29:13 -06:00
Elizabeth Thompson
93e654212c fix: update development.mdx (#28412) 2024-05-10 10:03:19 -04:00
Đỗ Trọng Hải
7da6147bf8 chore(build): fix issue that prevent eslint displaying type-check report during build (#28379)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-05-09 22:14:24 -07:00
Beto Dealmeida
498c608667 fix: pass catalog when estimating query cost (#28410) 2024-05-09 21:56:11 -04:00
Beto Dealmeida
f29e1e4c29 feat: catalog support for Databricks native (#28394) 2024-05-09 17:41:15 -04:00
Beto Dealmeida
e516bba8fc fix: table autocomplete should pass catalog (#28413) 2024-05-09 15:57:31 -04:00
Vitor Avila
307ebeaa19 chore(Databricks): New Databricks driver (#28393) 2024-05-09 14:58:03 -04:00
Beto Dealmeida
e6a85c5901 fix: export/import catalogs (#28408) 2024-05-09 14:42:03 -04:00
Beto Dealmeida
ba2cf5dbbc chore: unit tests for catalog_access (#28406) 2024-05-09 14:41:33 -04:00
Michael S. Molina
de1ae2bd48 chore: Updates CHANGELOG.md with 3.1.3 data (#28398) 2024-05-09 13:07:21 -03:00
Maxime Beauchemin
499fb2c631 chore: add a github "action-validator" in CI (#28358) 2024-05-09 08:26:27 -07:00
Kamil Gabryjelski
bbfe5c0ae8 feat(explore): Color scheme groups, new color schemes (#27995) 2024-05-09 16:43:58 +02:00
Daniel Vaz Gaspar
b224b8331a fix: type annotation breaking on py3.9 (#28396) 2024-05-09 14:44:24 +01:00
Daniel Vaz Gaspar
9c065951e7 fix: tests on database, dataset, saved_queries apis (#28397) 2024-05-09 13:43:31 +01:00
Daniel Vaz Gaspar
e1a440fa36 chore: remove and deprecate old CSS templates endpoints (#28387) 2024-05-09 09:38:32 +01:00
Beto Dealmeida
ce668d46cc feat(SIP-95): catalogs in SQL Lab and datasets (#28376) 2024-05-08 17:19:36 -04:00
JUST.in DO IT
07cd1d89d0 fix(explore): hide advanced analytics for non temporal xaxis (#28312) 2024-05-08 17:40:28 -03:00
Jonathan Schneider
c8185694be fix: update links to reference docs listing Superset issue codes (#28389) 2024-05-08 15:08:38 -04:00
Michael S. Molina
55f3b46f41 fix: Contribution percentages for ECharts plugins (#28368) 2024-05-08 15:54:21 -03:00
Michael S. Molina
9e4ba6762f fix: Scroll to top when selecting a global dashboard tab (#28386) 2024-05-08 15:54:00 -03:00
Kamil Gabryjelski
5a13e64dc6 fix: Revert "chore(build): uplift webpack-related packages to v5 (#28342)" (#28384) 2024-05-08 15:40:05 +02:00
Đỗ Trọng Hải
8c27d4d47f chore(build): uplift webpack-related packages to v5 (#28342)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-05-08 10:29:07 +02:00
Daniel Vaz Gaspar
bd1c3fcba4 docs: update CVE list (#28373) 2024-05-08 08:31:32 +01:00
Vitor Avila
1bf04015c6 feat(reports): Set a minimum interval for each report's execution (#28176) 2024-05-07 18:28:12 -07:00
Ross Mabbett
f04b4e87fb refactor(superset-ui-core): Migrate FallbackComponent.test to RTL (#28359) 2024-05-07 16:12:55 -07:00
Maxime Beauchemin
c618767c6b fix: don't strip SQL comments in Explore (#28363) 2024-05-07 14:49:46 -07:00
Maxime Beauchemin
b7ac526257 docs: clarifying that config.SQL_QUERY_MUTATOR does not affect cache (#28360) 2024-05-07 14:00:06 -07:00
Michael S. Molina
b549977f05 feat: Utility function to render chart tooltips (#27950) 2024-05-07 13:00:30 -03:00
John Bodley
467e612533 fix: Remedy logic for UpdateDatasetCommand uniqueness check (#28341) 2024-05-07 06:42:37 -07:00
Michael S. Molina
b4ab36a6a5 fix: Small tweaks for Line and Area chart migrations (ECharts) (#28334)
Co-authored-by: John Bodley <4567245+john-bodley@users.noreply.github.com>
2024-05-07 10:40:33 -03:00
dependabot[bot]
10c78960a7 build(deps): bump swagger-ui-react from 5.17.2 to 5.17.5 in /docs (#28362)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-06 14:51:11 -06:00
Đỗ Trọng Hải
a2f0b988d4 feat(docs): uplift Docusaurus to v3 (#28345)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-05-06 12:30:51 -07:00
Maxime Beauchemin
c10cee3a39 fix: use pessimistic json encoder in SQL Lab (#28266) 2024-05-06 12:23:50 -07:00
Maxime Beauchemin
d1e13ab3e4 chore: fix master build by merging alembic migration heads (#28361) 2024-05-06 11:54:16 -07:00
JUST.in DO IT
2a7bfa4bb3 fix: Missing sql_editor_id index (#27392)
Co-authored-by: Michael S. Molina <michael.s.molina@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2024-05-06 10:45:33 -07:00
Đỗ Trọng Hải
0f301450e0 docs(intro): embed overview video into README.md (#28344)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-05-06 09:53:10 -07:00
John Bodley
27c93f438a chore: Add Apache Spark Jinja template processor (#28335) 2024-05-06 09:24:25 -07:00
Đỗ Trọng Hải
bf5ff55074 fix(ci): correct input type for allow-dependencies-licenses in Dependency Review GH action (#28343)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-05-06 09:00:09 -07:00
Beto Dealmeida
e90246fd1f feat(SIP-95): permissions for catalogs (#28317) 2024-05-06 11:41:58 -04:00
Daniel Vaz Gaspar
9a339f08a7 feat: new Columnar upload form and API (#28192) 2024-05-06 15:51:42 +01:00
Maxime Beauchemin
f5843fe588 fix: database logos look stretched (#28340) 2024-05-03 17:23:42 -07:00
Maxime Beauchemin
49231da42f docs: various improvements across the docs (#28285) 2024-05-03 15:27:40 -07:00
Frank Zimper
517f254726 fix(website): links corrected (#28333) 2024-05-03 10:18:05 -07:00
dependabot[bot]
f95d9cde40 build(deps): bump ws from 8.16.0 to 8.17.0 in /superset-websocket (#28288)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 22:31:30 -06:00
Lily Kuang
49992dd9d2 docs: add npm publish steps to release/readme (#23730)
Co-authored-by: Nicolas Charpentier <nicolas.charpentier079@gmail.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2024-05-02 22:28:23 -06:00
Asaf Levy
3e74ff174c refactor(helm): Allow chart operators to exclude the creation of the secret manifest (#28308) 2024-05-02 22:08:32 -06:00
John Bodley
b4c4ab7790 fix: Rename legacy line and area charts (#28113) 2024-05-02 17:04:22 -03:00
Đỗ Trọng Hải
5331dc740a chore(dev): remove obsolete image reference to superset-websocket + fix minor typo (#28321)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-05-02 11:42:00 -07:00
John Bodley
27952e7057 fix: Ignore USE SQL keyword when determining SELECT statement (#28279) 2024-05-02 11:25:55 -07:00
John Bodley
0ce5864fc7 chore: Move #26288 from "Database Migration" to "Other" (#28311) 2024-05-02 10:17:46 -07:00
Đỗ Trọng Hải
593c653ab5 fix(docs): prevent browser to download the entire video in first page load + fix empty controls attribute (#28319) 2024-05-02 11:15:39 -06:00
John Bodley
d36bccdc8c fix(sql_parse): Add Apache Spark to SQLGlot dialect mapping (#28322) 2024-05-02 09:53:20 -07:00
Maxime Beauchemin
513852b7c3 fix: all_database_access should enable access to all datasets/charts/dashboards (#28205) 2024-05-02 09:25:14 -07:00
John Bodley
e94360486e chore(commands): Remove unnecessary commit (#28154) 2024-05-01 16:09:50 -06:00
dependabot[bot]
b17db6d669 build(deps): bump markdown-to-jsx from 7.4.1 to 7.4.7 in /superset-frontend (#28298)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:22:53 -06:00
dependabot[bot]
f4b6c3049b build(deps): bump clsx from 2.1.0 to 2.1.1 in /docs (#28301)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:22:09 -06:00
dependabot[bot]
55391bb587 build(deps-dev): bump eslint-plugin-testing-library from 6.2.0 to 6.2.2 in /superset-frontend (#28306)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:21:07 -06:00
Beto Dealmeida
38e2843b24 chore: clean up DB create command (#28246) 2024-05-01 11:06:26 -04:00
JUST.in DO IT
7c8423a522 fix(explore): cannot reorder dnd of Metrics (#28269) 2024-05-01 10:13:12 -03:00
Maxime Beauchemin
ec8351d336 feat: accelerate webpack builds with filesystem cache (#28282) 2024-04-30 23:18:20 -07:00
Evan Rusackas
e4f93b293f chore(docs): video now hosted by ASF instead of GitHub (#28284) 2024-04-30 23:41:16 -06:00
Maxime Beauchemin
2b4b771449 fix: silence docker-compose useless warnings (#28283) 2024-04-30 19:35:02 -07:00
Maxime Beauchemin
538d1bb245 docs: merge database config under Configuration section (#28281) 2024-04-30 18:39:32 -07:00
Maxime Beauchemin
3ac387bb66 chore: enable ruff's isort equivalent (#28267) 2024-04-30 18:29:49 -07:00
Beto Dealmeida
fe37d914e5 fix: % replace in values_for_column (#28271) 2024-04-30 16:15:56 -07:00
Maxime Beauchemin
51da5adbc7 chore: allow codecov to detect SHA (#28278) 2024-04-30 15:32:33 -07:00
Evan Rusackas
3cc8434c5a fix(ci): adding codecov token (#28277) 2024-04-30 14:23:35 -06:00
Radek Antoniuk
c641bbfb9e chore: use depth=1 for cloning (#28276) 2024-04-30 14:20:29 -06:00
Đỗ Trọng Hải
2e9cc654ef docs(intro): embed overview video into Intro document (#28163)
Signed-off-by: hainenber <dotronghai96@gmail.com>
2024-04-30 12:59:35 -06:00
Mathias Bögl
f03de27a92 docs(upgrading): clarify upgrade process (#28275) 2024-04-30 12:28:15 -04:00
Ross Mabbett
601896b1fc chore(superset-ui-core and NoResultsComponent): Migrate to RTL, add RTL modules to the ui-core (#28187) 2024-04-30 16:10:35 +03:00
Ross Mabbett
2e5f3ed851 fix(Dev-Server): Edit ChartPropsConfig reexport to be a type object (#28225) 2024-04-30 16:09:33 +03:00
Ross Mabbett
a38dc90abe fix(Webpack dev-sever warnings): Add ignoreWarning to webpack config for @data-ui error (#28232) 2024-04-30 16:07:55 +03:00
Ross Mabbett
efda57e8a5 chore(AlteredSliceTag): Migrate to functional (#27891)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2024-04-30 14:55:11 +03:00
JUST.in DO IT
44690fb299 fix(dashboard): unable to drop tabs in columns (#28242) 2024-04-29 14:50:25 -03:00
Maxime Beauchemin
f9f0bc687d docs: set up redirects (#28247)
Co-authored-by: Sam Firke <sfirke@users.noreply.github.com>
2024-04-29 10:38:09 -07:00
Ross Mabbett
4d2247a7e1 fix(Webpack dev-server build warning): Create false value alias for moment-with-locales (#28229) 2024-04-29 10:27:06 -07:00
JUST.in DO IT
743c0bde7e fix(explore): temporal column mixin (#28241) 2024-04-29 10:01:05 -07:00
dependabot[bot]
c975f97ce8 build(deps): bump polished from 3.7.2 to 4.3.1 in /superset-frontend (#28240)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-29 10:28:54 -06:00
Evan Rusackas
76d897eaa2 docs(maps): jupyter notebook now auto-updates docs site (#27003) 2024-04-27 14:33:12 -06:00
2396 changed files with 409571 additions and 477106 deletions

View File

@@ -63,9 +63,12 @@ github:
# combination here.
contexts:
- lint-check
- cypress-matrix (0, chrome)
- cypress-matrix (1, chrome)
- cypress-matrix (2, chrome)
- cypress-matrix (3, chrome)
- cypress-matrix (4, chrome)
- cypress-matrix (5, chrome)
- frontend-build
- pre-commit
- python-lint

4
.github/CODEOWNERS vendored
View File

@@ -30,7 +30,3 @@
**/*.geojson @villebro @rusackas
/superset-frontend/plugins/legacy-plugin-chart-country-map/ @villebro @rusackas
# Translations are a finnicky contribution that we care about
/superset/translations/ @villebro @rusackas

View File

@@ -46,8 +46,8 @@ body:
label: Superset version
options:
- master / latest-dev
- "4.0.0"
- "3.1.2"
- "4.0.1"
- "3.1.3"
validations:
required: true
- type: dropdown

View File

@@ -29,6 +29,8 @@ runs:
echo "PYTHON_VERSION=3.10" >> $GITHUB_ENV
elif [ "${{ inputs.python-version }}" = "next" ]; then
echo "PYTHON_VERSION=3.11" >> $GITHUB_ENV
elif [ "${{ inputs.python-version }}" = "previous" ]; then
echo "PYTHON_VERSION=3.9" >> $GITHUB_ENV
else
echo "PYTHON_VERSION=${{ inputs.python-version }}" >> $GITHUB_ENV
fi

View File

@@ -117,9 +117,17 @@ testdata() {
say "::endgroup::"
}
codecov() {
say "::group::Upload code coverage"
bash ".github/workflows/codecov.sh" "$@"
celery-worker() {
cd "$GITHUB_WORKSPACE"
say "::group::Start Celery worker"
# must specify PYTHONPATH to make `tests.superset_test_config` importable
export PYTHONPATH="$GITHUB_WORKSPACE"
celery \
--app=superset.tasks.celery_app:app \
worker \
--concurrency=2 \
--detach \
--optimization=fair
say "::endgroup::"
}
@@ -135,35 +143,10 @@ cypress-install() {
cache-save cypress
}
# Run Cypress and upload coverage reports
cypress-run() {
cypress-run-all() {
local USE_DASHBOARD=$1
cd "$GITHUB_WORKSPACE/superset-frontend/cypress-base"
local page=$1
local group=${2:-Default}
local cypress="./node_modules/.bin/cypress run"
local browser=${CYPRESS_BROWSER:-chrome}
export TERM="xterm"
export ELECTRON_DISABLE_GPU=true # Attempt to disable GPU for Electron-based Cypress
say "::group::Run Cypress for [$page]"
if [[ -z $CYPRESS_KEY ]]; then
xvfb-run --auto-servernum --server-args='-screen 0, 1024x768x24' $cypress --spec "cypress/e2e/$page" --browser "$browser"
else
export CYPRESS_RECORD_KEY=$(echo $CYPRESS_KEY | base64 --decode)
# additional flags for Cypress dashboard recording
xvfb-run --auto-servernum --server-args='-screen 0, 1024x768x24' $cypress --spec "cypress/e2e/$page" --browser "$browser" \
--record --group "$group" --tag "${GITHUB_REPOSITORY},${GITHUB_EVENT_NAME}" \
--parallel --ci-build-id "${GITHUB_SHA:0:8}-${NONCE}"
fi
# don't add quotes to $record because we do want word splitting
say "::endgroup::"
}
cypress-run-all() {
# Start Flask and run it in background
# --no-debugger means disable the interactive debugger on the 500 page
# so errors can print to stderr.
@@ -174,32 +157,17 @@ cypress-run-all() {
nohup flask run --no-debugger -p $port >"$flasklog" 2>&1 </dev/null &
local flaskProcessId=$!
cypress-run "*/**/*"
USE_DASHBOARD_FLAG=''
if [ "$USE_DASHBOARD" = "true" ]; then
USE_DASHBOARD_FLAG='--use-dashboard'
fi
python ../../scripts/cypress_run.py --parallelism $PARALLELISM --parallelism-id $PARALLEL_ID $USE_DASHBOARD_FLAG
# After job is done, print out Flask log for debugging
say "::group::Flask log for default run"
echo "::group::Flask log for default run"
cat "$flasklog"
say "::endgroup::"
# Rerun SQL Lab tests with backend persist disabled
export SUPERSET_CONFIG=tests.integration_tests.superset_test_config_sqllab_backend_persist_off
# Restart Flask with new configs
kill $flaskProcessId
nohup flask run --no-debugger -p $port >"$flasklog" 2>&1 </dev/null &
local flaskProcessId=$!
cypress-run "sqllab/*" "Backend persist"
# Upload code coverage separately so each page can have separate flags
# -c will clean existing coverage reports, -F means add flags
# || true to prevent CI failure on codecov upload
codecov -c -F "cypress" || true
say "::group::Flask log for backend persist"
cat "$flasklog"
say "::endgroup::"
echo "::endgroup::"
# make sure the program exits
kill $flaskProcessId
}
@@ -223,9 +191,7 @@ cypress-run-applitools() {
nohup flask run --no-debugger -p $port >"$flasklog" 2>&1 </dev/null &
local flaskProcessId=$!
$cypress --spec "cypress/e2e/*/**/*.applitools.test.ts" --browser "$browser" --headless
codecov -c -F "cypress" || true
$cypress --spec "cypress/applitools/**/*" --browser "$browser" --headless
say "::group::Flask log for default run"
cat "$flasklog"

View File

@@ -17,7 +17,7 @@ on:
jobs:
bump-python-package:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
actions: write
contents: write

View File

@@ -9,7 +9,7 @@ on:
jobs:
cancel-duplicate-runs:
name: Cancel duplicate workflow runs
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
permissions:
actions: write
contents: read

View File

@@ -5,7 +5,7 @@ on:
- "superset/migrations/**"
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
paths:
- "superset/migrations/**"
@@ -19,7 +19,7 @@ concurrency:
jobs:
check_db_migration_conflict:
name: Check DB migration conflict
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
permissions:
contents: read
pull-requests: write

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@ name: "CodeQL"
on:
push:
branches: ["master", "[0-9].[0-9]"]
branches: ["master", "[0-9].[0-9]*"]
pull_request:
# The branches below must be a subset of the branches above
branches: ["master"]

View File

@@ -12,7 +12,7 @@ permissions:
jobs:
dependency-review:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: "Checkout Repository"
uses: actions/checkout@v4
@@ -23,22 +23,13 @@ jobs:
# compatible/incompatible licenses addressed here: https://www.apache.org/legal/resolved.html
# find SPDX identifiers here: https://spdx.org/licenses/
deny-licenses: MS-LPL, BUSL-1.1, QPL-1.0, Sleepycat, SSPL-1.0, CPOL-1.02, AGPL-3.0, GPL-1.0+, BSD-4-Clause-UC, NPL-1.0, NPL-1.1, JSON
allow-dependencies-licenses:
# adding an exception for an ambigious license on store2, which has been resolved in
# the latest version. It's MIT: https://github.com/nbubna/store/blob/master/LICENSE-MIT
- 'pkg:npm/store2@2.14.2'
# adding exception for all applitools modules (eyes-cypress and its dependencies),
# which has an explicit OSS license approved by ASF
# license: https://applitools.com/legal/open-source-terms-of-use/
- 'pkg:npm/applitools/core'
- 'pkg:npm/applitools/core-base'
- 'pkg:npm/applitools/css-tree'
- 'pkg:npm/applitools/ec-client'
- 'pkg:npm/applitools/eg-socks5-proxy-server'
- 'pkg:npm/applitools/eyes'
- 'pkg:npm/applitools/eyes-cypress'
- 'pkg:npm/applitools/nml-client'
- 'pkg:npm/applitools/tunnel-client'
- 'pkg:npm/applitools/utils'
# Selecting BSD-3-Clause licensing terms for node-forge to ensure compatibility with Apache
- 'pkg:npm/node-forge@1.3.1'
# pkg:npm/store2@2.14.2
# adding an exception for an ambigious license on store2, which has been resolved in
# the latest version. It's MIT: https://github.com/nbubna/store/blob/master/LICENSE-MIT
# pkg:npm/applitools/*
# adding exception for all applitools modules (eyes-cypress and its dependencies),
# which has an explicit OSS license approved by ASF
# license: https://applitools.com/legal/open-source-terms-of-use/
# pkg:npm/node-forge@1.3.1
# selecting BSD-3-Clause licensing terms for node-forge to ensure compatibility with Apache
allow-dependencies-licenses: pkg:npm/store2@2.14.2, pkg:npm/applitools/core, pkg:npm/applitools/core-base, pkg:npm/applitools/css-tree, pkg:npm/applitools/ec-client, pkg:npm/applitools/eg-socks5-proxy-server, pkg:npm/applitools/eyes, pkg:npm/applitools/eyes-cypress, pkg:npm/applitools/nml-client, pkg:npm/applitools/tunnel-client, pkg:npm/applitools/utils, pkg:npm/node-forge@1.3.1

View File

@@ -4,7 +4,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
branches:
- "master"
@@ -15,7 +15,7 @@ concurrency:
jobs:
setup_matrix:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
outputs:
matrix_config: ${{ steps.set_matrix.outputs.matrix_config }}
steps:
@@ -28,7 +28,7 @@ jobs:
docker-build:
name: docker-build
needs: setup_matrix
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
strategy:
matrix:
build_preset: ${{fromJson(needs.setup_matrix.outputs.matrix_config)}}

View File

@@ -4,11 +4,11 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -23,7 +23,7 @@ jobs:
build:
needs: config
if: needs.config.outputs.has-secrets
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
defaults:
run:
working-directory: superset-embedded-sdk

View File

@@ -13,7 +13,7 @@ concurrency:
jobs:
embedded-sdk-test:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
defaults:
run:
working-directory: superset-embedded-sdk

View File

@@ -6,7 +6,7 @@ on:
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -22,7 +22,7 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: Cleanup ephemeral envs
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
pull-requests: write
steps:

View File

@@ -6,7 +6,7 @@ on:
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
if: github.event.issue.pull_request
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
@@ -26,7 +26,7 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: Evaluate ephemeral env comment trigger (/testenv)
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
pull-requests: write
outputs:
@@ -88,7 +88,7 @@ jobs:
cancel-in-progress: true
needs: ephemeral-env-comment
name: ephemeral-docker-build
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Get Info from comment
uses: actions/github-script@v7
@@ -153,7 +153,7 @@ jobs:
needs: [ephemeral-env-comment, ephemeral-docker-build]
if: needs.ephemeral-env-comment.outputs.slash-command == 'up'
name: Spin up an ephemeral environment
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
contents: read
pull-requests: write

View File

@@ -4,11 +4,11 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -24,7 +24,7 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: Generate Report
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4

28
.github/workflows/github-action-validator.sh vendored Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Inspired from https://github.com/mpalmer/action-validator?tab=readme-ov-file#pre-commit-hook-example
echo "Running pre-commit hook for GitHub Actions: https://github.com/mpalmer/action-validator"
for action in $(git ls-files .github/ | grep -E '^\.github/(workflows|actions)/.*\.ya?ml$'); do
if action-validator "$action"; then
echo "$action"
else
echo "$action"
exit 1
fi
done

View File

@@ -0,0 +1,28 @@
name: Validate All GitHub Actions
on:
push:
branches:
- "master"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
jobs:
validate-all-ghas:
runs-on: ubuntu-22.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install Dependencies
run: npm install -g @action-validator/core @action-validator/cli --save-dev
- name: Run Script
run: bash .github/workflows/github-action-validator.sh

View File

@@ -9,7 +9,7 @@ on:
jobs:
superbot-orglabel:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
contents: read
pull-requests: write
@@ -31,4 +31,4 @@ jobs:
# Label the issue with the appropriate org using supersetbot
# - this requires for the author to be publicly associated with their org
# - and for the org to be listed in `supersetbot/src/metadata.js`
supersetbot orglabel --issue ${{ github.event.number }} --repo ${{ github.repository }}
supersetbot orglabel --issue ${{ github.event.number }} --repo ${{ github.repository }} || true

View File

@@ -7,7 +7,7 @@ jobs:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- uses: actions/labeler@v5
with:

View File

@@ -6,7 +6,7 @@ on:
jobs:
latest-release:
name: Add/update tag to new release
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
contents: write

View File

@@ -12,7 +12,7 @@ concurrency:
jobs:
license_check:
name: License Check
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4

View File

@@ -11,7 +11,7 @@ concurrency:
jobs:
check-hold-label:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Check for 'hold' label
uses: actions/github-script@v7

View File

@@ -10,7 +10,7 @@ on:
jobs:
lint-check:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
contents: read
pull-requests: write

View File

@@ -4,7 +4,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -15,7 +15,7 @@ concurrency:
jobs:
pre-commit:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4

View File

@@ -4,7 +4,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
paths:
- "superset-frontend/src/**"
pull_request:
@@ -21,7 +21,7 @@ jobs:
prefer_typescript:
if: github.ref == 'ref/heads/master' && github.event_name == 'pull_request'
name: Prefer TypeScript
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
contents: read
pull-requests: write

View File

@@ -4,11 +4,11 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -25,7 +25,7 @@ jobs:
if: needs.config.outputs.has-secrets
name: Bump version and publish package(s)
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:

View File

@@ -6,7 +6,7 @@ on:
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -21,7 +21,7 @@ jobs:
cypress-applitools:
needs: config
if: needs.config.outputs.has-secrets
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:

View File

@@ -12,7 +12,7 @@ env:
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -27,7 +27,7 @@ jobs:
cron:
needs: config
if: needs.config.outputs.has-secrets
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
node: [18]

View File

@@ -4,7 +4,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -15,7 +15,7 @@ concurrency:
jobs:
test-load-examples:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config

View File

@@ -4,6 +4,7 @@ on:
push:
paths:
- "docs/**"
- "README.md"
branches:
- "master"
@@ -11,7 +12,7 @@ on:
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -27,7 +28,7 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: Build & Deploy
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4

View File

@@ -14,7 +14,7 @@ concurrency:
jobs:
build-deploy:
name: Build & Deploy
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
defaults:
run:
working-directory: docs
@@ -24,10 +24,10 @@ jobs:
with:
persist-credentials: false
submodules: recursive
- name: Set up Node.js 18
- name: Set up Node.js 20
uses: actions/setup-node@v4
with:
node-version: '18'
node-version: '20'
- name: yarn install
run: |
yarn install --check-cache

View File

@@ -4,9 +4,23 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
workflow_dispatch:
inputs:
use_dashboard:
description: 'Use Cypress Dashboard (true/false) [paid service - trigger manually when needed]. You MUST provide a branch and/or PR number below for this to work.'
required: false
default: 'false'
ref:
description: 'The branch or tag to checkout'
required: false
default: ''
pr_id:
description: 'The pull request ID to checkout'
required: false
default: ''
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
@@ -14,18 +28,18 @@ concurrency:
jobs:
cypress-matrix:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
permissions:
contents: read
pull-requests: read
strategy:
# when one test fails, DO NOT cancel the other
# containers, because this will kill Cypress processes
# parallel_id, because this will kill Cypress processes
# leaving the Dashboard hanging ...
# https://github.com/cypress-io/github-action/issues/48
fail-fast: false
matrix:
containers: [1, 2, 3]
parallel_id: [0, 1, 2, 3, 4, 5]
browser: ["chrome"]
env:
SUPERSET_ENV: development
@@ -34,6 +48,7 @@ jobs:
PYTHONPATH: ${{ github.workspace }}
REDIS_PORT: 16379
GITHUB_TOKEN: ${{ github.token }}
USE_DASHBOARD: ${{ github.event.inputs.use_dashboard || (github.ref == 'refs/heads/master' && 'true') || 'false' }}
services:
postgres:
image: postgres:15-alpine
@@ -47,19 +62,29 @@ jobs:
ports:
- 16379:6379
steps:
- name: "Checkout (pull) ${{ github.ref }} ( ${{ github.sha }} )"
# -------------------------------------------------------
# Conditional checkout based on context
- name: Checkout for push or pull_request event
if: github.event_name == 'push' || github.event_name == 'pull_request'
uses: actions/checkout@v4
if: github.event_name == 'push'
with:
persist-credentials: false
submodules: recursive
- name: "Checkout (pull_request) ${{ github.ref }} ( ${{ github.sha }} )"
- name: Checkout using ref (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.ref != ''
uses: actions/checkout@v4
if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'
with:
ref: "refs/pull/${{ github.event.number }}/merge"
persist-credentials: false
ref: ${{ github.event.inputs.ref }}
submodules: recursive
- name: Checkout using PR ID (workflow_dispatch)
if: github.event_name == 'workflow_dispatch' && github.event.inputs.pr_id != ''
uses: actions/checkout@v4
with:
persist-credentials: false
ref: refs/pull/${{ github.event.inputs.pr_id }}/merge
submodules: recursive
# -------------------------------------------------------
- name: Check for file changes
id: check
uses: ./.github/actions/change-detector/
@@ -103,12 +128,14 @@ jobs:
uses: ./.github/actions/cached-dependencies
env:
CYPRESS_BROWSER: ${{ matrix.browser }}
CYPRESS_KEY: YjljODE2MzAtODcwOC00NTA3LWE4NmMtMTU3YmFmMjIzOTRhCg==
PARALLEL_ID: ${{ matrix.parallel_id }}
PARALLELISM: 6
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
with:
run: cypress-run-all
run: cypress-run-all ${{ env.USE_DASHBOARD }}
- name: Upload Artifacts
uses: actions/upload-artifact@v4
if: steps.check.outputs.python || steps.check.outputs.frontend
if: github.event_name == 'workflow_dispatch' && (steps.check.outputs.python || steps.check.outputs.frontend)
with:
name: screenshots
path: ${{ github.workspace }}/superset-frontend/cypress-base/cypress/screenshots
name: cypress-artifact-${{ github.run_id }}-${{ github.job }}

View File

@@ -4,7 +4,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -15,7 +15,7 @@ concurrency:
jobs:
frontend-build:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4
@@ -78,6 +78,8 @@ jobs:
working-directory: ./superset-frontend/packages/generator-superset
run: npx jest
- name: Upload code coverage
if: steps.check.outputs.frontend
working-directory: ./superset-frontend
run: ../.github/workflows/codecov.sh -c -F javascript
uses: codecov/codecov-action@v4
with:
flags: javascript
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -13,7 +13,7 @@ concurrency:
jobs:
lint-test:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4

View File

@@ -4,13 +4,13 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
paths:
- "helm/**"
jobs:
release:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
contents: write
@@ -36,7 +36,7 @@ jobs:
run: helm repo add bitnami https://charts.bitnami.com/bitnami
- name: Run chart-releaser
uses: ./.github/actions/chart-releaser-action
uses: helm/chart-releaser-action@v1.6.0
with:
charts_dir: helm
mark_as_latest: false

View File

@@ -5,7 +5,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -15,7 +15,7 @@ concurrency:
jobs:
test-mysql:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -24,7 +24,7 @@ jobs:
mysql+mysqldb://superset:superset@127.0.0.1:13306/superset?charset=utf8mb4&binary_prefix=true
services:
mysql:
image: mysql:5.7
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
ports:
@@ -58,22 +58,26 @@ jobs:
uses: ./.github/actions/cached-dependencies
with:
run: setup-mysql
- name: Run celery
- name: Start Celery worker
if: steps.check.outputs.python
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
uses: ./.github/actions/cached-dependencies
with:
run: celery-worker
- name: Python integration tests (MySQL)
if: steps.check.outputs.python
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outputs.python
run: |
bash .github/workflows/codecov.sh -c -F python -F mysql
uses: codecov/codecov-action@v4
with:
flags: python,mysql
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
test-postgres:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["current", "next"]
python-version: ["current", "next", "previous"]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -115,20 +119,24 @@ jobs:
with:
run: |
setup-postgres
- name: Run celery
- name: Start Celery worker
if: steps.check.outputs.python
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
uses: ./.github/actions/cached-dependencies
with:
run: celery-worker
- name: Python integration tests (PostgreSQL)
if: steps.check.outputs.python
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outputs.python
run: |
bash .github/workflows/codecov.sh -c -F python -F postgres
uses: codecov/codecov-action@v4
with:
flags: python,postgres
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
test-sqlite:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -163,14 +171,18 @@ jobs:
run: |
# sqlite needs this working directory
mkdir ${{ github.workspace }}/.temp
- name: Run celery
- name: Start Celery worker
if: steps.check.outputs.python
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
uses: ./.github/actions/cached-dependencies
with:
run: celery-worker
- name: Python integration tests (SQLite)
if: steps.check.outputs.python
run: |
./scripts/python_tests.sh
- name: Upload code coverage
if: steps.check.outputs.python
run: |
bash .github/workflows/codecov.sh -c -F python -F sqlite
uses: codecov/codecov-action@v4
with:
flags: python,sqlite
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -5,7 +5,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -16,7 +16,7 @@ concurrency:
jobs:
python-lint:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4
@@ -33,7 +33,7 @@ jobs:
if: steps.check.outputs.python
babel-extract:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4
@@ -50,4 +50,4 @@ jobs:
uses: ./.github/actions/setup-backend/
- name: Test babel extraction
if: steps.check.outputs.python
run: flask fab babel-extract --target superset/translations --output superset/translations/messages.pot --config superset/translations/babel.cfg -k _,__,t,tn,tct
run: scripts/translations/babel_update.sh

View File

@@ -5,7 +5,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -16,7 +16,7 @@ concurrency:
jobs:
test-postgres-presto:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -67,20 +67,24 @@ jobs:
run: |
echo "${{ steps.check.outputs.python }}"
setup-postgres
- name: Run celery
- name: Start Celery worker
if: steps.check.outputs.python
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
uses: ./.github/actions/cached-dependencies
with:
run: celery-worker
- name: Python unit tests (PostgreSQL)
if: steps.check.outputs.python
run: |
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
- name: Upload code coverage
if: steps.check.outputs.python
run: |
bash .github/workflows/codecov.sh -c -F python -F presto
uses: codecov/codecov-action@v4
with:
flags: python,presto
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
test-postgres-hive:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.integration_tests.superset_test_config
@@ -130,14 +134,18 @@ jobs:
uses: ./.github/actions/cached-dependencies
with:
run: setup-postgres
- name: Run celery
- name: Start Celery worker
if: steps.check.outputs.python
run: celery --app=superset.tasks.celery_app:app worker -Ofair -c 2 &
uses: ./.github/actions/cached-dependencies
with:
run: celery-worker
- name: Python unit tests (PostgreSQL)
if: steps.check.outputs.python
run: |
./scripts/python_tests.sh -m 'chart_data_flow or sql_json_flow'
- name: Upload code coverage
if: steps.check.outputs.python
run: |
bash .github/workflows/codecov.sh -c -F python -F hive
uses: codecov/codecov-action@v4
with:
flags: python,hive
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -5,7 +5,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -16,7 +16,7 @@ concurrency:
jobs:
unit-tests:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["current", "next"]
@@ -46,6 +46,8 @@ jobs:
run: |
pytest --durations-min=0.5 --cov-report= --cov=superset ./tests/common ./tests/unit_tests --cache-clear
- name: Upload code coverage
if: steps.check.outputs.python
run: |
bash .github/workflows/codecov.sh -c -F python -F unit
uses: codecov/codecov-action@v4
with:
flags: python,unit
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true

View File

@@ -4,7 +4,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
pull_request:
types: [synchronize, opened, reopened, ready_for_review]
@@ -15,7 +15,7 @@ concurrency:
jobs:
frontend-check-translations:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4
@@ -43,10 +43,10 @@ jobs:
if: steps.check.outputs.frontend
working-directory: ./superset-frontend
run: |
npm run check-translation
npm run build-translation
babel-extract:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4
@@ -64,4 +64,4 @@ jobs:
uses: ./.github/actions/setup-backend/
- name: Test babel extraction
if: steps.check.outputs.python
run: ./scripts/babel_update.sh
run: ./scripts/translations/babel_update.sh

View File

@@ -3,7 +3,7 @@ on:
push:
branches:
- "master"
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
paths:
- "superset-websocket/**"
pull_request:
@@ -18,7 +18,7 @@ concurrency:
jobs:
app-checks:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v4

View File

@@ -15,7 +15,7 @@ on:
jobs:
supersetbot:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
if: >
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@supersetbot'))

View File

@@ -19,11 +19,11 @@ on:
default: 'false'
description: Whether to force a latest tag on the release
options:
- true
- false
- 'true'
- 'false'
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -39,7 +39,7 @@ jobs:
needs: config
if: needs.config.outputs.has-secrets
name: docker-release
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
strategy:
matrix:
build_preset: ["dev", "lean", "py310", "websocket", "dockerize"]

View File

@@ -4,11 +4,11 @@ on:
push:
branches:
- master
- "[0-9].[0-9]"
- "[0-9].[0-9]*"
jobs:
config:
runs-on: "ubuntu-latest"
runs-on: "ubuntu-22.04"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
@@ -23,7 +23,7 @@ jobs:
process-and-upload:
needs: config
if: needs.config.outputs.has-secrets
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
name: Generate Reports
steps:
- name: Checkout Repository

View File

@@ -1,52 +0,0 @@
name: Update Lockfiles for Dependabot Monorepo PRs
on:
pull_request:
paths:
- 'superset-frontend/packages/**/package.json'
- 'superset-frontend/plugins/**/package.json'
types: [opened, synchronize, reopened]
issue_comment:
types: [created]
# cancel previous workflow jobs for PRs
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.issue.number || github.run_id }}
cancel-in-progress: true
jobs:
update-lock-file:
permissions:
contents: write
pull-requests: write
runs-on: ubuntu-latest
if: >
(github.event_name == 'pull_request' && github.event.pull_request.user.login == 'dependabot[bot]') ||
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@supersetbot trigger-dependabot-lockfile') && github.event.issue.pull_request)
defaults:
run:
working-directory: superset-frontend
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref || github.head_ref }} # Checkout the branch that made the PR or the comment's PR branch
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install Dependencies and Update Lock File
run: |
npm install
- name: Commit and Push Changes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config user.name "GitHub-Actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add package-lock.json
# Push the changes back to the branch if they exist, and pass if there are no changes
git diff --staged --quiet || (git commit -m "Update lock file for Dependabot PR" -a && git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} ${{ github.event.pull_request.head.ref || github.head_ref }})

View File

@@ -6,7 +6,7 @@ on:
jobs:
welcome:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
pull-requests: write

12
.gitignore vendored
View File

@@ -106,10 +106,18 @@ testCSV.csv
apache-superset-*.tar.gz*
release.json
# Translation binaries
messages.mo
# Translation-related files
# these json files are generated by ./scripts/po2json.sh
superset/translations/**/messages.json
# these mo binary files are generated by `pybabel compile`
superset/translations/**/messages.mo
docker/requirements-local.txt
cache/
docker/*local*
.temp_cache
# Jest test report
test-report.html

View File

@@ -47,7 +47,7 @@ repos:
hooks:
- id: check-docstring-first
- id: check-added-large-files
exclude: \.(geojson)$
exclude: ^.*\.(geojson)$|^docs/static/img/screenshots/.*
- id: check-yaml
exclude: ^helm/superset/templates/
- id: debug-statements

View File

@@ -36,7 +36,7 @@ persistent=yes
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
load-plugins=superset.extensions.pylint
# Use multiple processes to speed up Pylint.
jobs=2

View File

@@ -64,9 +64,11 @@ temporary_superset_ui/*
# docs overrides for third party logos we don't have the rights to
google-big-query.svg
google-sheets.svg
ibm-db2.svg
postgresql.svg
snowflake.svg
# docs-related
erd.puml
erd.svg
intro_header.txt

View File

@@ -39,4 +39,6 @@ under the License.
- [3.1.0](./CHANGELOG/3.1.0.md)
- [3.1.1](./CHANGELOG/3.1.1.md)
- [3.1.2](./CHANGELOG/3.1.2.md)
- [3.1.3](./CHANGELOG/3.1.3.md)
- [4.0.0](./CHANGELOG/4.0.0.md)
- [4.0.1](./CHANGELOG/4.0.1.md)

47
CHANGELOG/3.1.3.md Normal file
View File

@@ -0,0 +1,47 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
## Change Log
### 3.1.3 (Tue Apr 30 15:32:33 2024 -0700)
**Fixes**
- [#28277](https://github.com/apache/superset/pull/28277) fix(ci): adding codecov token (@rusackas)
- [#28156](https://github.com/apache/superset/pull/28156) fix(sqllab): invalid css scope for ace editor autocomplete (@justinpark)
- [#28222](https://github.com/apache/superset/pull/28222) fix: Dremio alias (@betodealmeida)
- [#28152](https://github.com/apache/superset/pull/28152) fix(sql_parse): Provide more lenient logic when extracting latest[_sub]\_partition (@john-bodley)
- [#28117](https://github.com/apache/superset/pull/28117) fix(sql_parse): Support Jinja format() filter when extracting latest[_sub]\_partition (@john-bodley)
- [#28036](https://github.com/apache/superset/pull/28036) fix: Dynamic filter does not show all values on blur/clear events (@michael-s-molina)
- [#28018](https://github.com/apache/superset/pull/28018) fix: bump client side chart timeouts to use the SUPERSET_WEBSERVER_TIMEOUT (@eschutho)
- [#28017](https://github.com/apache/superset/pull/28017) fix: Select is accepting unknown pasted values when `allowNewOptions` is false (@michael-s-molina)
- [#27996](https://github.com/apache/superset/pull/27996) fix: Incorrect onChange value when an unloaded value is pasted into AsyncSelect (@michael-s-molina)
- [#25407](https://github.com/apache/superset/pull/25407) fix(frontend): allow "constructor" property in response data (@SpencerTorres)
- [#27919](https://github.com/apache/superset/pull/27919) fix: add mariadb engine spec same as MySQL (@dpgaspar)
- [#27593](https://github.com/apache/superset/pull/27593) fix(Dashboard): Add border to row when hovering HoverMenu in edit mode (@rtexelm)
- [#27883](https://github.com/apache/superset/pull/27883) fix(bar-chart): change legend padding for horizontal orientation (@lilykuang)
- [#27845](https://github.com/apache/superset/pull/27845) fix(dashboard): missing null check in error extra (@justinpark)
**Others**
- [#28278](https://github.com/apache/superset/pull/28278) chore: allow codecov to detect SHA (@mistercrunch)
- [#27725](https://github.com/apache/superset/pull/27725) chore(sqllab): Do not strip comments when executing SQL statements (@john-bodley)
- [#27843](https://github.com/apache/superset/pull/27843) chore: Default to engine specification regarding using wildcard (@john-bodley)
- [#27858](https://github.com/apache/superset/pull/27858) chore(sql_parse): Provide more meaningful SQLGlot errors (@john-bodley)
- [#27842](https://github.com/apache/superset/pull/27842) chore(sql_parse): Strip leading/trailing whitespace in Jinja macro extraction (@john-bodley)

View File

@@ -32,7 +32,6 @@ under the License.
- [#26369](https://github.com/apache/superset/pull/26369) refactor: Removes the filters set feature (@michael-s-molina)
- [#26416](https://github.com/apache/superset/pull/26416) fix: improve performance on reports log queries (@dpgaspar)
- [#26290](https://github.com/apache/superset/pull/26290) feat(echarts-funnel): Implement % calculation type (@kgabryje)
- [#26288](https://github.com/apache/superset/pull/26288) chore: Ensure Mixins are ordered according to the MRO (@john-bodley)
**Features**
@@ -470,3 +469,4 @@ under the License.
- [#26100](https://github.com/apache/superset/pull/26100) build(deps-dev): bump @types/node from 20.9.4 to 20.10.0 in /superset-websocket (@dependabot[bot])
- [#26099](https://github.com/apache/superset/pull/26099) build(deps-dev): bump @types/cookie from 0.5.4 to 0.6.0 in /superset-websocket (@dependabot[bot])
- [#26104](https://github.com/apache/superset/pull/26104) docs: update CVEs fixed on 2.1.2 (@dpgaspar)
- [#26288](https://github.com/apache/superset/pull/26288) chore: Ensure Mixins are ordered according to the MRO (@john-bodley)

61
CHANGELOG/4.0.1.md Normal file
View File

@@ -0,0 +1,61 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
## Change Log
### 4.0.1 (Tue Apr 30 15:32:33 2024 -0700)
**Fixes**
- [#28269](https://github.com/apache/superset/pull/28269) fix(explore): cannot reorder dnd of Metrics (@justinpark)
- [#28271](https://github.com/apache/superset/pull/28271) fix: % replace in `values_for_column` (@betodealmeida)
- [#28277](https://github.com/apache/superset/pull/28277) fix(ci): adding codecov token (@rusackas)
- [#28242](https://github.com/apache/superset/pull/28242) fix(dashboard): unable to drop tabs in columns (@justinpark)
- [#28241](https://github.com/apache/superset/pull/28241) fix(explore): temporal column mixin (@justinpark)
- [#28226](https://github.com/apache/superset/pull/28226) fix(maps): adds Crimea back to Ukraine 🇺🇦 (@rusackas)
- [#28156](https://github.com/apache/superset/pull/28156) fix(sqllab): invalid css scope for ace editor autocomplete (@justinpark)
- [#28222](https://github.com/apache/superset/pull/28222) fix: Dremio alias (@betodealmeida)
- [#28152](https://github.com/apache/superset/pull/28152) fix(sql_parse): Provide more lenient logic when extracting latest[_sub]\_partition (@john-bodley)
- [#27554](https://github.com/apache/superset/pull/27554) fix(AlertsReports): making log retention "None" option valid (@fisjac)
- [#28117](https://github.com/apache/superset/pull/28117) fix(sql_parse): Support Jinja format() filter when extracting latest[_sub]\_partition (@john-bodley)
- [#28036](https://github.com/apache/superset/pull/28036) fix: Dynamic filter does not show all values on blur/clear events (@michael-s-molina)
- [#28018](https://github.com/apache/superset/pull/28018) fix: bump client side chart timeouts to use the SUPERSET_WEBSERVER_TIMEOUT (@eschutho)
- [#28017](https://github.com/apache/superset/pull/28017) fix: Select is accepting unknown pasted values when `allowNewOptions` is false (@michael-s-molina)
- [#27996](https://github.com/apache/superset/pull/27996) fix: Incorrect onChange value when an unloaded value is pasted into AsyncSelect (@michael-s-molina)
- [#27934](https://github.com/apache/superset/pull/27934) fix(time_offset): improved LIMIT-handling in advanced analytics (@Antonio-RiveroMartnez)
- [#27941](https://github.com/apache/superset/pull/27941) fix(drillby): Enable DrillBy in charts w/o filters (dimensions) (@sowo)
- [#27239](https://github.com/apache/superset/pull/27239) fix(alerts/reports): removing duplicate notification method options (@fisjac)
- [#27968](https://github.com/apache/superset/pull/27968) fix(Dashboard): Add aria-label to filters and search forms (@geido)
- [#27701](https://github.com/apache/superset/pull/27701) fix: useTruncation infinite loop, reenable dashboard cross links on ChartList (@kgabryje)
- [#27926](https://github.com/apache/superset/pull/27926) fix: Locale sent to frontend (@michael-s-molina)
- [#25407](https://github.com/apache/superset/pull/25407) fix(frontend): allow "constructor" property in response data (@SpencerTorres)
- [#27919](https://github.com/apache/superset/pull/27919) fix: add mariadb engine spec same as MySQL (@dpgaspar)
- [#27593](https://github.com/apache/superset/pull/27593) fix(Dashboard): Add border to row when hovering HoverMenu in edit mode (@rtexelm)
- [#27883](https://github.com/apache/superset/pull/27883) fix(bar-chart): change legend padding for horizontal orientation (@lilykuang)
- [#27700](https://github.com/apache/superset/pull/27700) fix: row limits & row count labels are confusing (@mistercrunch)
- [#27845](https://github.com/apache/superset/pull/27845) fix(dashboard): missing null check in error extra (@justinpark)
**Others**
- [#28278](https://github.com/apache/superset/pull/28278) chore: allow codecov to detect SHA (@mistercrunch)
- [#27717](https://github.com/apache/superset/pull/27717) chore(explore): Hide non-droppable metric and column list (@justinpark)
- [#27725](https://github.com/apache/superset/pull/27725) chore(sqllab): Do not strip comments when executing SQL statements (@john-bodley)
- [#27843](https://github.com/apache/superset/pull/27843) chore: Default to engine specification regarding using wildcard (@john-bodley)
- [#27858](https://github.com/apache/superset/pull/27858) chore(sql_parse): Provide more meaningful SQLGlot errors (@john-bodley)
- [#27842](https://github.com/apache/superset/pull/27842) chore(sql_parse): Strip leading/trailing whitespace in Jinja macro extraction (@john-bodley)

View File

@@ -20,5 +20,5 @@ Contributions are welcome and are greatly appreciated! Every
little bit helps, and credit will always be given.
All matters related to contributions have moved to [this section of
the official Superset documentation](https://superset.apache.org/docs/contributing/contributing/). Source for the documentation is
the official Superset documentation](https://superset.apache.org/docs/contributing/). Source for the documentation is
[located here](https://github.com/apache/superset/tree/master/docs/docs).

View File

@@ -26,27 +26,37 @@ FROM --platform=${BUILDPLATFORM} node:18-bullseye-slim AS superset-node
ARG NPM_BUILD_CMD="build"
# Somehow we need python3 + build-essential on this side of the house to install node-gyp
RUN apt-get update -qq \
&& apt-get install -yqq --no-install-recommends \
&& apt-get install \
-yqq --no-install-recommends \
build-essential \
python3
ENV BUILD_CMD=${NPM_BUILD_CMD} \
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
# NPM ci first, as to NOT invalidate previous steps except for when package.json changes
WORKDIR /app/superset-frontend
RUN --mount=type=bind,target=/frontend-mem-nag.sh,src=./docker/frontend-mem-nag.sh \
/frontend-mem-nag.sh
WORKDIR /app/superset-frontend
RUN --mount=type=bind,target=./package.json,src=./superset-frontend/package.json \
--mount=type=bind,target=./package-lock.json,src=./superset-frontend/package-lock.json \
npm ci
COPY ./superset-frontend ./
# This seems to be the most expensive step
# Runs the webpack build process
COPY superset-frontend /app/superset-frontend
RUN npm run ${BUILD_CMD}
# This copies the .po files needed for translation
RUN mkdir -p /app/superset/translations
COPY superset/translations /app/superset/translations
# Compiles .json files from the .po files, then deletes the .po files
RUN npm run build-translation
RUN rm /app/superset/translations/*/LC_MESSAGES/*.po
RUN rm /app/superset/translations/messages.pot
######################################################################
# Final lean image...
######################################################################
@@ -64,7 +74,6 @@ ENV LANG=C.UTF-8 \
RUN mkdir -p ${PYTHONPATH} superset/static requirements superset-frontend apache_superset.egg-info requirements \
&& useradd --user-group -d ${SUPERSET_HOME} -m --no-log-init --shell /bin/bash superset \
&& apt-get update -qq && apt-get install -yqq --no-install-recommends \
build-essential \
curl \
default-libmysqlclient-dev \
libsasl2-dev \
@@ -81,16 +90,30 @@ COPY --chown=superset:superset pyproject.toml setup.py MANIFEST.in README.md ./
COPY --chown=superset:superset superset-frontend/package.json superset-frontend/
COPY --chown=superset:superset requirements/base.txt requirements/
RUN --mount=type=cache,target=/root/.cache/pip \
pip install --upgrade setuptools pip && \
pip install -r requirements/base.txt
apt-get update -qq && apt-get install -yqq --no-install-recommends \
build-essential \
&& pip install --upgrade setuptools pip \
&& pip install -r requirements/base.txt \
&& apt-get autoremove -yqq --purge build-essential \
&& rm -rf /var/lib/apt/lists/*
# Copy the compiled frontend assets
COPY --chown=superset:superset --from=superset-node /app/superset/static/assets superset/static/assets
## Lastly, let's install superset itself
COPY --chown=superset:superset superset superset
RUN --mount=type=cache,target=/root/.cache/pip \
pip install -e . \
&& flask fab babel-compile --target superset/translations \
&& chown -R superset:superset superset/translations
pip install -e .
# Copy the .json translations from the frontend layer
COPY --chown=superset:superset --from=superset-node /app/superset/translations superset/translations
# Compile translations for the backend - this generates .mo files, then deletes the .po files
COPY ./scripts/translations/generate_mo_files.sh ./scripts/translations/
RUN ./scripts/translations/generate_mo_files.sh \
&& chown -R superset:superset superset/translations \
&& rm superset/translations/messages.pot \
&& rm superset/translations/*/LC_MESSAGES/*.po
COPY --chmod=755 ./docker/run-server.sh /usr/bin/
USER superset
@@ -105,11 +128,8 @@ CMD ["/usr/bin/run-server.sh"]
# Dev image...
######################################################################
FROM lean AS dev
ARG GECKODRIVER_VERSION=v0.33.0 \
FIREFOX_VERSION=117.0.1
USER root
RUN apt-get update -qq \
&& apt-get install -yqq --no-install-recommends \
libnss3 \
@@ -118,25 +138,35 @@ RUN apt-get update -qq \
libx11-xcb1 \
libasound2 \
libxtst6 \
wget \
git \
pkg-config
pkg-config \
&& rm -rf /var/lib/apt/lists/*
RUN pip install playwright
RUN --mount=type=cache,target=/root/.cache/pip \
pip install playwright
RUN playwright install-deps
RUN playwright install chromium
# Install GeckoDriver WebDriver
RUN wget -q https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz -O - | tar xfz - -C /usr/local/bin \
ARG GECKODRIVER_VERSION=v0.34.0 \
FIREFOX_VERSION=125.0.3
RUN apt-get update -qq \
&& apt-get install -yqq --no-install-recommends wget bzip2 \
&& wget -q https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz -O - | tar xfz - -C /usr/local/bin \
# Install Firefox
&& wget -q https://download-installer.cdn.mozilla.net/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2 -O - | tar xfj - -C /opt \
&& ln -s /opt/firefox/firefox /usr/local/bin/firefox \
&& apt-get autoremove -yqq --purge wget && rm -rf /var/[log,tmp]/* /tmp/* /var/lib/apt/lists/*
&& apt-get autoremove -yqq --purge wget bzip2 && rm -rf /var/[log,tmp]/* /tmp/* /var/lib/apt/lists/*
# Cache everything for dev purposes...
COPY --chown=superset:superset requirements/development.txt requirements/
RUN --mount=type=cache,target=/root/.cache/pip \
pip install -r requirements/development.txt
apt-get update -qq && apt-get install -yqq --no-install-recommends \
build-essential \
&& pip install -r requirements/development.txt \
&& apt-get autoremove -yqq --purge build-essential \
&& rm -rf /var/lib/apt/lists/*
USER superset
######################################################################

104
README.md
View File

@@ -30,12 +30,14 @@ under the License.
<picture width="500">
<source
width="600"
media="(prefers-color-scheme: dark)"
src="https://github.com/apache/superset/raw/master/superset-frontend/src/assets/branding/superset-logo-horiz-apache-dark.png"
src="https://superset.apache.org/img/superset-logo-horiz-dark.svg"
alt="Superset logo (dark)"
/>
<img
src="https://github.com/apache/superset/raw/master/superset-frontend/src/assets/branding/superset-logo-horiz-apache.png"
width="600"
src="https://superset.apache.org/img/superset-logo-horiz-apache.svg"
alt="Superset logo (light)"
/>
</picture>
@@ -45,11 +47,11 @@ A modern, enterprise-ready business intelligence web application.
[**Why Superset?**](#why-superset) |
[**Supported Databases**](#supported-databases) |
[**Installation and Configuration**](#installation-and-configuration) |
[**Release Notes**](RELEASING/README.md#release-notes-for-recent-releases) |
[**Release Notes**](https://github.com/apache/superset/blob/master/RELEASING/README.md#release-notes-for-recent-releases) |
[**Get Involved**](#get-involved) |
[**Contributor Guide**](#contributor-guide) |
[**Resources**](#resources) |
[**Organizations Using Superset**](RESOURCES/INTHEWILD.md)
[**Organizations Using Superset**](https://github.com/apache/superset/blob/master/RESOURCES/INTHEWILD.md)
## Why Superset?
@@ -71,69 +73,69 @@ Superset provides:
**Video Overview**
<!-- File hosted here https://github.com/apache/superset-site/raw/lfs/superset-video-4k.mp4 -->
https://user-images.githubusercontent.com/64562059/234390129-321d4f35-cb4b-45e8-89d9-20ae292f34fc.mp4
[superset-video-4k.webm](https://github.com/apache/superset/assets/812905/da036bc2-150c-4ee7-80f9-75e63210ff76)
<br/>
**Large Gallery of Visualizations**
<kbd><img title="Gallery" src="superset-frontend/src/assets/images/screenshots/gallery.jpg"/></kbd><br/>
<kbd><img title="Gallery" src="https://superset.apache.org/img/screenshots/gallery.jpg"/></kbd><br/>
**Craft Beautiful, Dynamic Dashboards**
<kbd><img title="View Dashboards" src="superset-frontend/src/assets/images/screenshots/slack_dash.jpg"/></kbd><br/>
<kbd><img title="View Dashboards" src="https://superset.apache.org/img/screenshots/slack_dash.jpg"/></kbd><br/>
**No-Code Chart Builder**
<kbd><img title="Slice & dice your data" src="superset-frontend/src/assets/images/screenshots/explore.jpg"/></kbd><br/>
<kbd><img title="Slice & dice your data" src="https://superset.apache.org/img/screenshots/explore.jpg"/></kbd><br/>
**Powerful SQL Editor**
<kbd><img title="SQL Lab" src="superset-frontend/src/assets/images/screenshots/sql_lab.jpg"/></kbd><br/>
<kbd><img title="SQL Lab" src="https://superset.apache.org/img/screenshots/sql_lab.jpg"/></kbd><br/>
## Supported Databases
Superset can query data from any SQL-speaking datastore or data engine (Presto, Trino, Athena, [and more](https://superset.apache.org/docs/databases/installing-database-drivers/)) that has a Python DB-API driver and a SQLAlchemy dialect.
Superset can query data from any SQL-speaking datastore or data engine (Presto, Trino, Athena, [and more](https://superset.apache.org/docs/configuration/databases)) that has a Python DB-API driver and a SQLAlchemy dialect.
Here are some of the major database solutions that are supported:
<p align="center">
<img src="superset-frontend/src/assets/images/redshift.png" alt="redshift" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/google-biquery.png" alt="google-biquery" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/snowflake.png" alt="snowflake" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/trino.png" alt="trino" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/presto.png" alt="presto" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/databricks.png" alt="databricks" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/druid.png" alt="druid" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/firebolt.png" alt="firebolt" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/timescale.png" alt="timescale" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/rockset.png" alt="rockset" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/postgresql.png" alt="postgresql" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/mysql.png" alt="mysql" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/mssql-server.png" alt="mssql-server" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/db2.png" alt="db2" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/sqlite.png" alt="sqlite" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/sybase.png" alt="sybase" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/mariadb.png" alt="mariadb" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/vertica.png" alt="vertica" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/oracle.png" alt="oracle" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/firebird.png" alt="firebird" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/greenplum.png" alt="greenplum" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/clickhouse.png" alt="clickhouse" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/exasol.png" alt="exasol" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/monet-db.png" alt="monet-db" border="0" width="200" height="80" />
<img src="superset-frontend/src/assets/images/apache-kylin.png" alt="apache-kylin" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/hologres.png" alt="hologres" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/netezza.png" alt="netezza" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/pinot.png" alt="pinot" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/teradata.png" alt="teradata" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/yugabyte.png" alt="yugabyte" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/databend.png" alt="databend" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/starrocks.png" alt="starrocks" border="0" width="200" height="80"/>
<img src="superset-frontend/src/assets/images/doris.png" alt="doris" border="0" width="200" height="80"/>
<img src="https://superset.apache.org/img/databases/redshift.png" alt="redshift" border="0" width="200"/>
<img src="https://superset.apache.org/img/databases/google-biquery.png" alt="google-biquery" border="0" width="200"/>
<img src="https://superset.apache.org/img/databases/snowflake.png" alt="snowflake" border="0" width="200"/>
<img src="https://superset.apache.org/img/databases/trino.png" alt="trino" border="0" width="150" />
<img src="https://superset.apache.org/img/databases/presto.png" alt="presto" border="0" width="200"/>
<img src="https://superset.apache.org/img/databases/databricks.png" alt="databricks" border="0" width="160" />
<img src="https://superset.apache.org/img/databases/druid.png" alt="druid" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/firebolt.png" alt="firebolt" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/timescale.png" alt="timescale" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/rockset.png" alt="rockset" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/postgresql.png" alt="postgresql" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/mysql.png" alt="mysql" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/mssql-server.png" alt="mssql-server" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/ibm-db2.svg" alt="db2" border="0" width="220" />
<img src="https://superset.apache.org/img/databases/sqlite.png" alt="sqlite" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/sybase.png" alt="sybase" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/mariadb.png" alt="mariadb" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/vertica.png" alt="vertica" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/oracle.png" alt="oracle" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/firebird.png" alt="firebird" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/greenplum.png" alt="greenplum" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/clickhouse.png" alt="clickhouse" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/exasol.png" alt="exasol" border="0" width="160" />
<img src="https://superset.apache.org/img/databases/monet-db.png" alt="monet-db" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/apache-kylin.png" alt="apache-kylin" border="0" width="80"/>
<img src="https://superset.apache.org/img/databases/hologres.png" alt="hologres" border="0" width="80"/>
<img src="https://superset.apache.org/img/databases/netezza.png" alt="netezza" border="0" width="80"/>
<img src="https://superset.apache.org/img/databases/pinot.png" alt="pinot" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/teradata.png" alt="teradata" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/yugabyte.png" alt="yugabyte" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/databend.png" alt="databend" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/starrocks.png" alt="starrocks" border="0" width="200" />
<img src="https://superset.apache.org/img/databases/doris.png" alt="doris" border="0" width="200" />
</p>
**A more comprehensive list of supported databases** along with the configuration instructions can be found [here](https://superset.apache.org/docs/databases/installing-database-drivers).
**A more comprehensive list of supported databases** along with the configuration instructions can be found [here](https://superset.apache.org/docs/configuration/databases).
Want to add support for your datastore or data engine? Read more [here](https://superset.apache.org/docs/frequently-asked-questions#does-superset-work-with-insert-database-engine-here) about the technical requirements.
@@ -159,9 +161,9 @@ how to set up a development environment.
## Resources
- [Superset "In the Wild"](RESOURCES/INTHEWILD.md) - open a PR to add your org to the list!
- [Feature Flags](RESOURCES/FEATURE_FLAGS.md) - the status of Superset's Feature Flags.
- [Standard Roles](RESOURCES/STANDARD_ROLES.md) - How RBAC permissions map to roles.
- [Superset "In the Wild"](https://github.com/apache/superset/blob/master/RESOURCES/INTHEWILD.md) - open a PR to add your org to the list!
- [Feature Flags](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md) - the status of Superset's Feature Flags.
- [Standard Roles](https://github.com/apache/superset/blob/master/RESOURCES/STANDARD_ROLES.md) - How RBAC permissions map to roles.
- [Superset Wiki](https://github.com/apache/superset/wiki) - Tons of additional community resources: best practices, community content and other information.
- [Superset SIPs](https://github.com/orgs/apache/projects/170) - The status of Superset's SIPs (Superset Improvement Proposals) for both consensus and implementation status.
@@ -172,7 +174,7 @@ Understanding the Superset Points of View
- Getting Started with Superset
- [Superset in 2 Minutes using Docker Compose](https://superset.apache.org/docs/installation/docker-compose#installing-superset-locally-using-docker-compose)
- [Installing Database Drivers](https://superset.apache.org/docs/databases/docker-add-drivers/)
- [Installing Database Drivers](https://superset.apache.org/docs/configuration/databases#installing-database-drivers)
- [Building New Database Connectors](https://preset.io/blog/building-database-connector/)
- [Create Your First Dashboard](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/)
- [Comprehensive Tutorial for Contributing Code to Apache Superset
@@ -198,10 +200,10 @@ Understanding the Superset Points of View
- [Superset API](https://superset.apache.org/docs/rest-api)
## Repo Activity
<a href="https://next.ossinsight.io/widgets/official/compose-last-28-days-stats?repo_id=39464018" target="_blank" style="display: block" align="center">
<a href="https://next.ossinsight.io/widgets/official/compose-last-28-days-stats?repo_id=39464018" target="_blank" align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-last-28-days-stats/thumbnail.png?repo_id=39464018&image_size=auto&color_scheme=dark" width="655" height="auto">
<img alt="Performance Stats of apache/superset - Last 28 days" src="https://next.ossinsight.io/widgets/official/compose-last-28-days-stats/thumbnail.png?repo_id=39464018&image_size=auto&color_scheme=light" width="655" height="auto">
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-last-28-days-stats/thumbnail.png?repo_id=39464018&image_size=auto&color_scheme=dark" width="655" height="auto" />
<img alt="Performance Stats of apache/superset - Last 28 days" src="https://next.ossinsight.io/widgets/official/compose-last-28-days-stats/thumbnail.png?repo_id=39464018&image_size=auto&color_scheme=light" width="655" height="auto" />
</picture>
</a>

View File

@@ -445,8 +445,16 @@ Create the distribution
```bash
cd superset-frontend/
npm ci && npm run build
# Compile translations for the frontend
npm run build-translation
cd ../
flask fab babel-compile --target superset/translations
# Compile translations for the backend
./scripts/translations/generate_po_files.sh
# build the python distribution
python setup.py sdist
```
@@ -506,3 +514,18 @@ and re-push the proper images and tags through this interface. The action
takes the version (ie `3.1.1`), the git reference (any SHA, tag or branch
reference), and whether to force the `latest` Docker tag on the
generated images.
### Npm Release
You might want to publish the latest @superset-ui release to npm
```bash
cd superset/superset-frontend
```
An automated GitHub action will run and generate a new tag, which will contain a version number provided as a parameter.
```bash
export GH_TOKEN={GITHUB_TOKEN}
npx lerna version {VERSION} --conventional-commits --create-release github --no-private --yes --message {COMMIT_MESSAGE}
```
This action will publish the specified version to npm registry.
```bash
npx lerna publish from-package --yes
```

View File

@@ -46,10 +46,11 @@ These features are **finished** but currently being tested. They are usable, but
- CONFIRM_DASHBOARD_DIFF
- DRILL_TO_DETAIL
- DYNAMIC_PLUGINS: [(docs)](https://superset.apache.org/docs/configuration/running-on-kubernetes)
- ENABLE_SUPERSET_META_DB: [(docs)](https://superset.apache.org/docs/databases/meta-database/)
- ENABLE_SUPERSET_META_DB: [(docs)](https://superset.apache.org/docs/configuration/databases/#querying-across-databases)
- ESTIMATE_QUERY_COST
- GLOBAL_ASYNC_QUERIES [(docs)](https://github.com/apache/superset/blob/master/CONTRIBUTING.md#async-chart-queries)
- HORIZONTAL_FILTER_BAR
- IMPERSONATE_WITH_EMAIL_PREFIX
- PLAYWRIGHT_REPORTS_AND_THUMBNAILS
- RLS_IN_SQLLAB
- SSH_TUNNELING [(docs)](https://superset.apache.org/docs/configuration/setup-ssh-tunneling)
@@ -88,6 +89,7 @@ These features flags currently default to True and **will be removed in a future
[//]: # "PLEASE KEEP THE LIST SORTED ALPHABETICALLY"
- AVOID_COLORS_COLLISION
- DASHBOARD_CROSS_FILTERS
- ENABLE_JAVASCRIPT_CONTROLS
- KV_STORE

View File

@@ -72,6 +72,7 @@ Join our growing community!
### Enterprise Technology
- [A3Data](https://a3data.com.br) [@neylsoncrepalde]
- [Analytics Aura](https://analyticsaura.com/) [@Analytics-Aura]
- [Apollo GraphQL](https://www.apollographql.com/) [@evans]
- [Astronomer](https://www.astronomer.io) [@ryw]
- [Avesta Technologies](https://avestatechnologies.com/) [@TheRum]
@@ -86,6 +87,7 @@ Join our growing community!
- [ELMO Cloud HR & Payroll](https://elmosoftware.com.au/)
- [Endress+Hauser](http://www.endress.com/) [@rumbin]
- [FBK - ICT center](http://ict.fbk.eu)
- [Gavagai](https://gavagai.io) [@gavagai-corp]
- [GfK Data Lab](http://datalab.gfk.com) [@mherr]
- [GrowthSimple](https://growthsimple.ai/)
- [Hydrolix](https://www.hydrolix.io/)
@@ -134,6 +136,7 @@ Join our growing community!
- [Zaihang](http://www.zaih.com/)
### Education
- [Aveti Learning](https://avetilearning.com/) [@TheShubhendra]
- [Brilliant.org](https://brilliant.org/)
- [Platzi.com](https://platzi.com/)
- [Sunbird](https://www.sunbird.org/) [@eksteporg]
@@ -152,6 +155,7 @@ Join our growing community!
### Healthcare
- [Amino](https://amino.com) [@shkr]
- [Beans](https://www.beans.fi) [@kakoni]
- [Bluesquare](https://www.bluesquarehub.com/) [@madewulf]
- [Care](https://www.getcare.io/)[@alandao2021]
- [Living Goods](https://www.livinggoods.org) [@chelule]
- [Maieutical Labs](https://maieuticallabs.it) [@xrmx]
@@ -163,14 +167,18 @@ Join our growing community!
### HR / Staffing
- [Swile](https://www.swile.co/) [@PaoloTerzi]
- [Symmetrics](https://www.symmetrics.fyi)
- [bluquist](https://bluquist.com/)
### Government
- [City of Ann Arbor, MI](https://www.a2gov.org/) [@sfirke]
- [RIS3 Strategy of CZ, MIT CR](https://www.ris3.cz/) [@RIS3CZ]
### Travel
- [Agoda](https://www.agoda.com/) [@lostseaway, @maiake, @obombayo]
- [Skyscanner](https://www.skyscanner.net/) [@cleslie, @stanhoucke]
### Others
- [10Web](https://10web.io/)
- [AI inside](https://inside.ai/en/)
- [Automattic](https://automattic.com/) [@Khrol, @Usiel]
- [Dropbox](https://www.dropbox.com/) [@bkyryliuk]

View File

@@ -24,6 +24,10 @@ assists people when migrating to a new version.
## Next
- [29274](https://github.com/apache/superset/pull/29274): We made it easier to trigger CI on your
forks, whether they are public or private. Simply push to a branch that fits `[0-9].[0-9]*` and
should run on your fork, giving you flexibility on naming your release branches and triggering
CI
- [27505](https://github.com/apache/superset/pull/27505): We simplified the files under
`requirements/` folder. If you use these files for your builds you may want to double
check that your builds are not affected. `base.txt` should be the same as before, though
@@ -43,6 +47,20 @@ assists people when migrating to a new version.
set `SLACK_API_TOKEN` to fetch and serve Slack avatar links
- [28134](https://github.com/apache/superset/pull/28134/) The default logging level was changed
from DEBUG to INFO - which is the normal/sane default logging level for most software.
- [27777](https://github.com/apache/superset/pull/27777) Moves debug logging logic to config.py.
See `LOG_LEVEL` in `superset/config.py` for the recommended default.
- [28205](https://github.com/apache/superset/pull/28205) The permission `all_database_access` now
more clearly provides access to all databases, as specified in its name. Before it only allowed
listing all databases in CRUD-view and dropdown and didn't provide access to data as it
seemed the name would imply.
- [28483](https://github.com/apache/superset/pull/28483) Starting with this version we bundle
translations inside the python package. This includes the .mo files needed by pybabel on the
backend, as well as the .json files used by the frontend. If you were doing anything before
as part of your bundling to expose translation packages, it's probably not needed anymore.
### Potential Downtime
- [27392](https://github.com/apache/superset/pull/27392): Adds an index to `query.sql_editor_id` to improve performance. This may cause downtime on large deployments.
## 4.0.0
@@ -76,6 +94,7 @@ assists people when migrating to a new version.
### Potential Downtime
- [26416](https://github.com/apache/superset/pull/26416): Adds two database indexes to the `report_execution_log` table and one database index to the `report_recipient` to improve performance. Scheduled downtime may be required for large deployments.
- [28482](https://github.com/apache/superset/pull/28482): Potentially augments the `query.executed_sql` and `query.select_sql` columns for MySQL from `MEDIUMTEXT` to `LONGTEXT`. Potential downtime may be required for large deployments which previously ran [27119](https://github.com/apache/superset/pull/27119).
## 3.1.0

View File

@@ -39,7 +39,6 @@ x-common-build: &common-build
cache_from:
- apache/superset-cache:3.10-slim-bookworm
version: "4.0"
services:
nginx:
image: nginx:latest
@@ -94,12 +93,11 @@ services:
depends_on: *superset-depends-on
volumes: *superset-volumes
environment:
CYPRESS_CONFIG: "${CYPRESS_CONFIG}"
CYPRESS_CONFIG: "${CYPRESS_CONFIG:-}"
superset-websocket:
container_name: superset_websocket
build: ./superset-websocket
image: superset-websocket
ports:
- 8080:8080
extra_hosts:
@@ -122,7 +120,7 @@ services:
- /home/superset-websocket/dist
# Mounting a config file that contains a dummy secret required to boot up.
# do no not use this docker-compose in production
# do not use this docker-compose in production
- ./docker/superset-websocket/config.json:/home/superset-websocket/config.json
environment:
- PORT=8080
@@ -144,7 +142,7 @@ services:
user: *superset-user
volumes: *superset-volumes
environment:
CYPRESS_CONFIG: "${CYPRESS_CONFIG}"
CYPRESS_CONFIG: "${CYPRESS_CONFIG:-}"
healthcheck:
disable: true
@@ -153,7 +151,7 @@ services:
environment:
# set this to false if you have perf issues running the npm i; npm run dev in-docker
# if you do so, you have to run this manually on the host, which should perform better!
SCARF_ANALYTICS: "${SCARF_ANALYTICS}"
SCARF_ANALYTICS: "${SCARF_ANALYTICS:-}"
container_name: superset_node
command: ["/app/docker/docker-frontend.sh"]
env_file:
@@ -174,6 +172,8 @@ services:
required: true
- path: docker/.env-local # optional override
required: false
environment:
CELERYD_CONCURRENCY: 2
restart: unless-stopped
depends_on: *superset-depends-on
user: *superset-user
@@ -213,12 +213,15 @@ services:
required: true
- path: docker/.env-local # optional override
required: false
profiles:
- optional
environment:
DATABASE_HOST: localhost
DATABASE_DB: test
REDIS_CELERY_DB: 2
REDIS_RESULTS_DB: 3
REDIS_HOST: localhost
CELERYD_CONCURRENCY: 8
network_mode: host
depends_on: *superset-depends-on
user: *superset-user

View File

@@ -38,7 +38,8 @@ fi
case "${1}" in
worker)
echo "Starting Celery worker..."
celery --app=superset.tasks.celery_app:app worker -O fair -l INFO
# setting up only 2 workers by default to contain memory usage in dev environments
celery --app=superset.tasks.celery_app:app worker -O fair -l INFO --concurrency=${CELERYD_CONCURRENCY:-2}
;;
beat)
echo "Starting Celery beat..."

View File

@@ -94,10 +94,9 @@ CELERY_CONFIG = CeleryConfig
FEATURE_FLAGS = {"ALERT_REPORTS": True}
ALERT_REPORTS_NOTIFICATION_DRY_RUN = True
WEBDRIVER_BASEURL = "http://superset:8088/"
WEBDRIVER_BASEURL = "http://superset:8088/" # When using docker compose baseurl should be http://superset_app:8088/
# The base URL for the email report hyperlinks.
WEBDRIVER_BASEURL_USER_FRIENDLY = WEBDRIVER_BASEURL
SQLLAB_CTAS_NO_LIMIT = True
#

3
docs/.gitignore vendored
View File

@@ -20,3 +20,6 @@ yarn-debug.log*
yarn-error.log*
docs/.zshrc
# Gets copied from the root of the project at build time (yarn start / yarn build)
docs/intro.md

1
docs/.nvmrc Normal file
View File

@@ -0,0 +1 @@
v20.12.2

201
docs/data/countries.json Normal file
View File

@@ -0,0 +1,201 @@
{
"countries": [
"Afghanistan",
"Aland",
"Albania",
"Algeria",
"American Samoa",
"Andorra",
"Angola",
"Anguilla",
"Antarctica",
"Antigua And Barbuda",
"Argentina",
"Armenia",
"Australia",
"Austria",
"Azerbaijan",
"Bahrain",
"Bangladesh",
"Barbados",
"Belarus",
"Belgium",
"Belize",
"Benin",
"Bermuda",
"Bhutan",
"Bolivia",
"Bosnia And Herzegovina",
"Botswana",
"Brazil",
"Brunei",
"Bulgaria",
"Burkina Faso",
"Burundi",
"Cambodia",
"Cameroon",
"Canada",
"Cape Verde",
"Central African Republic",
"Chad",
"Chile",
"China",
"Colombia",
"Comoros",
"Cook Islands",
"Costa Rica",
"Croatia",
"Cuba",
"Cyprus",
"Czech Republic",
"Democratic Republic Of The Congo",
"Denmark",
"Djibouti",
"Dominica",
"Dominican Republic",
"Ecuador",
"Egypt",
"El Salvador",
"Equatorial Guinea",
"Eritrea",
"Estonia",
"Ethiopia",
"Fiji",
"Finland",
"France",
"France (regions)",
"French Polynesia",
"Gabon",
"Gambia",
"Germany",
"Ghana",
"Greece",
"Greenland",
"Grenada",
"Guatemala",
"Guinea",
"Guyana",
"Haiti",
"Honduras",
"Iceland",
"India",
"Indonesia",
"Iran",
"Israel",
"Italy",
"Italy (regions)",
"Japan",
"Jordan",
"Kazakhstan",
"Kenya",
"Korea",
"Kuwait",
"Kyrgyzstan",
"Laos",
"Latvia",
"Lebanon",
"Lesotho",
"Liberia",
"Libya",
"Liechtenstein",
"Lithuania",
"Luxembourg",
"Macedonia",
"Madagascar",
"Malawi",
"Malaysia",
"Maldives",
"Mali",
"Malta",
"Marshall Islands",
"Mauritania",
"Mauritius",
"Mexico",
"Moldova",
"Mongolia",
"Montenegro",
"Montserrat",
"Morocco",
"Mozambique",
"Myanmar",
"Namibia",
"Nauru",
"Nepal",
"Netherlands",
"New Caledonia",
"New Zealand",
"Nicaragua",
"Niger",
"Nigeria",
"Northern Mariana Islands",
"Norway",
"Oman",
"Pakistan",
"Palau",
"Panama",
"Papua New Guinea",
"Paraguay",
"Peru",
"Philippines",
"Philippines (regions)",
"Poland",
"Portugal",
"Qatar",
"Romania",
"Russia",
"Rwanda",
"Saint Lucia",
"Saint Pierre And Miquelon",
"Saint Vincent And The Grenadines",
"Samoa",
"San Marino",
"Sao Tome And Principe",
"Saudi Arabia",
"Senegal",
"Seychelles",
"Sierra Leone",
"Singapore",
"Slovakia",
"Slovenia",
"Solomon Islands",
"Somalia",
"South Africa",
"Spain",
"Sri Lanka",
"Sudan",
"Suriname",
"Sweden",
"Switzerland",
"Syria",
"Taiwan",
"Tajikistan",
"Tanzania",
"Thailand",
"The Bahamas",
"Timorleste",
"Togo",
"Tonga",
"Trinidad And Tobago",
"Tunisia",
"Turkey",
"Turkey (regions)",
"Turkmenistan",
"Turks And Caicos Islands",
"Uganda",
"UK",
"Ukraine",
"United Arab Emirates",
"United States Minor Outlying Islands",
"United States Virgin Islands",
"Uruguay",
"USA",
"Uzbekistan",
"Vanuatu",
"Venezuela",
"Vietnam",
"Wallis And Futuna",
"Yemen",
"Zambia",
"Zimbabwe"
]
}

View File

@@ -4,8 +4,7 @@ hide_title: true
sidebar_position: 10
---
import { Buffer } from 'buffer';
global.Buffer = Buffer;
import { Buffer } from 'buffer/index.js';
import SwaggerUI from 'swagger-ui-react';
import openapi from '/resources/openapi.json';
import 'swagger-ui-react/swagger-ui.css';

View File

@@ -5,7 +5,7 @@ sidebar_position: 2
version: 2
---
## Alerts and Reports
# Alerts and Reports
Users can configure automated alerts and reports to send dashboards or charts to an email recipient or Slack channel.
@@ -14,11 +14,11 @@ Users can configure automated alerts and reports to send dashboards or charts to
Alerts and reports are disabled by default. To turn them on, you need to do some setup, described here.
### Requirements
## Requirements
#### Commons
### Commons
##### In your `superset_config.py` or `superset_config_docker.py`
#### In your `superset_config.py` or `superset_config_docker.py`
- `"ALERT_REPORTS"` [feature flag](/docs/configuration/configuring-superset#feature-flags) must be turned to True.
- `beat_schedule` in CeleryConfig must contain schedule for `reports.scheduler`.
@@ -26,11 +26,11 @@ Alerts and reports are disabled by default. To turn them on, you need to do some
- emails: `SMTP_*` settings
- Slack messages: `SLACK_API_TOKEN`
###### Disable dry-run mode
##### Disable dry-run mode
Screenshots will be taken but no messages actually sent as long as `ALERT_REPORTS_NOTIFICATION_DRY_RUN = True`, its default value in `docker/pythonpath_dev/superset_config.py`. To disable dry-run mode and start receiving email/Slack notifications, set `ALERT_REPORTS_NOTIFICATION_DRY_RUN` to `False` in [superset config](https://github.com/apache/superset/blob/master/docker/pythonpath_dev/superset_config.py).
##### In your `Dockerfile`
#### In your `Dockerfile`
- You must install a headless browser, for taking screenshots of the charts and dashboards. Only Firefox and Chrome are currently supported.
> If you choose Chrome, you must also change the value of `WEBDRIVER_TYPE` to `"chrome"` in your `superset_config.py`.
@@ -43,7 +43,7 @@ You can either install and configure the headless browser - see "Custom Dockerfi
*Note*: In this context, a "dev image" is the same application software as its corresponding non-dev image, just bundled with additional tools. So an image like `3.1.0-dev` is identical to `3.1.0` when it comes to stability, functionality, and running in production. The actual "in-development" versions of Superset - cutting-edge and unstable - are not tagged with version numbers on Docker Hub and will display version `0.0.0-dev` within the Superset UI.
#### Slack integration
### Slack integration
To send alerts and reports to Slack channels, you need to create a new Slack Application on your workspace.
@@ -61,14 +61,14 @@ To send alerts and reports to Slack channels, you need to create a new Slack App
Note: when you configure an alert or a report, the Slack channel list takes channel names without the leading '#' e.g. use `alerts` instead of `#alerts`.
#### Kubernetes-specific
### Kubernetes-specific
- You must have a `celery beat` pod running. If you're using the chart included in the GitHub repository under [helm/superset](https://github.com/apache/superset/tree/master/helm/superset), you need to put `supersetCeleryBeat.enabled = true` in your values override.
- You can see the dedicated docs about [Kubernetes installation](/docs/installation/kubernetes) for more details.
#### Docker Compose specific
### Docker Compose specific
##### You must have in your `docker-compose.yml`
#### You must have in your `docker-compose.yml`
- A Redis message broker
- PostgreSQL DB instead of SQLlite
@@ -160,13 +160,13 @@ WEBDRIVER_OPTION_ARGS = [
]
# This is for internal use, you can keep http
WEBDRIVER_BASEURL = "http://superset:8088"
WEBDRIVER_BASEURL = "http://superset:8088" # When running using docker compose use "http://superset_app:8088'
# This is the link sent to the recipient. Change to your domain, e.g. https://superset.mydomain.com
WEBDRIVER_BASEURL_USER_FRIENDLY = "http://localhost:8088"
```
You also need
to specify on behalf of which username to render the dashboards. In general dashboards and charts
to specify on behalf of which username to render the dashboards. In general, dashboards and charts
are not accessible to unauthorized requests, that is why the worker needs to take over credentials
of an existing user to take a snapshot.
@@ -195,14 +195,34 @@ Please refer to `ExecutorType` in the codebase for other executor types.
its default value of `http://0.0.0.0:8080/`.
### Custom Dockerfile
It's also possible to specify a minimum interval between each report's execution through the config file:
``` python
# Set a minimum interval threshold between executions (for each Alert/Report)
# Value should be an integer
ALERT_MINIMUM_INTERVAL = int(timedelta(minutes=10).total_seconds())
REPORT_MINIMUM_INTERVAL = int(timedelta(minutes=5).total_seconds())
```
Alternatively, you can assign a function to `ALERT_MINIMUM_INTERVAL` and/or `REPORT_MINIMUM_INTERVAL`. This is useful to dynamically retrieve a value as needed:
``` python
def alert_dynamic_minimal_interval(**kwargs) -> int:
"""
Define logic here to retrieve the value dynamically
"""
ALERT_MINIMUM_INTERVAL = alert_dynamic_minimal_interval
```
## Custom Dockerfile
If you're running the dev version of a released Superset image, like `apache/superset:3.1.0-dev`, you should be set with the above.
But if you're building your own image, or starting with a non-dev version, a webdriver (and headless browser) is needed to capture screenshots of the charts and dashboards which are then sent to the recipient.
Here's how you can modify your Dockerfile to take the screenshots either with Firefox or Chrome.
#### Using Firefox
### Using Firefox
```docker
FROM apache/superset:3.1.0
@@ -223,7 +243,7 @@ RUN pip install --no-cache gevent psycopg2 redis
USER superset
```
#### Using Chrome
### Using Chrome
```docker
FROM apache/superset:3.1.0
@@ -248,21 +268,21 @@ USER superset
Don't forget to set `WEBDRIVER_TYPE` and `WEBDRIVER_OPTION_ARGS` in your config if you use Chrome.
### Troubleshooting
## Troubleshooting
There are many reasons that reports might not be working. Try these steps to check for specific issues.
#### Confirm feature flag is enabled and you have sufficient permissions
### Confirm feature flag is enabled and you have sufficient permissions
If you don't see "Alerts & Reports" under the *Manage* section of the Settings dropdown in the Superset UI, you need to enable the `ALERT_REPORTS` feature flag (see above). Enable another feature flag and check to see that it took effect, to verify that your config file is getting loaded.
Log in as an admin user to ensure you have adequate permissions.
#### Check the logs of your Celery worker
### Check the logs of your Celery worker
This is the best source of information about the problem. In a docker compose deployment, you can do this with a command like `docker logs superset_worker --since 1h`.
#### Check web browser and webdriver installation
### Check web browser and webdriver installation
To take a screenshot, the worker visits the dashboard or chart using a headless browser, then takes a screenshot. If you are able to send a chart as CSV or text but can't send as PNG, your problem may lie with the browser.
@@ -270,7 +290,7 @@ Superset docker images that have a tag ending with `-dev` have the Firefox headl
If you are handling the installation of that software on your own, or wish to use Chromium instead, do your own verification to ensure that the headless browser opens successfully in the worker environment.
#### Send a test email
### Send a test email
One symptom of an invalid connection to an email server is receiving an error of `[Errno 110] Connection timed out` in your logs when the report tries to send.
@@ -301,7 +321,7 @@ Possible fixes:
- Some cloud hosts disable outgoing unauthenticated SMTP email to prevent spam. For instance, [Azure blocks port 25 by default on some machines](https://learn.microsoft.com/en-us/azure/virtual-network/troubleshoot-outbound-smtp-connectivity). Enable that port or use another sending method.
- Use another set of SMTP credentials that you verify works in this setup.
#### Browse to your report from the worker
### Browse to your report from the worker
The worker may be unable to reach the report. It will use the value of `WEBDRIVER_BASEURL` to browse to the report. If that route is invalid, or presents an authentication challenge that the worker can't pass, the report screenshot will fail.
@@ -309,7 +329,7 @@ Check this by attempting to `curl` the URL of a report that you see in the error
In a deployment with authentication measures enabled like HTTPS and Single Sign-On, it may make sense to have the worker navigate directly to the Superset application running in the same location, avoiding the need to sign in. For instance, you could use `WEBDRIVER_BASEURL="http://superset_app:8088"` for a docker compose deployment, and set `"force_https": False,` in your `TALISMAN_CONFIG`.
### Scheduling Queries as Reports
## Scheduling Queries as Reports
You can optionally allow your users to schedule queries directly in SQL Lab. This is done by adding
extra metadata to saved queries, which are then picked up by an external scheduled (like
@@ -402,6 +422,6 @@ This configuration is based on
menu item called “Schedule” to SQL Lab. When the menu item is clicked, a modal will show up where
the user can add the metadata required for scheduling the query.
This information can then be retrieved from the endpoint `/savedqueryviewapi/api/read` and used to
schedule the queries that have `scheduled_queries` in their JSON metadata. For schedulers other than
This information can then be retrieved from the endpoint `/api/v1/saved_query/` and used to
schedule the queries that have `schedule_info` in their JSON metadata. For schedulers other than
Airflow, additional fields can be easily added to the configuration file above.

View File

@@ -5,9 +5,9 @@ sidebar_position: 4
version: 1
---
## Async Queries via Celery
# Async Queries via Celery
### Celery
## Celery
On large analytic databases, its common to run queries that execute for minutes or hours. To enable
support for long running queries that execute beyond the typical web requests timeout (30-60
@@ -89,7 +89,7 @@ issues arise. Please clear your existing results cache store when upgrading an e
- SQL Lab will _only run your queries asynchronously if_ you enable **Asynchronous Query Execution**
in your database settings (Sources > Databases > Edit record).
### Celery Flower
## Celery Flower
Flower is a web based tool for monitoring the Celery cluster which you can install from pip:

View File

@@ -5,7 +5,7 @@ sidebar_position: 3
version: 1
---
## Caching
# Caching
Superset uses [Flask-Caching](https://flask-caching.readthedocs.io/) for caching purposes.
Flask-Caching supports various caching backends, including Redis (recommended), Memcached,
@@ -33,7 +33,7 @@ FILTER_STATE_CACHE_CONFIG = {
}
```
### Dependencies
## Dependencies
In order to use dedicated cache stores, additional python libraries must be installed
@@ -43,7 +43,7 @@ In order to use dedicated cache stores, additional python libraries must be inst
These libraries can be installed using pip.
### Fallback Metastore Cache
## Fallback Metastore Cache
Note, that some form of Filter State and Explore caching are required. If either of these caches
are undefined, Superset falls back to using a built-in cache that stores data in the metadata
@@ -60,7 +60,7 @@ DATA_CACHE_CONFIG = {
}
```
### Chart Cache Timeout
## Chart Cache Timeout
The cache timeout for charts may be overridden by the settings for an individual chart, dataset, or
database. Each of these configurations will be checked in order before falling back to the default
@@ -69,7 +69,7 @@ value defined in `DATA_CACHE_CONFIG`.
Note, that by setting the cache timeout to `-1`, caching for charting data can be disabled, either
per chart, dataset or database, or by default if set in `DATA_CACHE_CONFIG`.
### SQL Lab Query Results
## SQL Lab Query Results
Caching for SQL Lab query results is used when async queries are enabled and is configured using
`RESULTS_BACKEND`.
@@ -79,7 +79,7 @@ instead requires a cachelib object.
See [Async Queries via Celery](/docs/configuration/async-queries-celery) for details.
### Caching Thumbnails
## Caching Thumbnails
This is an optional feature that can be turned on by activating its [feature flag](/docs/configuration/configuring-superset#feature-flags) on config:

View File

@@ -5,28 +5,40 @@ sidebar_position: 1
version: 1
---
## Configuring Superset
# Configuring Superset
### Configuration
## superset_config.py
To configure your application, you need to create a file `superset_config.py`. Add this file to your
Superset exposes hundreds of configurable parameters through its
[config.py module](https://github.com/apache/superset/blob/master/superset/config.py). The
variables and objects exposed act as a public interface of the bulk of what you may want
to configure, alter and interface with. In this python module, you'll find all these
parameters, sensible defaults, as well as rich documentation in the form of comments
`PYTHONPATH` or create an environment variable `SUPERSET_CONFIG_PATH` specifying the full path of the `superset_config.py`.
To configure your application, you need to create you own configuration module, which
will allow you to override few or many of these parameters. Instead of altering the core module,
You'll want to define your own module (typically a file named `superset_config.py`.
Add this file to your `PYTHONPATH` or create an environment variable
`SUPERSET_CONFIG_PATH` specifying the full path of the `superset_config.py`.
For example, if deploying on Superset directly on a Linux-based system where your `superset_config.py` is under `/app` directory, you can run:
For example, if deploying on Superset directly on a Linux-based system where your
`superset_config.py` is under `/app` directory, you can run:
```bash
export SUPERSET_CONFIG_PATH=/app/superset_config.py
```
If you are using your own custom Dockerfile with official Superset image as base image, then you can add your overrides as shown below:
If you are using your own custom Dockerfile with official Superset image as base image,
then you can add your overrides as shown below:
```bash
COPY --chown=superset superset_config.py /app/
ENV SUPERSET_CONFIG_PATH /app/superset_config.py
```
Docker compose deployments handle application configuration differently. See [https://github.com/apache/superset/tree/master/docker#readme](https://github.com/apache/superset/tree/master/docker#readme) for details.
Docker compose deployments handle application configuration differently using specific conventions..
Refer to the [docker-compose tips & configuration](/docs/installation/docker-compose#docker-compose-tips--configuration)
for details.
The following is an example of just a few of the parameters you can set in your `superset_config.py` file:
@@ -63,33 +75,39 @@ WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
MAPBOX_API_KEY = ''
```
All the parameters and default values defined in
[https://github.com/apache/superset/blob/master/superset/config.py](https://github.com/apache/superset/blob/master/superset/config.py)
:::tip
Note that it is typical to copy and paste [only] the portions of the
core [superset/config.py](https://github.com/apache/superset/blob/master/superset/config.py) that
you want to alter, along with the related comments into your own `superset_config.py` file.
:::
All the parameters and default values defined
in [superset/config.py](https://github.com/apache/superset/blob/master/superset/config.py)
can be altered in your local `superset_config.py`. Administrators will want to read through the file
to understand what can be configured locally as well as the default values in place.
Since `superset_config.py` acts as a Flask configuration module, it can be used to alter the
settings Flask itself, as well as Flask extensions like `flask-wtf`, `flask-caching`, `flask-migrate`,
and `flask-appbuilder`. Flask App Builder, the web framework used by Superset, offers many
settings Flask itself, as well as Flask extensions that Superset bundles like
`flask-wtf`, `flask-caching`, `flask-migrate`,
and `flask-appbuilder`. Each one of these extensions offers intricate configurability.
Flask App Builder, the web framework used by Superset, also offers many
configuration settings. Please consult the
[Flask App Builder Documentation](https://flask-appbuilder.readthedocs.org/en/latest/config.html)
for more information on how to configure it.
Make sure to change:
You'll want to change:
- `SQLALCHEMY_DATABASE_URI`: by default it is stored at ~/.superset/superset.db
- `SECRET_KEY`: to a long random string
If you need to exempt endpoints from CSRF (e.g. if you are running a custom auth postback endpoint),
you can add the endpoints to `WTF_CSRF_EXEMPT_LIST`:
- `SQLALCHEMY_DATABASE_URI`: that by default points to sqlite database located at
~/.superset/superset.db
```
WTF_CSRF_EXEMPT_LIST = []
```
### Specifying a SECRET_KEY
## Specifying a SECRET_KEY
#### Adding an initial SECRET_KEY
### Adding an initial SECRET_KEY
Superset requires a user-specified SECRET_KEY to start up. This requirement was [added in version 2.1.0 to force secure configurations](https://preset.io/blog/superset-security-update-default-secret_key-vulnerability/). Add a strong SECRET_KEY to your `superset_config.py` file like:
@@ -104,7 +122,7 @@ This key will be used for securely signing session cookies and encrypting sensit
Your deployment must use a complex, unique key.
:::
#### Rotating to a newer SECRET_KEY
### Rotating to a newer SECRET_KEY
If you wish to change your existing SECRET_KEY, add the existing SECRET_KEY to your `superset_config.py` file as
`PREVIOUS_SECRET_KEY = `and provide your new key as `SECRET_KEY =`. You can find your current SECRET_KEY with these
@@ -117,9 +135,13 @@ from flask import current_app; print(current_app.config["SECRET_KEY"])
Save your `superset_config.py` with these values and then run `superset re-encrypt-secrets`.
### Using a production metastore
## Setting up a production metadata database
By default, Superset is configured to use SQLite, which is a simple and fast way to get started
Superset needs a database to store the information it manages, like the definitions of
charts, dashboards, and many other things.
By default, Superset is configured to use [SQLite](https://www.sqlite.org/),
a self-contained, single-file database that offers a simple and fast way to get started
(without requiring any installation). However, for production environments,
using SQLite is highly discouraged due to security, scalability, and data integrity reasons.
It's important to use only the supported database engines and consider using a different
@@ -139,10 +161,17 @@ Use the following database drivers and connection strings:
| [PostgreSQL](https://www.postgresql.org/) | `pip install psycopg2` | `postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>` |
| [MySQL](https://www.mysql.com/) | `pip install mysqlclient` | `mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>` |
:::tip
Properly setting up metadata store is beyond the scope of this documentation. We recommend
using a hosted managed service such as [Amazon RDS](https://aws.amazon.com/rds/) or
[Google Cloud Databases](https://cloud.google.com/products/databases?hl=en) to handle
service and supporting infrastructure and backup strategy.
:::
To configure Superset metastore set `SQLALCHEMY_DATABASE_URI` config key on `superset_config`
to the appropriate connection string.
### Running on a WSGI HTTP Server
## Running on a WSGI HTTP Server
While you can run Superset on NGINX or Apache, we recommend using Gunicorn in async mode. This
enables impressive concurrency even and is fairly easy to install and configure. Please refer to the
@@ -168,15 +197,15 @@ for production use._
If you're not using Gunicorn, you may want to disable the use of `flask-compress` by setting
`COMPRESS_REGISTER = False` in your `superset_config.py`.
Currently, Google BigQuery python sdk is not compatible with `gevent`, due to some dynamic monkeypatching on python core library by `gevent`.
Currently, the Google BigQuery Python SDK is not compatible with `gevent`, due to some dynamic monkeypatching on python core library by `gevent`.
So, when you use `BigQuery` datasource on Superset, you have to use `gunicorn` worker type except `gevent`.
### HTTPS Configuration
## HTTPS Configuration
You can configure HTTPS upstream via a load balancer or a reverse proxy (such as nginx) and do SSL/TLS Offloading before traffic reaches the Superset application. In this setup, local traffic from a Celery worker taking a snapshot of a chart for Alerts & Reports can access Superset at a `http://` URL, from behind the ingress point.
You can also configure [SSL in Gunicorn](https://docs.gunicorn.org/en/stable/settings.html#ssl) (the Python webserver) if you are using an official Superset Docker image.
### Configuration Behind a Load Balancer
## Configuration Behind a Load Balancer
If you are running superset behind a load balancer or reverse proxy (e.g. NGINX or ELB on AWS), you
may need to utilize a healthcheck endpoint so that your load balancer knows if your superset
@@ -194,7 +223,7 @@ In case the reverse proxy is used for providing SSL encryption, an explicit defi
RequestHeader set X-Forwarded-Proto "https"
```
### Custom OAuth2 Configuration
## Custom OAuth2 Configuration
Superset is built on Flask-AppBuilder (FAB), which supports many providers out of the box
(GitHub, Twitter, LinkedIn, Google, Azure, etc). Beyond those, Superset can be configured to connect
@@ -293,19 +322,19 @@ CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager
]
```
### LDAP Authentication
## LDAP Authentication
FAB supports authenticating user credentials against an LDAP server.
To use LDAP you must install the [python-ldap](https://www.python-ldap.org/en/latest/installing.html) package.
See [FAB's LDAP documentation](https://flask-appbuilder.readthedocs.io/en/latest/security.html#authentication-ldap)
for details.
### Mapping LDAP or OAUTH groups to Superset roles
## Mapping LDAP or OAUTH groups to Superset roles
AUTH_ROLES_MAPPING in Flask-AppBuilder is a dictionary that maps from LDAP/OAUTH group names to FAB roles.
It is used to assign roles to users who authenticate using LDAP or OAuth.
#### Mapping OAUTH groups to Superset roles
### Mapping OAUTH groups to Superset roles
The following `AUTH_ROLES_MAPPING` dictionary would map the OAUTH group "superset_users" to the Superset roles "Gamma" as well as "Alpha", and the OAUTH group "superset_admins" to the Superset role "Admin".
@@ -315,7 +344,7 @@ AUTH_ROLES_MAPPING = {
"superset_admins": ["Admin"],
}
```
#### Mapping LDAP groups to Superset roles
### Mapping LDAP groups to Superset roles
The following `AUTH_ROLES_MAPPING` dictionary would map the LDAP DN "cn=superset_users,ou=groups,dc=example,dc=com" to the Superset roles "Gamma" as well as "Alpha", and the LDAP DN "cn=superset_admins,ou=groups,dc=example,dc=com" to the Superset role "Admin".
@@ -327,11 +356,11 @@ AUTH_ROLES_MAPPING = {
```
Note: This requires `AUTH_LDAP_SEARCH` to be set. For more details, please see the [FAB Security documentation](https://flask-appbuilder.readthedocs.io/en/latest/security.html).
#### Syncing roles at login
### Syncing roles at login
You can also use the `AUTH_ROLES_SYNC_AT_LOGIN` configuration variable to control how often Flask-AppBuilder syncs the user's roles with the LDAP/OAUTH groups. If `AUTH_ROLES_SYNC_AT_LOGIN` is set to True, Flask-AppBuilder will sync the user's roles each time they log in. If `AUTH_ROLES_SYNC_AT_LOGIN` is set to False, Flask-AppBuilder will only sync the user's roles when they first register.
### Flask app Configuration Hook
## Flask app Configuration Hook
`FLASK_APP_MUTATOR` is a configuration function that can be provided in your environment, receives
the app object and can alter it in any way. For example, add `FLASK_APP_MUTATOR` into your
@@ -354,7 +383,7 @@ def FLASK_APP_MUTATOR(app: Flask) -> None:
app.before_request_funcs.setdefault(None, []).append(make_session_permanent)
```
### Feature Flags
## Feature Flags
To support a diverse set of users, Superset has some features that are not enabled by default. For
example, some users have stronger security restrictions, while some others may not. So Superset

View File

@@ -1,11 +1,12 @@
---
title: Country Map Tools
hide_title: true
sidebar_position: 10
version: 1
---
## The Country Map Visualization
import countriesData from '../../data/countries.json';
# The Country Map Visualization
The Country Map visualization allows you to plot lightweight choropleth maps of
your countries by province, states, or other subdivision types. It does not rely
@@ -21,102 +22,11 @@ The current list of countries can be found in the src
The Country Maps visualization already ships with the maps for the following countries:
- Afghanistan
- Albania
- Algeria
- Argentina
- Australia
- Austria
- Belgium
- Bolivia
- Brazil
- Bulgaria
- Burundi
- Canada
- Chile
- China
- Colombia
- Costa Rica
- Cuba
- Cyprus
- Denmark
- Dominican Republic
- Ecuador
- Egypt
- El_salvador
- Estonia
- Ethiopia
- France
- France Regions
- Finland
- Germany
- Guatemala
- Haiti
- Honduras
- Iceland
- India
- Indonesia
- Iran
- Italy
- Italy Regions
- Japan
- Jordan
- Kazakhstan
- Kenya
- Korea
- Kuwait
- Kyrgyzstan
- Latvia
- Liechtenstein
- Lithuania
- Malaysia
- Mexico
- Morocco
- Myanmar
- Netherlands
- Nicaragua
- Nigeria
- Norway
- Oman
- Pakistan
- Panama
- Papua New Guinea
- Paraguay
- Peru
- Philippines
- Portugal
- Poland
- Puerto_rico
- Qatar
- Russia
- Rwanda
- Saint Barthelemy
- Saint Martin
- Saudi Arabia
- Singapore
- Slovenia
- Spain
- Sri Lanka
- Sweden
- Switzerland
- Syria
- Tajikistan
- Tanzania
- Thailand
- Timorleste
- Turkey
- Turkey Regions
- Turkmenistan
- Uganda
- Uk
- Ukraine
- United Arab Emirates
- Uruguay
- USA
- Uzbekistan
- Venezuela
- Vietnam
- Zambia
<ul style={{columns: 3}}>
{countriesData.countries.map((country, index) => (
<li key={index}>{country}</li>
))}
</ul>
## Adding a New Country

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +1,18 @@
---
title: Event Logging
hide_title: true
sidebar_position: 9
version: 1
---
## Logging
# Logging
### Event Logging
## Event Logging
Superset by default logs special action events in its internal database (DBEventLogger). These logs can be accessed
on the UI by navigating to **Security > Action Log**. You can freely customize these logs by
implementing your own event log class.
**When custom log class is enabled DBEventLogger is disabled and logs stop being populated in UI logs view.**
**When custom log class is enabled DBEventLogger is disabled and logs
stop being populated in UI logs view.**
To achieve both, custom log class should extend built-in DBEventLogger log class.
Here's an example of a simple JSON-to-stdout class:
@@ -44,9 +44,10 @@ End by updating your config to pass in an instance of the logger you want to use
EVENT_LOGGER = JSONStdOutEventLogger()
```
### StatsD Logging
## StatsD Logging
Superset can be instrumented to log events to StatsD if desired. Most endpoints hit are logged as
Superset can be configured to log events to [StatsD](https://github.com/statsd/statsd)
if desired. Most endpoints hit are logged as
well as key events like query start and end in SQL Lab.
To setup StatsD logging, its a matter of configuring the logger in your `superset_config.py`.

View File

@@ -5,7 +5,7 @@ sidebar_position: 11
version: 1
---
## Importing and Exporting Datasources
# Importing and Exporting Datasources
The superset cli allows you to import and export datasources from and to YAML. Datasources include
databases. The data is expected to be organized in the following hierarchy:
@@ -26,7 +26,7 @@ databases. The data is expected to be organized in the following hierarchy:
| └── ... (more databases)
```
### Exporting Datasources to YAML
## Exporting Datasources to YAML
You can print your current datasources to stdout by running:
@@ -61,7 +61,7 @@ superset export_datasource_schema
As a reminder, you can use the `-b` flag to include back references.
### Importing Datasources
## Importing Datasources
In order to import datasources from a ZIP file, run:
@@ -75,9 +75,9 @@ The optional username flag **-u** sets the user used for the datasource import.
superset import_datasources -p <path / filename> -u 'admin'
```
### Legacy Importing Datasources
## Legacy Importing Datasources
#### From older versions of Superset to current version
### From older versions of Superset to current version
When using Superset version 4.x.x to import from an older version (2.x.x or 3.x.x) importing is supported as the command `legacy_import_datasources` and expects a JSON or directory of JSONs. The options are `-r` for recursive and `-u` for specifying a user. Example of legacy import without options:
@@ -85,7 +85,7 @@ When using Superset version 4.x.x to import from an older version (2.x.x or 3.x.
superset legacy_import_datasources -p <path or filename>
```
#### From older versions of Superset to older versions
### From older versions of Superset to older versions
When using an older Superset version (2.x.x & 3.x.x) of Superset, the command is `import_datasources`. ZIP and YAML files are supported and to switch between them the feature flag `VERSIONED_EXPORT` is used. When `VERSIONED_EXPORT` is `True`, `import_datasources` expects a ZIP file, otherwise YAML. Example:

View File

@@ -1,13 +1,12 @@
---
title: Additional Networking Settings
hide_title: true
title: Network and Security Settings
sidebar_position: 7
version: 1
---
## Additional Networking Settings
# Network and Security Settings
### CORS
## CORS
To configure CORS, or cross-origin resource sharing, the following dependency must be installed:
@@ -21,7 +20,37 @@ The following keys in `superset_config.py` can be specified to configure CORS:
- `CORS_OPTIONS`: options passed to Flask-CORS
([documentation](https://flask-cors.corydolphin.com/en/latest/api.html#extension))
### Domain Sharding
## HTTP headers
Note that Superset bundles [flask-talisman](https://pypi.org/project/talisman/)
Self-descried as a small Flask extension that handles setting HTTP headers that can help
protect against a few common web application security issues.
## CSRF settings
Similarly, [flask-wtf](https://flask-wtf.readthedocs.io/en/0.15.x/config/) is used manage
some CSRF configurations. If you need to exempt endpoints from CSRF (e.g. if you are
running a custom auth postback endpoint), you can add the endpoints to `WTF_CSRF_EXEMPT_LIST`:
## SSH Tunneling
1. Turn on feature flag
- Change [`SSH_TUNNELING`](https://github.com/apache/superset/blob/eb8386e3f0647df6d1bbde8b42073850796cc16f/superset/config.py#L489) to `True`
- If you want to add more security when establishing the tunnel we allow users to overwrite the `SSHTunnelManager` class [here](https://github.com/apache/superset/blob/eb8386e3f0647df6d1bbde8b42073850796cc16f/superset/config.py#L507)
- You can also set the [`SSH_TUNNEL_LOCAL_BIND_ADDRESS`](https://github.com/apache/superset/blob/eb8386e3f0647df6d1bbde8b42073850796cc16f/superset/config.py#L508) this the host address where the tunnel will be accessible on your VPC
2. Create database w/ ssh tunnel enabled
- With the feature flag enabled you should now see ssh tunnel toggle.
- Click the toggle to enable SSH tunneling and add your credentials accordingly.
- Superset allows for two different types of authentication (Basic + Private Key). These credentials should come from your service provider.
3. Verify data is flowing
- Once SSH tunneling has been enabled, go to SQL Lab and write a query to verify data is properly flowing.
## Domain Sharding
Chrome allows up to 6 open connections per domain at a time. When there are more than 6 slices in
dashboard, a lot of time fetch requests are queued up and wait for next available socket.
@@ -42,7 +71,7 @@ or add the following setting in your `superset_config.py` file if domain shards
- `SESSION_COOKIE_DOMAIN = '.mydomain.com'`
### Middleware
## Middleware
Superset allows you to add your own middleware. To add your own middleware, update the
`ADDITIONAL_MIDDLEWARE` key in your `superset_config.py`. `ADDITIONAL_MIDDLEWARE` should be a list

View File

@@ -4,18 +4,3 @@ hide_title: true
sidebar_position: 8
version: 1
---
## SSH Tunneling
1. Turn on feature flag
- Change [`SSH_TUNNELING`](https://github.com/apache/superset/blob/eb8386e3f0647df6d1bbde8b42073850796cc16f/superset/config.py#L489) to `True`
- If you want to add more security when establishing the tunnel we allow users to overwrite the `SSHTunnelManager` class [here](https://github.com/apache/superset/blob/eb8386e3f0647df6d1bbde8b42073850796cc16f/superset/config.py#L507)
- You can also set the [`SSH_TUNNEL_LOCAL_BIND_ADDRESS`](https://github.com/apache/superset/blob/eb8386e3f0647df6d1bbde8b42073850796cc16f/superset/config.py#L508) this the host address where the tunnel will be accessible on your VPC
2. Create database w/ ssh tunnel enabled
- With the feature flag enabled you should now see ssh tunnel toggle.
- Click the toggle to enables ssh tunneling and add your credentials accordingly.
- Superset allows for 2 different type authentication (Basic + Private Key). These credentials should come from your service provider.
3. Verify data is flowing
- Once SSH tunneling has been enabled, go to SQL Lab and write a query to verify data is properly flowing.

View File

@@ -5,9 +5,9 @@ sidebar_position: 5
version: 1
---
## SQL Templating
# SQL Templating
### Jinja Templates
## Jinja Templates
SQL Lab and Explore supports [Jinja templating](https://jinja.palletsprojects.com/en/2.11.x/) in queries.
To enable templating, the `ENABLE_TEMPLATE_PROCESSING` [feature flag](/docs/configuration/configuring-superset#feature-flags) needs to be enabled in
@@ -168,7 +168,7 @@ FEATURE_FLAGS = {
The available validators and names can be found in
[sql_validators](https://github.com/apache/superset/tree/master/superset/sql_validators).
### Available Macros
## Available Macros
In this section, we'll walkthrough the pre-defined Jinja macros in Superset.

View File

@@ -5,7 +5,7 @@ sidebar_position: 6
version: 1
---
## Timezones
# Timezones
There are four distinct timezone components which relate to Apache Superset,
@@ -20,7 +20,7 @@ To help make the problem somewhat tractable—given that Apache Superset has no
To strive for data consistency (regardless of the timezone of the client) the Apache Superset backend tries to ensure that any timestamp sent to the client has an explicit (or semi-explicit as in the case with [Epoch time](https://en.wikipedia.org/wiki/Unix_time) which is always in reference to UTC) timezone encoded within.
The challenge however lies with the slew of [database engines](/docs/databases/installing-database-drivers#install-database-drivers) which Apache Superset supports and various inconsistencies between their [Python Database API (DB-API)](https://www.python.org/dev/peps/pep-0249/) implementations combined with the fact that we use [Pandas](https://pandas.pydata.org/) to read SQL into a DataFrame prior to serializing to JSON. Regrettably Pandas ignores the DB-API [type_code](https://www.python.org/dev/peps/pep-0249/#type-objects) relying by default on the underlying Python type returned by the DB-API. Currently only a subset of the supported database engines work correctly with Pandas, i.e., ensuring timestamps without an explicit timestamp are serializd to JSON with the server timezone, thus guaranteeing the client will display timestamps in a consistent manner irrespective of the client's timezone.
The challenge however lies with the slew of [database engines](/docs/configuration/databases#installing-drivers-in-docker-images) which Apache Superset supports and various inconsistencies between their [Python Database API (DB-API)](https://www.python.org/dev/peps/pep-0249/) implementations combined with the fact that we use [Pandas](https://pandas.pydata.org/) to read SQL into a DataFrame prior to serializing to JSON. Regrettably Pandas ignores the DB-API [type_code](https://www.python.org/dev/peps/pep-0249/#type-objects) relying by default on the underlying Python type returned by the DB-API. Currently only a subset of the supported database engines work correctly with Pandas, i.e., ensuring timestamps without an explicit timestamp are serializd to JSON with the server timezone, thus guaranteeing the client will display timestamps in a consistent manner irrespective of the client's timezone.
For example the following is a comparison of MySQL and Presto,

View File

@@ -79,7 +79,7 @@ Look through the GitHub issues. Issues tagged with
Superset could always use better documentation,
whether as part of the official Superset docs,
in docstrings, `docs/*.rst` or even on the web as blog posts or
articles. See [Documentation](#documentation) for more details.
articles. See [Documentation](/docs/contributing/howtos#contributing-to-documentation) for more details.
### Add Translations
@@ -88,7 +88,7 @@ text strings from Superset's UI. You can jump into the existing
language dictionaries at
`superset/translations/<language_code>/LC_MESSAGES/messages.po`, or
even create a dictionary for a new language altogether.
See [Translating](#translating) for more details.
See [Translating](howtos#contribute-translations) for more details.
### Ask Questions

View File

@@ -3,7 +3,7 @@ title: Setting up a Development Environment
sidebar_position: 3
version: 1
---
# Setting up a Development Envrionment
# Setting up a Development Environment
The documentation in this section is a bit of a patchwork of knowledge representing the
multitude of ways that exist to run Superset (`docker-compose`, just "docker", on "metal", using
@@ -40,13 +40,13 @@ Note that:
- A Superset **Celery worker**, also mounting the local python repo/code
- A Superset **Node service**, mounting, compiling and bundling the JS/TS assets
- A Superset **Node websocket service** to power the async backend
- **Postgres** as the metadata database and to store example datasets, charts and dashboards whic
- **Postgres** as the metadata database and to store example datasets, charts and dashboards which
should be populated upon startup
- **Redis** as the message queue for our async backend and caching backend
- It'll load up examples into the database upon first startup
- all other details and pointers available in
[docker-compose.yml](https://github.com/apache/superset/blob/master/docker-compose.yml)
- The local repository is mounted withing the services, meaning updating
- The local repository is mounted within the services, meaning updating
the code on the host will be reflected in the docker images
- Superset is served at localhost:8088/
- You can login with admin/admin
@@ -231,7 +231,7 @@ We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage your node envi
```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
incase it shows '-bash: nvm: command not found'
in case it shows '-bash: nvm: command not found'
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
@@ -261,7 +261,7 @@ cd superset-frontend
npm ci
```
Note that Superset uses [Scarf](https://docs.scarf.sh) to capture telemetry/analytics about versions being installed, including the `scarf-js` npm package and an analytics pixel. As noted elsewhere in this documentation, Scarf gathers aggregated stats for the sake of security/release strategy, and does not capture/retain PII. [You can read here](https://docs.scarf.sh/package-analytics/) about the `scarf-js` package, and various means to opt out of it, but you can opt out of the npm package _and_ the pixel by setting the `SCARF_ANALYTICS` envinronment variable to `false` or opt out of the pixel by adding this setting in `superset-frontent/package.json`:
Note that Superset uses [Scarf](https://docs.scarf.sh) to capture telemetry/analytics about versions being installed, including the `scarf-js` npm package and an analytics pixel. As noted elsewhere in this documentation, Scarf gathers aggregated stats for the sake of security/release strategy, and does not capture/retain PII. [You can read here](https://docs.scarf.sh/package-analytics/) about the `scarf-js` package, and various means to opt out of it, but you can opt out of the npm package _and_ the pixel by setting the `SCARF_ANALYTICS` environment variable to `false` or opt out of the pixel by adding this setting in `superset-frontent/package.json`:
```json
// your-package/package.json
@@ -737,97 +737,6 @@ npm run storybook
When contributing new React components to Superset, please try to add a Story alongside the component's `jsx/tsx` file.
## Translating
We use [Flask-Babel](https://python-babel.github.io/flask-babel/) to translate Superset.
In Python files, we import the magic `_` function using:
```python
from flask_babel import lazy_gettext as _
```
then wrap our translatable strings with it, e.g. `_('Translate me')`.
During extraction, string literals passed to `_` will be added to the
generated `.po` file for each language for later translation.
At runtime, the `_` function will return the translation of the given
string for the current language, or the given string itself
if no translation is available.
In TypeScript/JavaScript, the technique is similar:
we import `t` (simple translation), `tn` (translation containing a number).
```javascript
import { t, tn } from "@superset-ui/translation";
```
### Enabling language selection
Add the `LANGUAGES` variable to your `superset_config.py`. Having more than one
option inside will add a language selection dropdown to the UI on the right side
of the navigation bar.
```python
LANGUAGES = {
'en': {'flag': 'us', 'name': 'English'},
'fr': {'flag': 'fr', 'name': 'French'},
'zh': {'flag': 'cn', 'name': 'Chinese'},
}
```
### Updating language files
```bash
./scripts/babel_update.sh
```
This script will
1. update the template file `superset/translations/messages.pot` with current application strings.
2. update language files with the new extracted strings.
You can then translate the strings gathered in files located under
`superset/translation`, where there's one per language. You can use [Poedit](https://poedit.net/features)
to translate the `po` file more conveniently.
There are some [tutorials in the wiki](https://wiki.lxde.org/en/Translate_*.po_files_with_Poedit).
In the case of JS translation, we need to convert the PO file into a JSON file, and we need the global download of the npm package po2json.
```bash
npm install -g po2json
```
To convert all PO files to formatted JSON files you can use the `po2json.sh` script.
```bash
./scripts/po2json.sh
```
If you get errors running `po2json`, you might be running the Ubuntu package with the same
name, rather than the Node.js package (they have a different format for the arguments). If
there is a conflict, you may need to update your `PATH` environment variable or fully qualify
the executable path (e.g. `/usr/local/bin/po2json` instead of `po2json`).
If you get a lot of `[null,***]` in `messages.json`, just delete all the `null,`.
For example, `"year":["年"]` is correct while `"year":[null,"年"]`is incorrect.
For the translations to take effect we need to compile translation catalogs into binary MO files.
```bash
pybabel compile -d superset/translations
```
### Creating a new language dictionary
To create a dictionary for a new language, run the following, where `LANGUAGE_CODE` is replaced with
the language code for your target language, e.g. `es` (see [Flask AppBuilder i18n documentation](https://flask-appbuilder.readthedocs.io/en/latest/i18n.html) for more details):
```bash
pip install -r superset/translations/requirements.txt
pybabel init -i superset/translations/messages.pot -d superset/translations -l LANGUAGE_CODE
```
Then, [Updating language files](#updating-language-files).
## Tips
### Adding a new datasource
@@ -860,7 +769,7 @@ To contribute a plugin to Superset, your plugin must meet the following criteria
- The plugin should be written with TypeScript
- The plugin should contain sufficient unit/e2e tests
- The plugin should use appropriate namespacing, e.g. a folder name of `plugin-chart-whatever` and a package name of `@superset-ui/plugin-chart-whatever`
- The plugin should use them variables via Emotion, as passed in by the ThemeProvider
- The plugin should use theme variables via Emotion, as passed in by the ThemeProvider
- The plugin should provide adequate error handling (no data returned, malformed data, invalid controls, etc.)
- The plugin should contain documentation in the form of a populated `README.md` file
- The plugin should have a meaningful and unique icon

View File

@@ -57,7 +57,7 @@ Finally, never submit a PR that will put master branch in broken state. If the P
in `requirements.txt` pinned to a specific version which ensures that the application
build is deterministic.
- For TypeScript/JavaScript, include new libraries in `package.json`
- **Tests:** The pull request should include tests, either as doctests, unit tests, or both. Make sure to resolve all errors and test failures. See [Testing](#testing) for how to run tests.
- **Tests:** The pull request should include tests, either as doctests, unit tests, or both. Make sure to resolve all errors and test failures. See [Testing](/docs/contributing/howtos#testing) for how to run tests.
- **Documentation:** If the pull request adds functionality, the docs should be updated as part of the same PR.
- **CI:** Reviewers will not review the code until all CI tests are passed. Sometimes there can be flaky tests. You can close and open PR to re-run CI test. Please report if the issue persists. After the CI fix has been deployed to `master`, please rebase your PR.
- **Code coverage:** Please ensure that code coverage does not decrease.

View File

@@ -459,7 +459,7 @@ npm run storybook
When contributing new React components to Superset, please try to add a Story alongside the component's `jsx/tsx` file.
## Contribute Translations
## Contributing Translations
We use [Flask-Babel](https://python-babel.github.io/flask-babel/) to translate Superset.
In Python files, we use the following
@@ -538,18 +538,17 @@ pybabel init -i superset/translations/messages.pot -d superset/translations -l f
### Extracting new strings for translation
This step needs to be done every time application strings change. This happens fairly
frequently, so if you want to ensure that your translation has good coverage, this
step needs to be run fairly frequently and the updated strings merged to the upstream
codebase via PRs. To update the template file `superset/translations/messages.pot`
with current application strings, run the following command:
Periodically, when working on translations, we need to extract the strings from both the
backend and the frontend to compile a list of all strings to be translated. It doesn't
happen automatically and is a required step to gather the strings and get them into the
`.po` files where they can be translated, so that they can then be compiled.
This script does just that:
```bash
pybabel extract -F superset/translations/babel.cfg -o superset/translations/messages.pot -k _ -k __ -k t -k tn -k tct .
./scripts/translations/babel_update.sh
```
Do not forget to update this file with the appropriate license information.
### Updating language files
Run the following command to update the language files with the new extracted strings.
@@ -575,27 +574,15 @@ case of the Finnish translation, this would be `superset/translations/fi/LC_MESS
### Applying translations
To make the translations available on the frontend, we need to convert the PO file into
a JSON file. To do this, we need to globally install the npm package `po2json`.
a collection of JSON files. To convert all PO files to formatted JSON files you can use
the build-translation script
```bash
npm install -g po2json
npm run build-translation
```
To convert all PO files to formatted JSON files you can use the `po2json.sh` script.
```bash
./scripts/po2json.sh
```
If you get errors running `po2json`, you might be running the Ubuntu package with the same
name, rather than the Node.js package (they have a different format for the arguments). If
there is a conflict, you may need to update your `PATH` environment variable or fully qualify
the executable path (e.g. `/usr/local/bin/po2json` instead of `po2json`).
If you get a lot of `[null,***]` in `messages.json`, just delete all the `null,`.
For example, `"year":["年"]` is correct while `"year":[null,"年"]`is incorrect.
Finally, for the translations to take effect we need to compile translation catalogs into
binary MO files.
binary MO files for the backend using pybabel.
```bash
pybabel compile -d superset/translations

View File

@@ -1,16 +0,0 @@
---
title: Ascend.io
hide_title: true
sidebar_position: 10
version: 1
---
## Ascend.io
The recommended connector library to Ascend.io is [impyla](https://github.com/cloudera/impyla).
The expected connection string is formatted as follows:
```
ascend://{username}:{password}@{hostname}:{port}/{database}?auth_mechanism=PLAIN;use_ssl=true
```

View File

@@ -1,39 +0,0 @@
---
title: Amazon Athena
hide_title: true
sidebar_position: 4
version: 1
---
## AWS Athena
### PyAthenaJDBC
[PyAthenaJDBC](https://pypi.org/project/PyAthenaJDBC/) is a Python DB 2.0 compliant wrapper for the
[Amazon Athena JDBC driver](https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html).
The connection string for Amazon Athena is as follows:
```
awsathena+jdbc://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...
```
Note that you'll need to escape & encode when forming the connection string like so:
```
s3://... -> s3%3A//...
```
### PyAthena
You can also use the [PyAthena library](https://pypi.org/project/PyAthena/) (no Java required) with the
following connection string:
```
awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...
```
The PyAthena library also allows to assume a specific IAM role which you can define by adding following parameters in Superset's Athena database connection UI under ADVANCED --> Other --> ENGINE PARAMETERS.
```
{"connect_args":{"role_arn":"<role arn>"}}
```

View File

@@ -1,92 +0,0 @@
---
title: Google BigQuery
hide_title: true
sidebar_position: 20
version: 1
---
## Google BigQuery
The recommended connector library for BigQuery is
[sqlalchemy-bigquery](https://github.com/googleapis/python-bigquery-sqlalchemy).
### Install BigQuery Driver
Follow the steps [here](/docs/databases/docker-add-drivers) about how to
install new database drivers when setting up Superset locally via docker compose.
```
echo "sqlalchemy-bigquery" >> ./docker/requirements-local.txt
```
### Connecting to BigQuery
When adding a new BigQuery connection in Superset, you'll need to add the GCP Service Account
credentials file (as a JSON).
1. Create your Service Account via the Google Cloud Platform control panel, provide it access to the
appropriate BigQuery datasets, and download the JSON configuration file for the service account.
2. In Superset, you can either upload that JSON or add the JSON blob in the following format (this should be the content of your credential JSON file):
```
{
"type": "service_account",
"project_id": "...",
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"auth_uri": "...",
"token_uri": "...",
"auth_provider_x509_cert_url": "...",
"client_x509_cert_url": "..."
}
```
![CleanShot 2021-10-22 at 04 18 11](https://user-images.githubusercontent.com/52086618/138352958-a18ef9cb-8880-4ef1-88c1-452a9f1b8105.gif)
3. Additionally, can connect via SQLAlchemy URI instead
The connection string for BigQuery looks like:
```
bigquery://{project_id}
```
Go to the **Advanced** tab, Add a JSON blob to the **Secure Extra** field in the database configuration form with
the following format:
```
{
"credentials_info": <contents of credentials JSON file>
}
```
The resulting file should have this structure:
```
{
"credentials_info": {
"type": "service_account",
"project_id": "...",
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"auth_uri": "...",
"token_uri": "...",
"auth_provider_x509_cert_url": "...",
"client_x509_cert_url": "..."
}
}
```
You should then be able to connect to your BigQuery datasets.
![CleanShot 2021-10-22 at 04 47 08](https://user-images.githubusercontent.com/52086618/138354340-df57f477-d3e5-42d4-b032-d901c69d2213.gif)
To be able to upload CSV or Excel files to BigQuery in Superset, you'll need to also add the
[pandas_gbq](https://github.com/pydata/pandas-gbq) library.
Currently, Google BigQuery python sdk is not compatible with `gevent`, due to some dynamic monkeypatching on python core library by `gevent`.
So, when you deploy Superset with `gunicorn` server, you have to use worker type except `gevent`.

View File

@@ -1,42 +0,0 @@
---
title: ClickHouse
hide_title: true
sidebar_position: 15
version: 1
---
## ClickHouse
To use ClickHouse with Superset, you will need to add the following Python library:
```
clickhouse-connect>=0.6.8
```
If running Superset using Docker Compose, add the following to your `./docker/requirements-local.txt` file:
```
clickhouse-connect>=0.6.8
```
The recommended connector library for ClickHouse is
[clickhouse-connect](https://github.com/ClickHouse/clickhouse-connect).
The expected connection string is formatted as follows:
```
clickhousedb://<user>:<password>@<host>:<port>/<database>[?options…]clickhouse://{username}:{password}@{hostname}:{port}/{database}
```
Here's a concrete example of a real connection string:
```
clickhousedb://demo:demo@github.demo.trial.altinity.cloud/default?secure=true
```
If you're using Clickhouse locally on your computer, you can get away with using a http protocol URL that
uses the default user without a password (and doesn't encrypt the connection):
```
clickhousedb://localhost/default
```

View File

@@ -1,17 +0,0 @@
---
title: CockroachDB
hide_title: true
sidebar_position: 16
version: 1
---
## CockroachDB
The recommended connector library for CockroachDB is
[sqlalchemy-cockroachdb](https://github.com/cockroachdb/sqlalchemy-cockroachdb).
The expected connection string is formatted as follows:
```
cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable
```

View File

@@ -1,24 +0,0 @@
---
title: CrateDB
hide_title: true
sidebar_position: 36
version: 1
---
## CrateDB
The recommended connector library for CrateDB is
[crate](https://pypi.org/project/crate/).
You need to install the extras as well for this library.
We recommend adding something like the following
text to your requirements file:
```
crate[sqlalchemy]==0.26.0
```
The expected connection string is formatted as follows:
```
crate://crate@127.0.0.1:4200
```

View File

@@ -1,23 +0,0 @@
---
title: Databend
hide_title: true
sidebar_position: 39
version: 1
---
## Databend
The recommended connector library for Databend is [databend-sqlalchemy](https://pypi.org/project/databend-sqlalchemy/).
Superset has been tested on `databend-sqlalchemy>=0.2.3`.
The recommended connection string is:
```
databend://{username}:{password}@{host}:{port}/{database_name}
```
Here's a connection string example of Superset connecting to a Databend database:
```
databend://user:password@localhost:8000/default?secure=false
```

View File

@@ -1,89 +0,0 @@
---
title: Databricks
hide_title: true
sidebar_position: 37
version: 1
---
## Databricks
Databricks now offer a native DB API 2.0 driver, `databricks-sql-connector`, that can be used with the `sqlalchemy-databricks` dialect. You can install both with:
```bash
pip install "apache-superset[databricks]"
```
To use the Hive connector you need the following information from your cluster:
- Server hostname
- Port
- HTTP path
These can be found under "Configuration" -> "Advanced Options" -> "JDBC/ODBC".
You also need an access token from "Settings" -> "User Settings" -> "Access Tokens".
Once you have all this information, add a database of type "Databricks Native Connector" and use the following SQLAlchemy URI:
```
databricks+connector://token:{access_token}@{server_hostname}:{port}/{database_name}
```
You also need to add the following configuration to "Other" -> "Engine Parameters", with your HTTP path:
```json
{
"connect_args": {"http_path": "sql/protocolv1/o/****"}
}
```
## Older driver
Originally Superset used `databricks-dbapi` to connect to Databricks. You might want to try it if you're having problems with the official Databricks connector:
```bash
pip install "databricks-dbapi[sqlalchemy]"
```
There are two ways to connect to Databricks when using `databricks-dbapi`: using a Hive connector or an ODBC connector. Both ways work similarly, but only ODBC can be used to connect to [SQL endpoints](https://docs.databricks.com/sql/admin/sql-endpoints.html).
### Hive
To connect to a Hive cluster add a database of type "Databricks Interactive Cluster" in Superset, and use the following SQLAlchemy URI:
```
databricks+pyhive://token:{access_token}@{server_hostname}:{port}/{database_name}
```
You also need to add the following configuration to "Other" -> "Engine Parameters", with your HTTP path:
```json
{"connect_args": {"http_path": "sql/protocolv1/o/****"}}
```
### ODBC
For ODBC you first need to install the [ODBC drivers for your platform](https://databricks.com/spark/odbc-drivers-download).
For a regular connection use this as the SQLAlchemy URI after selecting either "Databricks Interactive Cluster" or "Databricks SQL Endpoint" for the database, depending on your use case:
```
databricks+pyodbc://token:{access_token}@{server_hostname}:{port}/{database_name}
```
And for the connection arguments:
```json
{"connect_args": {"http_path": "sql/protocolv1/o/****", "driver_path": "/path/to/odbc/driver"}}
```
The driver path should be:
- `/Library/simba/spark/lib/libsparkodbc_sbu.dylib` (Mac OS)
- `/opt/simba/spark/lib/64/libsparkodbc_sb64.so` (Linux)
For a connection to a SQL endpoint you need to use the HTTP path from the endpoint:
```json
{"connect_args": {"http_path": "/sql/1.0/endpoints/****", "driver_path": "/path/to/odbc/driver"}}
```

View File

@@ -1,76 +0,0 @@
---
title: Using Database Connection UI
hide_title: true
sidebar_position: 3
version: 1
---
Here is the documentation on how to leverage the new DB Connection UI. This will provide admins the ability to enhance the UX for users who want to connect to new databases.
![db-conn-docs](https://user-images.githubusercontent.com/27827808/125499607-94e300aa-1c0f-4c60-b199-3f9de41060a3.gif)
There are now 3 steps when connecting to a database in the new UI:
Step 1: First the admin must inform superset what engine they want to connect to. This page is powered by the `/available` endpoint which pulls on the engines currently installed in your environment, so that only supported databases are shown.
Step 2: Next, the admin is prompted to enter database specific parameters. Depending on whether there is a dynamic form available for that specific engine, the admin will either see the new custom form or the legacy SQLAlchemy form. We currently have built dynamic forms for (Redshift, MySQL, Postgres, and BigQuery). The new form prompts the user for the parameters needed to connect (for example, username, password, host, port, etc.) and provides immediate feedback on errors.
Step 3: Finally, once the admin has connected to their DB using the dynamic form they have the opportunity to update any optional advanced settings.
We hope this feature will help eliminate a huge bottleneck for users to get into the application and start crafting datasets.
### How to setup up preferred database options and images
We added a new configuration option where the admin can define their preferred databases, in order:
```python
# A list of preferred databases, in order. These databases will be
# displayed prominently in the "Add Database" dialog. You should
# use the "engine_name" attribute of the corresponding DB engine spec
# in `superset/db_engine_specs/`.
PREFERRED_DATABASES: list[str] = [
"PostgreSQL",
"Presto",
"MySQL",
"SQLite",
]
```
For copyright reasons the logos for each database are not distributed with Superset.
### Setting images
- To set the images of your preferred database, admins must create a mapping in the `superset_text.yml` file with engine and location of the image. The image can be host locally inside your static/file directory or online (e.g. S3)
```python
DB_IMAGES:
postgresql: "path/to/image/postgres.jpg"
bigquery: "path/to/s3bucket/bigquery.jpg"
snowflake: "path/to/image/snowflake.jpg"
```
### How to add new database engines to available endpoint
Currently the new modal supports the following databases:
- Postgres
- Redshift
- MySQL
- BigQuery
When the user selects a database not in this list they will see the old dialog asking for the SQLAlchemy URI. New databases can be added gradually to the new flow. In order to support the rich configuration a DB engine spec needs to have the following attributes:
1. `parameters_schema`: a Marshmallow schema defining the parameters needed to configure the database. For Postgres this includes username, password, host, port, etc. ([see](https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1309-L1320)).
2. `default_driver`: the name of the recommended driver for the DB engine spec. Many SQLAlchemy dialects support multiple drivers, but usually one is the official recommendation. For Postgres we use "psycopg2".
3. `sqlalchemy_uri_placeholder`: a string that helps the user in case they want to type the URI directly.
4. `encryption_parameters`: parameters used to build the URI when the user opts for an encrypted connection. For Postgres this is `{"sslmode": "require"}`.
In addition, the DB engine spec must implement these class methods:
- `build_sqlalchemy_uri(cls, parameters, encrypted_extra)`: this method receives the distinct parameters and builds the URI from them.
- `get_parameters_from_uri(cls, uri, encrypted_extra)`: this method does the opposite, extracting the parameters from a given URI.
- `validate_parameters(cls, parameters)`: this method is used for `onBlur` validation of the form. It should return a list of `SupersetError` indicating which parameters are missing, and which parameters are definitely incorrect ([example](https://github.com/apache/superset/blob/accee507c0819cd0d7bcfb5a3e1199bc81eeebf2/superset/db_engine_specs/base.py#L1404)).
For databases like MySQL and Postgres that use the standard format of `engine+driver://user:password@host:port/dbname` all you need to do is add the `BasicParametersMixin` to the DB engine spec, and then define the parameters 2-4 (`parameters_schema` is already present in the mixin).
For other databases you need to implement these methods yourself. The BigQuery DB engine spec is a good example of how to do that.

View File

@@ -1,63 +0,0 @@
---
title: Adding New Drivers in Docker
hide_title: true
sidebar_position: 2
version: 1
---
## Adding New Database Drivers in Docker
Superset requires a Python database driver to be installed for each additional type of database you want to connect to.
In this example, we'll walk through how to install the MySQL connector library. The connector library installation process is the same for all additional libraries.
### 1. Determine the driver you need
Consult the [list of database drivers](/docs/databases/installing-database-drivers) and find the PyPI package needed to connect to your database. In this example, we're connecting to a MySQL database, so we'll need the `mysqlclient` connector library.
### 2. Install the driver in the container
We need to get the `mysqlclient` library installed into the Superset docker container (it doesn't matter if it's installed on the host machine). We could enter the running container with `docker exec -it <container_name> bash` and run `pip install mysqlclient` there, but that wouldn't persist permanently.
To address this, the Superset `docker compose` deployment uses the convention of a `requirements-local.txt` file. All packages listed in this file will be installed into the container from PyPI at runtime. This file will be ignored by Git for the purposes of local development.
Create the file `requirements-local.txt` in a subdirectory called `docker` that exists in the directory with your `docker-compose.yml` or `docker-compose-non-dev.yml` file.
```
# Run from the repo root:
touch ./docker/requirements-local.txt
```
Add the driver identified in step above. You can use a text editor or do it from the command line like:
```
echo "mysqlclient" >> ./docker/requirements-local.txt
```
**If you are running a stock (non-customized) Superset image**, you are done. Launch Superset with `docker compose -f docker-compose-non-dev.yml up` and the driver should be present.
You can check its presence by entering the running container with `docker exec -it <container_name> bash` and running `pip freeze`. The PyPI package should be present in the printed list.
**If you're running a customized docker image**, rebuild your local image with the new driver baked in:
```
docker compose build --force-rm
```
After the rebuild of the Docker images is complete, relaunch Superset by running `docker compose up`.
### 3. Connect to MySQL
Now that you've got a MySQL driver installed in your container, you should be able to connect to your database via the Superset web UI.
As an admin user, go to Settings -> Data: Database Connections and click the +DATABASE button. From there, follow the steps on the [Using Database Connection UI page](/docs/databases/db-connection-ui).
Consult the page for your specific database type in the Superset documentation to determine the connection string and any other parameters you need to input. For instance, on the [MySQL page](/docs/databases/mysql), we see that the connection string to a local MySQL database differs depending on whether the setup is running on Linux or Mac.
Click the “Test Connection” button, which should result in a popup message saying, "Connection looks good!".
### 4. Troubleshooting
If the test fails, review your docker logs for error messages. Superset uses SQLAlchemy to connect to databases; to troubleshoot the connection string for your database, you might start Python in the Superset application container or host environment and try to connect directly to the desired database and fetch data. This eliminates Superset for the purposes of isolating the problem.
Repeat this process for each different type of database you want Superset to be able to connect to.

View File

@@ -1,26 +0,0 @@
---
title: Apache Doris
hide_title: true
sidebar_position: 5
version: 1
---
## Doris
The [sqlalchemy-doris](https://pypi.org/project/pydoris/) library is the recommended way to connect to Apache Doris through SQLAlchemy.
You'll need the following setting values to form the connection string:
- **User**: User Name
- **Password**: Password
- **Host**: Doris FE Host
- **Port**: Doris FE port
- **Catalog**: Catalog Name
- **Database**: Database Name
Here's what the connection string looks like:
```
doris://<User>:<Password>@<Host>:<Port>/<Catalog>.<Database>
```

View File

@@ -1,26 +0,0 @@
---
title: Dremio
hide_title: true
sidebar_position: 17
version: 1
---
## Dremio
The recommended connector library for Dremio is
[sqlalchemy_dremio](https://pypi.org/project/sqlalchemy-dremio/).
The expected connection string for ODBC (Default port is 31010) is formatted as follows:
```
dremio://{username}:{password}@{host}:{port}/{database_name}/dremio?SSL=1
```
The expected connection string for Arrow Flight (Dremio 4.9.1+. Default port is 32010) is formatted as follows:
```
dremio+flight://{username}:{password}@{host}:{port}/dremio
```
This [blog post by Dremio](https://www.dremio.com/tutorials/dremio-apache-superset/) has some
additional helpful instructions on connecting Superset to Dremio.

View File

@@ -1,47 +0,0 @@
---
title: Apache Drill
hide_title: true
sidebar_position: 6
version: 1
---
## Apache Drill
### SQLAlchemy
The recommended way to connect to Apache Drill is through SQLAlchemy. You can use the
[sqlalchemy-drill](https://github.com/JohnOmernik/sqlalchemy-drill) package.
Once that is done, you can connect to Drill in two ways, either via the REST interface or by JDBC.
If you are connecting via JDBC, you must have the Drill JDBC Driver installed.
The basic connection string for Drill looks like this:
```
drill+sadrill://<username>:<password>@<host>:<port>/<storage_plugin>?use_ssl=True
```
To connect to Drill running on a local machine running in embedded mode you can use the following
connection string:
```
drill+sadrill://localhost:8047/dfs?use_ssl=False
```
### JDBC
Connecting to Drill through JDBC is more complicated and we recommend following
[this tutorial](https://drill.apache.org/docs/using-the-jdbc-driver/).
The connection string looks like:
```
drill+jdbc://<username>:<password>@<host>:<port>
```
### ODBC
We recommend reading the
[Apache Drill documentation](https://drill.apache.org/docs/installing-the-driver-on-linux/) and read
the [GitHub README](https://github.com/JohnOmernik/sqlalchemy-drill#usage-with-odbc) to learn how to
work with Drill through ODBC.

View File

@@ -1,71 +0,0 @@
---
title: Apache Druid
hide_title: true
sidebar_position: 7
version: 1
---
import useBaseUrl from "@docusaurus/useBaseUrl";
## Apache Druid
A native connector to Druid ships with Superset (behind the `DRUID_IS_ACTIVE` flag) but this is
slowly getting deprecated in favor of the SQLAlchemy / DBAPI connector made available in the
[pydruid library](https://pythonhosted.org/pydruid/).
The connection string looks like:
```
druid://<User>:<password>@<Host>:<Port-default-9088>/druid/v2/sql
```
Here's a breakdown of the key components of this connection string:
- `User`: username portion of the credentials needed to connect to your database
- `Password`: password portion of the credentials needed to connect to your database
- `Host`: IP address (or URL) of the host machine that's running your database
- `Port`: specific port that's exposed on your host machine where your database is running
### Customizing Druid Connection
When adding a connection to Druid, you can customize the connection a few different ways in the
**Add Database** form.
**Custom Certificate**
You can add certificates in the **Root Certificate** field when configuring the new database
connection to Druid:
<img src={useBaseUrl("/img/root-cert-example.png")} />{" "}
When using a custom certificate, pydruid will automatically use https scheme.
**Disable SSL Verification**
To disable SSL verification, add the following to the **Extras** field:
```
engine_params:
{"connect_args":
{"scheme": "https", "ssl_verify_cert": false}}
```
### Aggregations
Common aggregations or Druid metrics can be defined and used in Superset. The first and simpler use
case is to use the checkbox matrix exposed in your datasources edit view (**Sources -> Druid
Datasources -> [your datasource] -> Edit -> [tab] List Druid Column**).
Clicking the GroupBy and Filterable checkboxes will make the column appear in the related dropdowns
while in the Explore view. Checking Count Distinct, Min, Max or Sum will result in creating new
metrics that will appear in the **List Druid Metric** tab upon saving the datasource.
By editing these metrics, youll notice that their JSON element corresponds to Druid aggregation
definition. You can create your own aggregations manually from the **List Druid Metric** tab
following Druid documentation.
### Post-Aggregations
Druid supports post aggregation and this works in Superset. All you have to do is create a metric,
much like you would create an aggregation manually, but specify `postagg` as a `Metric Type`. You
then have to provide a valid json post-aggregation definition (as specified in the Druid docs) in
the JSON field.

Some files were not shown because too many files have changed in this diff Show More