superset常見問題

目錄

 

我可以一次查詢/聯接多個表嗎? 

我的數據源能有多大?

如何創建自己的可視化?

我可以上傳和可視化csv數據嗎?

爲什麼我的查詢超時了?

爲什麼地圖在地圖框可視化中不可見?

如何向儀表板添加動態篩選器?

如何限制儀表板上的定時刷新?

爲什麼“flask fab”或superset在啓動時凍結/掛起/沒有響應(我的主目錄是NFS掛載的)?

如果表架構更改了怎麼辦?

如何着手開發新的可視化類型?

什麼數據庫引擎可以用作Superset的後端?

如何配置OAuth身份驗證和授權?

如何在儀表板上設置默認篩選器?

如何讓Superset刷新表的架構?

有沒有辦法強制使用特定的顏色?

Wait_timeout默認時間短

使用pip3 install superset報錯

使用pip3 install superset報錯

運行yarn和yarn run build ,'xxx' 不是內部或外部命令,也不是可運行的程序或批處理文件。

在pycharm裏面在(pythonenv) D:\worker\idatafun\pythonenv\incubator-superset>目錄下面使用這個命令:python setup.py install會報錯。

Superset runserver -d -p 8088命名報錯

Superset登錄密碼忘記,或者根本沒有設置密碼,應該怎麼做?

No user created an error occured

python superset db upgrade或者superset db upgrade提示“不是內部或外部命令”

​​​​​​​修改數據庫爲mysql數據庫

​​​​​​​fabmanager create-admin --app superset創建新用戶報錯

我可以一次查詢/聯接多個表嗎? 
不是直接的否。Superset SQLAlchemy數據源只能是單個表或視圖。

使用表時,解決方案是具體化一個表,該表包含分析所需的所有字段,很可能是通過某個計劃的批處理過程實現的。

視圖是一個簡單的邏輯層,它將任意SQL查詢抽象爲一個虛擬表。這允許您聯接和聯合多個表,並使用任意SQL表達式應用某些轉換。由於Superset將有效地在查詢(視圖)的頂部運行查詢,因此存在數據庫性能的限制。一個好的實踐可能是限制自己將主大表連接到一個或多個小表,並儘可能避免使用GROUPBY,因爲Superset將自己執行GROUPBY,並且執行兩次該工作可能會降低性能。

無論您使用的是表還是視圖,重要的因素是您的數據庫是否足夠快,能夠以交互方式爲其提供服務,從而在Superset中提供良好的用戶體驗。

我的數據源能有多大?
它可以是巨大的!如上所述,主要條件是數據庫是否可以在用戶可以接受的時間範圍內執行查詢並返回結果。許多分佈式數據庫可以執行以交互方式掃描兆字節的查詢。

如何創建自己的可視化?
我們正計劃使向框架中添加新的可視化效果變得更容易,同時,我們還標記了一些pull請求作爲示例,以向人們提供如何提供新的可視化效果的示例。https://github.com/airbnb/superset/issues?q=label%3Aexample+is%3Aclosed

我可以上傳和可視化csv數據嗎?
是,使用“源”菜單項下的“上載CSV”按鈕。這將顯示一個允許您指定所需信息的表單。從CSV創建表之後,就可以像“源”->“表”頁面上的任何其他表一樣加載它。

爲什麼我的查詢超時了?
這裏有很多原因導致的超時。

對於運行來自Sql Lab的長查詢,默認情況下,Superset允許它在被celery殺死之前運行6小時。如果要增加運行查詢的時間,可以在配置中指定超時。例如:

SQLLAB_ASYNC_TIME_LIMIT_SEC = 60 * 60 * 6

Superset正在gunicorn web服務器上運行,該服務器可能會超時web請求。如果要增加默認值(50),可以使用-t標誌(以秒爲單位)指定啓動web服務器時的超時。

Superset runserver -t 300

如果在加載儀表板或explore slice時看到超時(504網關超時),則可能在網關或代理服務器(如Nginx)之後。如果沒有從Superset server(正在處理長查詢)收到及時的響應,這些web服務器將直接向客戶端發送504狀態代碼。Superset有一個客戶端超時限制來解決此問題。如果查詢未在客戶端超時(默認爲60秒)內返回,超級集將顯示警告消息以避免網關超時消息。如果網關超時限制較長,可以在superset_config.py中更改超時設置:

SUPERSET_WEBSERVER_TIMEOUT=60

爲什麼地圖在地圖框可視化中不可見?
您需要註冊到mapbox.com,獲取一個API密鑰,並在superset_config.py中將其配置爲mapbox_API_key。

如何向儀表板添加動態篩選器?
很簡單:使用Filter Box小部件,構建一個片段,並將其添加到儀表板中。

Filter Box小部件允許您定義一個查詢來填充可用於篩選的下拉列表。爲了構建不同值的列表,我們運行一個查詢,並按您提供的度量對結果進行排序,按降序排序。

該小部件還具有一個複選框Date Filter(日期過濾器),可以對儀表板啓用時間過濾功能。選中該框並刷新後,將顯示“from(從)”和“to(到)”下拉列表。

默認情況下,篩選將應用於構建在共享篩選所基於的列名的數據源之上的所有切片。還要求在表編輯器的column選項卡中將該列檢查爲“filterable”。

但是如果你不希望某些小部件在你的儀表板上被過濾呢?您可以通過編輯儀表板來實現這一點,在表單中,編輯JSON Metadata,更具體地說是filter_immune_slices鍵,它接收一個sliceid數組,該數組不應受到儀表板級篩選的影響。

{
    "filter_immune_slices": [324, 65, 92],
    "expanded_slices": {},
    "filter_immune_slice_fields": {
        "177": ["country_name", "__time_range"],
        "32": ["__time_range"]
    },
    "timed_refresh_immune_slices": [324]
}
在上面的json blob中,切片324、65和92不會受到任何儀表板級篩選的影響。

現在注意filter_immune_slice_fields鍵。這個選項允許您更具體地定義特定的切片id,應該忽略哪些篩選字段。

注意使用時間範圍關鍵字,該關鍵字保留用於處理上述時間邊界過濾。

但是,當處理來自不同表或數據庫的切片時,過濾會發生什麼情況?如果列名是共享的,那麼過濾器將被應用,就這麼簡單。

如何限制儀表板上的定時刷新?
默認情況下,儀表板定時刷新功能允許您根據設置的計劃自動重新查詢儀表板上的每個切片。但是,有時您不希望所有的切片都被刷新—特別是在某些數據移動緩慢或運行大量查詢的情況下。要從定時刷新過程中排除特定的切片,請將timed_refresh_immune_slices(定時刷新免疫切片)鍵添加到儀表板JSON Metadata字段:

{
   "filter_immune_slices": [],
    "expanded_slices": {},
    "filter_immune_slice_fields": {},
    "timed_refresh_immune_slices": [324]
}
在上面的例子中,如果爲儀表板設置了定時刷新,那麼除了324之外的每個切片都將按計劃自動重新查詢。

切片刷新也將在指定的時間段內交錯進行。您可以通過將stagger_refresh設置爲false來關閉此交錯,並通過將JSON Metadata字段中的stagger_time設置爲以毫秒爲單位的值來修改交錯週期:

{
    "stagger_refresh": false,
    "stagger_time": 2500
}
在這裏,如果啓用定期刷新,則整個儀表板將立即刷新。忽略2.5秒的交錯時間。

爲什麼“flask fab”或superset在啓動時凍結/掛起/沒有響應(我的主目錄是NFS掛載的)?
默認情況下,superset在~/.superset/superset.db創建並使用sqlite數據庫。衆所周知,如果在NFS上使用Sqlite,由於NFS上的文件鎖定實現被破壞,因此它不會很好地工作。

可以使用SUPERSET_HOME環境變量覆蓋此路徑。

另一種解決方法是通過在superset_config.py中添加SQLALCHEMY_database_URI='sqlite:///new/location/superset.db'(如果需要,創建文件),然後將superset_config.py所在的目錄添加到PYTHONPATH環境變量(例如export PYTHONPATH=/opt/logs/sandbox/airbnb/)來更改superset存儲sqlite數據庫的位置。

如果表架構更改了怎麼辦?
表模式不斷髮展,而Superset需要反映這一點。在儀表板的生命週期中,添加新維度或度量是很常見的。要讓Superset發現新列,只需轉到菜單->源->表,單擊架構已更改的表旁邊的編輯圖標,然後在“詳細信息”選項卡中單擊“保存”。在場景後面,新的列將被合併。隨後,您可能需要重新編輯表以配置列選項卡,選中相應的框並再次保存。

如何着手開發新的可視化類型?
下面是一個Github PR示例,其中包含描述代碼不同部分的註釋:https://Github.com/airbnb/superset/pull/3013

什麼數據庫引擎可以用作Superset的後端?
爲了說明這一點,數據庫後端是一個OLTP數據庫,Superset使用它來存儲內部信息,比如用戶列表、切片和儀表板定義。

Superset的後端使用Mysql、Postgresql和Sqlite進行測試。建議您在其中一個數據庫服務器上安裝Superset以用於生產。

使用列存儲,非OLTP數據庫(如Vertica、Redshift或Presto)作爲數據庫後端將無法工作,因爲這些數據庫不是爲這種類型的工作負載而設計的。在Oracle、Microsoft SQL Server或其他OLTP數據庫上安裝可能可以工作,但未經測試。

請注意,幾乎所有具有SqlAlchemy集成的數據庫都應該作爲Superset的數據源工作得非常好,而不是作爲OLTP後端。

如何配置OAuth身份驗證和授權?
您可以查看這個Flask AppBuilder配置示例。

https://github.com/dpgaspar/Flask-AppBuilder/blob/master/examples/oauth/config.py

如何在儀表板上設置默認篩選器?
容易的。只需在篩選器處於活動狀態時應用篩選器並保存儀表板。

如何讓Superset刷新表的架構?
向表中添加列時,可以使用“源->表”頁中的“Refresh Metadata(刷新元數據)”操作,讓父集檢測併合並新列。只需選中要刷新架構的表旁邊的複選框,然後單擊“操作”->“刷新元數據”。

有沒有辦法強制使用特定的顏色?
可以在每個儀表板上使用label_colors鍵在JSON元數據屬性中提供標籤到顏色的映射。

{
    "label_colors": {
        "Girls": "#FF69B4",
        "Boys": "#ADD8E6"
    }
}
Superset是否與[insert database engine here]一起工作?
隨着時間的推移,社區已經整理了一個數據庫列表,這些數據庫在文檔的數據庫依賴項部分中可以很好地使用Superset。此頁中未列出的數據庫引擎也可能工作。我們依靠社區爲這個知識庫做出貢獻。

要通過SQLAlchemy連接器在Superset中支持數據庫引擎,需要定義符合Python的SQLAlchemy方言和DBAPI驅動程序。對SQL支持有限的數據庫也可以工作。例如,即使Druid不支持連接和子查詢,也可以通過SQLAlchemy連接器連接到Druid。要支持的數據庫的另一個關鍵元素是通過Superset數據庫引擎規範接口。這個接口允許定義超出SQLAlchemy和DBAPI範圍的特定於數據庫的配置和邏輯。這包括以下功能:

與日期相關的SQL函數,允許Superset在運行時間序列查詢時獲取不同的時間粒度
引擎是否支持子查詢。如果爲false,則Superset可以運行兩階段查詢來補償限制
方法處理日誌並推斷查詢完成百分比
如果驅動程序不是標準DBAPI,如何處理遊標和連接的技術細節
更多,請閱讀代碼瞭解更多詳細信息
除了SQLAlchemy連接器之外,還可以擴展Superset並編寫自己的連接器,儘管涉及的內容要多得多。目前唯一的例子就是Druid連接器,它正在被Druid不斷增長的SQL支持以及最近DBAPI和SQLAlchemy驅動程序的可用性所取代。如果您正在考慮集成的數據庫有任何類型的SQL支持,那麼最好採用SQLAlchemy方法。注意,要使本機連接器成爲可能,數據庫需要支持運行OLAP類型查詢,並且應該能夠執行基本SQL中的典型操作:

聚合數據
應用篩選器(=!=,>,<,>=,<=,在,…)
應用具有類型篩選器
注意模式,公開列和類型
Wait_timeout默認時間短
(MySQLdb._exceptions.OperationalError) (2006, 'MySQL server has gone away') (Background on this error at: http://sqlalche.me/e/e3q8)

解:vim /etc/mysql/my.cnf  ,在[mysqld]下面添加wait_timeout = 108000解決問題,發生這個問題的原因是因爲數據包 過大導致上傳太久,默認等待時間是mysql> show global variables like '%timeout'; wait_timeout 是28800秒,所以會發生這個錯誤。

使用pip3 install superset報錯
Could not find a version that satisfies the requirement prison<1.0.0,>=0.1.2 (from flask-appbuilder<2.3.0,>=2.1.9->superset) (from versions: 0.1.0-, 0.1.0, 0.1.1)

No matching distribution found for prison<1.0.0,>=0.1.2 (from flask-appbuilder<2.3.0,>=2.1.9->superset)

解:這個是prison版本的問題,我因爲之前pip install superset不一樣的版本,所以導致這個問題,我是使用pip uninstall superset,把之前安裝在電腦上的superset刪除,再次運行就好了。如果還不行,那麼你就需要手動pip install prison --version。

使用pip3 install superset報錯
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": https://visualstudio.microsoft.com/downloads/

    ----------------------------------------

Command "d:\worker\software\python3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\19178\\AppData\\Local\\Temp\\pip-install-_ycx3cp5\\python-geohash\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\19178\AppData\Local\Temp\pip-record-vih_ejv4\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\19178\AppData\Local\Temp\pip-install-_ycx3cp5\python-geohash\

解:根據以上信息需要安裝Microsoft Visual C++ 14.0,安裝後之後也不用重啓,再次運行pip3 install superset即可成功

運行yarn和yarn run build ,'xxx' 不是內部或外部命令,也不是可運行的程序或批處理文件。
解: npm install yarn(可能會報錯) 或者 npm install -g yarn --registry=https://registry.npm.taobao.org //npm安裝yarn

yarn config set registry https://registry.npm.taobao.org -g //設置註冊地址

yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g

安裝好yarn之後,就可以運行yarn和yarn run build了。

在pycharm裏面在(pythonenv) D:\worker\idatafun\pythonenv\incubator-superset>目錄下面使用這個命令:python setup.py install會報錯。
VERSION: 0.999.0dev
GIT SHA: b6f31abcfea9d819082d21a21a895058688c2144
-==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-
Traceback (most recent call last):
  File "setup.py", line 57, in <module>
    with open(VERSION_INFO_FILE, "w") as version_file:
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\worker\\idatafun\\pythonenv\\incubator-superset\\superset\\static\\assets\\version_info.json' 
 
解:加上軟鏈接
mklink /J "D:\worker\idatafun\superset_dev\incubator-superset\superset\static\assets" "D:\worker\idatafun\superset_dev\incubator-superset\superset\assets"
記得換目錄
 

Superset runserver -d -p 8088命名報錯
解:Error:No such command “runserver”.在superset搭建最後一步報這個錯,執行superset  --help,沒有看到runserver,但是有一個run,superset run -p 8088成功。

Superset登錄密碼忘記,或者根本沒有設置密碼,應該怎麼做?
解:刪除該用戶下的superset.db數據庫文件,再次用命令fabmanager create-admin --app superset 創建用戶和密碼就可以了

​​​​​​​No user created an error occured
解:刪除superset.db ,默認安裝在當前用戶下.superset裏面,然後創建用戶成功

​​​​​​​python superset db upgrade或者superset db upgrade提示“不是內部或外部命令”
解:要解決這個問題,可以直接通過 cd 命令進入 Superset 安裝目錄( ...\superset\bin )。然後運行如下命令:

python superset db upgrade

​​​​​​​修改數據庫爲mysql數據庫
解:在config.py配置文件裏面SQLALCHEMY_DATABASE_URI =='mysql://root:111111@localhost:3306/superset_tommy?charset=UTF8'

​​​​​​​fabmanager create-admin --app superset創建新用戶報錯
報錯信息:Traceback (most recent call last):

  File "D:\worker\software\python3\lib\runpy.py", line 193, in _run_module_as_main

    "__main__", mod_spec)

  File "D:\worker\software\python3\lib\runpy.py", line 85, in _run_code

    exec(code, run_globals)

  File "D:\worker\idatafun\superset_dev\Scripts\fabmanager.exe\__main__.py", line 9, in <module>

  File "d:\worker\idatafun\superset_dev\lib\site-packages\flask_appbuilder\console.py", line 417, in cli

    cli_app()

  File "d:\worker\idatafun\superset_dev\lib\site-packages\click\core.py", line 722, in __call__

    return self.main(*args, **kwargs)

  File "d:\worker\idatafun\superset_dev\lib\site-packages\click\core.py", line 697, in main

    rv = self.invoke(ctx)

  File "d:\worker\idatafun\superset_dev\lib\site-packages\click\core.py", line 1066, in invoke

    return _process_result(sub_ctx.command.invoke(sub_ctx))

  File "d:\worker\idatafun\superset_dev\lib\site-packages\click\core.py", line 895, in invoke

    return ctx.invoke(self.callback, **ctx.params)

  File "d:\worker\idatafun\superset_dev\lib\site-packages\click\core.py", line 535, in invoke

解:由於我安裝的是最新版,創建用戶命令已經改成flask fab create-admin,就好使了,前提是已經pip install mysqlclient。


————————————————
版權聲明:本文爲CSDN博主「u010772882」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u010772882/article/details/103651039

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章