婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Superset實現(xiàn)動態(tài)SQL查詢功能

Superset實現(xiàn)動態(tài)SQL查詢功能

熱門標簽:電銷機器人 深圳 地圖標注如何弄全套標 南京電銷外呼系統(tǒng)哪家好 在電子版地圖標注要收費嗎 股票配資電銷機器人 外呼系統(tǒng)會封嗎 萬利達綜合醫(yī)院地圖標注點 實體店地圖標注怎么標 武漢AI電銷機器人

使用自定義參數(shù)方式實現(xiàn) superset 實現(xiàn)SQL動態(tài)查詢

1、啟用參數(shù):config.py 設置"ENABLE_TEMPLATE_PROCESSING": True

2、當前superset v1.2版本支持的參數(shù)包括:

{{ current_username() }}     當前登錄用戶名
{{ current_username(add_to_cache_keys=False) }}   不從緩存中獲取登錄用戶名,默認從緩存獲取
{{ current_user_id()}}    當前登錄用戶ID
{{ current_user_id(add_to_cache_keys=False) }}  不從緩存中獲取登錄用戶ID,默認從緩存獲取
{{ url_param('custom_variable') }} url 參數(shù),比如127.0.0.1:8001\dashboard?abc=123,參數(shù)就是{{ url_param('abc') }}  結果就是123
{{ cache_key_wrapper() }}   還沒有弄明白啥用
{{ filter_values("字段名") }}  獲取dashboard filter_box組件對某個字段的篩選結果
{{ from_dttm }}  獲取dashboard filter_box組件日期篩選的開始時間
{{ to_dttm }}   獲取dashboard filter_box組件日期篩選的結束時間
{{ get_filters() }}  暫時沒有弄明白

除此之外,還可以自定義參數(shù),自定義參數(shù)方法:

①修改superset/jinja_context.py文件,修改三個地方:

regex = re.compile(
        r"\{\{.*("
        r"current_user_id\(.*\)|"
        r"current_username\(.*\)|"
        r"current_userroles\(.*\)|"
        r"isadmin\(.*\)|"
        r"cache_key_wrapper\(.*\)|"
        r"url_param\(.*\)"
        r").*\}\}"
    )

↑↑↑↑注意此處的 current_userroles 和 isadmin 是我自定義的,源文件沒有

def current_user_id(self, add_to_cache_keys: bool = True) -> Optional[int]:
        """
        Return the user ID of the user who is currently logged in.

        :param add_to_cache_keys: Whether the value should be included in the cache key
        :returns: The user ID
        """

        if hasattr(g, "user") and g.user:
            if add_to_cache_keys:
                self.cache_key_wrapper(g.user.get_id())
            return g.user.get_id()
        return None

    def current_username(self, add_to_cache_keys: bool = True) -> Optional[str]:
        """
        Return the username of the user who is currently logged in.

        :param add_to_cache_keys: Whether the value should be included in the cache key
        :returns: The username
        """

        if g.user and hasattr(g.user, "username"):
            if add_to_cache_keys:
                self.cache_key_wrapper(g.user.username)
            return g.user.username
        return None
    def current_userroles(self, add_to_cache_keys: bool = True) -> Optional[str]:
        """
        Return the roles of the user who is currently logged in.

        :param add_to_cache_keys: Whether the value should be included in the cache key
        :returns: The userroles
        """

        if g.user and hasattr(g.user, "roles"):
            if add_to_cache_keys:
                user_roles = "/".join([role.name.lower() for role in list(g.user.roles)])
                self.cache_key_wrapper(user_roles)
                print(user_roles)
                return user_roles
                """admin in user_roles"""
        return None

    def isadmin(self, add_to_cache_keys: bool = True) -> Optional[str]:
        """
        Return the roles of the user who is currently logged in.

        :param add_to_cache_keys: Whether the value should be included in the cache key
        :returns: The userroles
        """

        if g.user and hasattr(g.user, "roles"):
            if add_to_cache_keys:
                user_roles = [role.name.lower() for role in list(g.user.roles)]
                return "admin" in user_roles
        return None

↑↑↑↑仿照系統(tǒng)自帶的 current_username 編造自己的函數(shù),我寫了current_userroles 和 isadmin

class JinjaTemplateProcessor(BaseTemplateProcessor):
    def set_context(self, **kwargs: Any) -> None:
        super().set_context(**kwargs)
        extra_cache = ExtraCache(self._extra_cache_keys)
        self._context.update(
            {
                "url_param": partial(safe_proxy, extra_cache.url_param),
                "current_user_id": partial(safe_proxy, extra_cache.current_user_id),
                "current_username": partial(safe_proxy, extra_cache.current_username),
                "current_userroles": partial(safe_proxy, extra_cache.current_userroles),
                "isadmin": partial(safe_proxy, extra_cache.isadmin),
                "cache_key_wrapper": partial(safe_proxy, extra_cache.cache_key_wrapper),
                "filter_values": partial(safe_proxy, filter_values),
            }
        )

↑↑↑↑仿照系統(tǒng)自帶的 current_username 編造自己的函數(shù),我寫了current_userroles 和 isadmin

就是這3個地方,但是注意,自己在第二步早的函數(shù),返回值必須是:

ALLOWED_TYPES = (
    NONE_TYPE,
    "bool",
    "str",
    "unicode",
    "int",
    "long",
    "float",
    "list",
    "dict",
    "tuple",
    "set",
)

否則會提示錯誤,或者自己修改這個types,我是轉換,比如上面那個g.user.roles 返回的結果就不是上面類型,導致我一直不成功,最后修改了下,才可以

3、判斷是否自定義成功:

在superset sql lab中執(zhí)行如下代碼,如果能被解析,就說明成功

4、應用案例:

 在dataset里面,動態(tài)訪問數(shù)據(jù)源,數(shù)據(jù)源添加where語句:select * from sales where salesname =' {{current_username()}}'

dashboard里面,通過獲取篩選器的結果,然后獲取其他表應當顯示的數(shù)據(jù)范圍:

select  DATE,risktype,sum(num) as num from
(SELECT date , customerid,product,risktype ,count(*) as num
from v_superset_forecast_risk group by date , customerid,product,risktype ) a
join
(select distinct customer_code,product from v_superset_access
where name='{{ current_username() }}' )access
on a.customerid=access.customer_code
and a.product=access.product
and DATE_FORMAT(date,'%Y-%m')> DATE_FORMAT(date_sub(STR_TO_DATE(concat( {{ "'" + "', '".join(filter_values('yearmonthend')) + "'" }},'-01'), '%Y-%m-%d'), interval 12 month),'%Y-%m')
and DATE_FORMAT(date,'%Y-%m')={{ "'" + "', '".join(filter_values('yearmonthend')) + "'" }}
group by DATE,risktype

因為sql里面可以使用jinja 表達式,比如判斷篩選當前沒有篩選的時候,獲取什么數(shù)據(jù)

 注意{%   %} 內(nèi)部使用參數(shù)的時候,不需要加{{}},否則報錯

通過篩選器實現(xiàn)模糊查詢

 

 5、官方參考文檔:

https://superset.apache.org/docs/installation/sql-templating

官方?jīng)]有那么詳細,但是里面有一些我這里可能也沒有消化吸收掉,可以參考看下

總之,通過上面的自定義參數(shù)方法,和jinja表達式在sql中的應用,可以實現(xiàn)動態(tài)查詢,解決一些無法通過頁面直接交互查詢結果顯示的內(nèi)容

另外如果你有其他應用或者自定義上的思考,歡迎留言,相互學習

到此這篇關于Superset實現(xiàn)動態(tài)SQL查詢的文章就介紹到這了,更多相關Superset動態(tài)SQL查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 使用 Apache Superset 可視化 ClickHouse 數(shù)據(jù)的兩種方法
  • superset在linux和windows下的安裝和部署詳細教程
  • JPA多條件復雜SQL動態(tài)分頁查詢功能
  • Mybatis模糊查詢和動態(tài)sql語句的用法
  • Java的MyBatis框架中對數(shù)據(jù)庫進行動態(tài)SQL查詢的教程
  • MyBatis實踐之動態(tài)SQL及關聯(lián)查詢

標簽:臺州 武威 濟寧 泰安 汕頭 安徽 廣東 濟源

巨人網(wǎng)絡通訊聲明:本文標題《Superset實現(xiàn)動態(tài)SQL查詢功能》,本文關鍵詞  Superset,實現(xiàn),動態(tài),SQL,查詢功能,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Superset實現(xiàn)動態(tài)SQL查詢功能》相關的同類信息!
  • 本頁收集關于Superset實現(xiàn)動態(tài)SQL查詢功能的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    奇米一区二区三区| 亚洲线精品一区二区三区| 国产精品久久久久久亚洲伦 | 成人国产精品免费网站| 26uuu精品一区二区在线观看| 亚洲综合在线五月| 91超碰这里只有精品国产| 亚洲国产日韩a在线播放性色| 欧美午夜精品免费| 日本亚洲天堂网| 精品av综合导航| 成人av免费在线播放| 亚洲色图都市小说| 欧美三级韩国三级日本一级| 亚洲综合999| 欧美一区二区人人喊爽| 极品瑜伽女神91| 中文字幕一区二区三区不卡| 欧美在线不卡一区| 日本aⅴ精品一区二区三区| 国产亚洲精品福利| 欧洲日韩一区二区三区| 九九视频精品免费| 一区二区三区在线免费视频| 欧美一区二区三区在线电影| 国产精品综合在线视频| 夜夜精品视频一区二区 | 综合电影一区二区三区 | 日本成人中文字幕在线视频| 亚洲精品在线免费播放| 91蜜桃免费观看视频| 老司机精品视频在线| 国产精品色婷婷久久58| 日韩美女在线视频| 色噜噜夜夜夜综合网| 日本成人中文字幕| 亚洲午夜久久久久中文字幕久| 精品久久久久香蕉网| 色乱码一区二区三区88| 国产成人免费在线| 日本亚洲免费观看| 亚洲欧美国产三级| 久久久不卡影院| 欧美日韩不卡一区二区| 韩国精品一区二区| 亚洲成人一区在线| 亚洲人精品午夜| 日韩欧美视频在线| 在线看不卡av| 久久99精品国产91久久来源| 欧美一区二区啪啪| 一本大道久久a久久综合婷婷| 日本亚洲三级在线| 尤物视频一区二区| 欧美国产日韩在线观看| 欧美日韩国产综合一区二区| 精彩视频一区二区三区| 麻豆视频一区二区| 午夜激情综合网| 亚洲精品免费视频| 国产片一区二区| 久久综合狠狠综合久久综合88| 欧美亚洲综合色| 91在线精品一区二区| 亚洲自拍偷拍综合| 亚洲综合色自拍一区| 国产精品国产三级国产三级人妇 | 日韩电影免费在线看| 亚洲一区二区成人在线观看| 亚洲欧洲性图库| 亚洲人被黑人高潮完整版| 国产精品色一区二区三区| 国产精品欧美久久久久无广告| 久久综合久久鬼色| 国产性天天综合网| 国产精品久久二区二区| 亚洲欧美一区二区三区极速播放 | 国产精品久久久久婷婷二区次| 日韩一区二区在线看片| 51午夜精品国产| 精品乱人伦小说| 欧美xingq一区二区| 久久婷婷色综合| 久久久综合网站| 综合自拍亚洲综合图不卡区| 中文字幕一区二区在线观看| 一区二区三区日韩在线观看| 欧美aa在线视频| 成人污视频在线观看| 日本精品一区二区三区四区的功能| 欧美写真视频网站| 精品国产免费人成电影在线观看四季| 久久久亚洲精华液精华液精华液 | 久久精品无码一区二区三区| 久久久久久久久久久久久久久99 | 国产精品亚洲一区二区三区在线 | 国产乱码精品一区二区三区五月婷| 国产自产高清不卡| 国产精品小仙女| 91美女片黄在线观看91美女| 欧美日韩中字一区| 久久婷婷一区二区三区| 亚洲精选视频在线| 精一区二区三区| 成人动漫视频在线| 日韩视频免费观看高清完整版 | 欧美日韩国产综合久久 | 亚洲国产精品自拍| 精品一区二区三区影院在线午夜| 国产精品一二三区在线| 欧美影院午夜播放| 国产精品美女一区二区三区| 日韩va欧美va亚洲va久久| 成人性生交大合| 欧美在线不卡视频| 国产精品久久久久影院老司 | 日韩中文字幕亚洲一区二区va在线 | 国产91在线|亚洲| 欧美亚洲一区二区在线观看| 久久影音资源网| 日本视频在线一区| 99视频在线精品| 精品黑人一区二区三区久久 | av一区二区三区在线| 亚洲欧美另类综合偷拍| 欧美日韩中文字幕一区二区| 激情综合色综合久久综合| 国产欧美日韩精品一区| 91免费版pro下载短视频| 日韩高清国产一区在线| 国产欧美一区二区三区网站| 色88888久久久久久影院野外| 日日摸夜夜添夜夜添国产精品| 久久在线免费观看| 91行情网站电视在线观看高清版| 97久久超碰精品国产| 首页欧美精品中文字幕| 欧美国产精品久久| 7878成人国产在线观看| 丰满少妇久久久久久久| 日本欧洲一区二区| 亚洲色欲色欲www| 久久免费午夜影院| 欧美一区二区免费观在线| 在线观看免费一区| av在线不卡免费看| 国产一区二区在线电影| 亚洲精品亚洲人成人网| 久久午夜色播影院免费高清| 欧美日韩国产综合一区二区| 99久久精品国产一区| 蜜桃91丨九色丨蝌蚪91桃色| 玉米视频成人免费看| 久久精品综合网| 日韩精品影音先锋| 欧美视频完全免费看| 成人午夜视频网站| 国内外成人在线| 日本欧美一区二区| 亚洲精品免费在线播放| 国产精品初高中害羞小美女文| 日韩美女主播在线视频一区二区三区| 91小视频在线免费看| 成人午夜精品在线| 国产91高潮流白浆在线麻豆| 卡一卡二国产精品| 免费观看30秒视频久久| 偷拍亚洲欧洲综合| 午夜欧美2019年伦理| 香蕉乱码成人久久天堂爱免费| 亚洲黄色小视频| 亚洲一二三级电影| 亚洲一区二区三区四区五区中文| 亚洲人成小说网站色在线| 亚洲视频电影在线| 免费成人在线观看视频| 国产性做久久久久久| 欧美色男人天堂| 国产a久久麻豆| 婷婷中文字幕综合| 中文字幕在线一区免费| 这里只有精品免费| 91在线码无精品| 国产高清在线精品| 婷婷综合五月天| 亚洲欧美成人一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 国产福利一区在线观看| 亚洲综合精品久久| 日本aⅴ亚洲精品中文乱码| 亚洲激情第一区| 亚洲小说春色综合另类电影| 日韩高清在线不卡| 国产麻豆精品在线观看| gogo大胆日本视频一区| 99热国产精品| 欧美吻胸吃奶大尺度电影 | 欧美一区二区三区在线看| 精品区一区二区| 欧美成人艳星乳罩|