當我們遇到巨大的數據量(幾千幾億筆的數據)時, 如果要Extract (提取)數據時因為數據量過大所以要花費非常多時間, 甚至Desktop端的硬體也無法承受
遇上這樣的問題有兩種方式解決
1. Tableau SDK (Extract API)
Tableau 官方的API , 使用者自行透過C, C++, Java, Python 開發程式來做data extract, 再將Extract後的TDE檔案發佈到Tableau Server
用這方式就完全不需要透過Desktop Extract, 排程更新也是自行定義不會受到Tableau Server 排程的最小時間15 分鐘限制
2.Tableau Desktop Zero Extract
這個是參考自Tableau 官方的KB (Publishing and Populating Empty Extracts) & Blog (Easy empty local extracts) 我個人比較喜歡後者的方式
都是透過Filter, 一開始先讓Desktop Extract filter 條件設定下去之後會沒有符合的數據, 所以Extract 出來是空的, 但這Extract Filter的條件, 在Publish Data Source 到Server之後又會變動所以數據就會在Server 端Extract Data
a. 第一種方式, 先設定一個now()的計算字段(DATE), 然後套入Extract的Filter, 選擇Exclude(排除), 在這當下數據就因為時間符合而被排除
但發布數據源到Tableau之後的隔天,因為已經不在排除的日期內,所以就會顯示所有的數據
b. 第二種方法, 先建立一個boolean參數選擇, 並選擇參數為True
再建立一個計算字段, 將boolean參數引用進來, 並引用到Extract 的Filter 中,
這邊同上面第一個方法的道理, 選擇Exclude 目前的值(True)來排除所有的數據
在Desktop產生空的Extract之後, 將boolean參數切換為False之後publish Data Source
都是透過Filter, 一開始先讓Desktop Extract filter 條件設定下去之後會沒有符合的數據, 所以Extract 出來是空的, 但這Extract Filter的條件, 在Publish Data Source 到Server之後又會變動所以數據就會在Server 端Extract Data
a. 第一種方式, 先設定一個now()的計算字段(DATE), 然後套入Extract的Filter, 選擇Exclude(排除), 在這當下數據就因為時間符合而被排除
但發布數據源到Tableau之後的隔天,因為已經不在排除的日期內,所以就會顯示所有的數據
b. 第二種方法, 先建立一個boolean參數選擇, 並選擇參數為True
再建立一個計算字段, 將boolean參數引用進來, 並引用到Extract 的Filter 中,
這邊同上面第一個方法的道理, 選擇Exclude 目前的值(True)來排除所有的數據
在Desktop產生空的Extract之後, 將boolean參數切換為False之後publish Data Source
END
留言
張貼留言
歡迎留言討論指教~~