在使用Tableau連接mysql時,mysql數據表爲文本的字段,在Tableau中爲空,但通過查詢是可以獲取的。
經檢查發現,這是因爲在建表時編碼方式導致的問題。
之前建表語句是:
CREATE TABLE IF NOT EXISTS {tablename} (
sites_id VARCHAR(10) COMMENT '平臺',
channel_id VARCHAR(10) COMMENT '類型',
categroy_1st VARCHAR(10) COMMENT '主貼/回貼',
car_category VARCHAR(10) COMMENT '細分市場' ,
car_country VARCHAR(10) COMMENT '國別',
brand VARCHAR(20) COMMENT '品牌',
car_series VARCHAR(20) COMMENT '車型',
pgcugc VARCHAR(1) COMMENT '是否PGC',
volume INT COMMENT '聲量',
datelabel DATE COMMENT '日期',
year varchar(4) comment '年份',
month varchar(2) comment '月份',
day varchar(2) comment '日’);
沒有指定編碼方式,使用show create table tablename查看建表語句,結果如下:
CREATE TABLE IF NOT EXISTS {tablename} (
sites_id VARCHAR(10) COMMENT '平臺',
channel_id VARCHAR(10) COMMENT '類型',
categroy_1st VARCHAR(10) COMMENT '主貼/回貼',
car_category VARCHAR(10) COMMENT '細分市場' ,
car_country VARCHAR(10) COMMENT '國別',
brand VARCHAR(20) COMMENT '品牌',
car_series VARCHAR(20) COMMENT '車型',
pgcugc VARCHAR(1) COMMENT '是否PGC',
volume INT COMMENT '聲量',
datelabel DATE COMMENT '日期',
year varchar(4) comment '年份',
month varchar(2) comment '月份',
day varchar(2) comment '日’) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
發現mysql或默認指定ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci。
爲解決該問題,我們在建表的時候就應該指定編碼方式,新的建表語句如下:
指定編碼方式爲ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CREATE TABLE IF NOT EXISTS {tablename} (
sites_id VARCHAR(10) COMMENT '平臺',
channel_id VARCHAR(10) COMMENT '類型',
categroy_1st VARCHAR(10) COMMENT '主貼/回貼',
car_category VARCHAR(10) COMMENT '細分市場' ,
car_country VARCHAR(10) COMMENT '國別',
brand VARCHAR(20) COMMENT '品牌',
car_series VARCHAR(20) COMMENT '車型',
pgcugc VARCHAR(1) COMMENT '是否PGC',
volume INT COMMENT '聲量',
datelabel DATE COMMENT '日期',
year varchar(4) comment '年份',
month varchar(2) comment '月份',
day varchar(2) comment '日’) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;