Load
LOAD 陳述式可以從檔案、指定碼中定義的資料、先前載入的表格、網頁、後續 SELECT 陳述式的結果或自動產生的資料來載入欄位。
語法:
LOAD [ distinct ] fieldlist
[( from file [ format-spec ] |
from_field fieldassource [format-spec]
inline data [ format-spec ] |
resident table-label |
autogenerate size )]
[ where criterion | while criterion ]
[ group_by groupbyfieldlist ]
[order_by orderbyfieldlist ]
引數:
引數 | 描述 |
---|---|
distinct | 若您只想載入唯一記錄,您可以使用 distinct 作為預測。若有重複記錄,將會載入第一個執行個體。 若您使用前置載入,需要將 distinct 置於第一個 LOAD 陳述式中,因為 distinct 只會影響目的地表格。 |
fieldlist | fieldlist ::= ( * | field {, field } ) 要載入的欄位清單。使用 * 做為欄位清單表示表格中的所有欄位。 field ::= ( fieldref | expression ) [as aliasname ]欄位定義必須一律包含常值、現有欄位的參考或運算式。 fieldref ::= ( fieldname |@fieldnumber |@startpos:endpos [ I | U | R | B | T] )fieldname 是與表格中欄位名稱相同的文字。請注意,欄位名稱如果包含空格則必須以一般雙引號或方括弧括住。有時候不一定會有檔案名稱。這時請用不同的標記法: @fieldnumber 代表分隔表格檔案中的欄位編號。其必須是正整數,前面加上 "@"。編號一律會從 1 開始,一直編號到欄位的數目為止。 @startpos:endpos 代表欄位在固定長度記錄的檔案中開始和結束的位置。這些位置必須是正整數。這兩個編號前面必須加上 "@",並且以冒號分隔。編號一律會從 1 開始,一直編號到位置的數目為止。在最後一個欄位中,n 用作結束位置。
expression 可以是以同一個表格中的其他一或數個欄位為基礎的數值函數或字串函數。如需進一步資訊,請參閱運算式的語法。 |
from | 如果應該從檔案載入資料,可使用 from。 file ::= [ path ] filename
如果省略路徑,QlikView 將在 Directory 陳述式指定的目錄中搜尋該檔案。如果沒有任何 Directory 陳述式,QlikView 將在工作目錄中搜尋,工作目錄通常是 QlikView 檔案所在的目錄。 資訊備註在 QlikView Server 安裝中,預設工作目錄是 C:\ProgramData\QlikTech\Documents。可以在 QlikView 管理主控台 中修改預設工作目錄。 filename 可包含標準 DOS 萬用字元 (* 和 ?)。這將載入指定的目錄中所有相符的檔案。 format-spec ::= ( fspec-item { , fspec-item } )格式規格包含括弧內數個格式規格項目的清單。 |
from_field | 如果應該從先前載入的欄位載入資料,可使用 from_field。 fieldassource::=(tablename, fieldname) 此欄位是先前載入的 tablename 和 fieldname 名稱。 format-spec ::= ( fspec-item {, fspec-item } )格式規格包含括弧內數個格式規格項目的清單。 |
inline | 如果應該在指令碼中輸入資料,而不是從檔案載入資料,可使用 inline。 data ::= [ text ] 透過 inline 子句輸入的資料必須以方括弧、引號或反引號等特定字元括住。這些之間的文字將以檔案內容的相同方式加以解譯。因此,在文字檔中要插入新行的位置,也應該在 inline 子句的文字中插入新行:方法是在輸入指令碼時按下 Enter 鍵。 在簡單的內嵌載入中,欄數量以第一行定義。 format-spec ::= ( fspec-item {, fspec-item } )您可以透過許多可用於其他載入表格的相同格式規格項目自訂內嵌載入。這些項目列於括號中。如需詳細資訊,請參閱 格式規格項目。 如需更多關於內嵌載入的資訊,請參閱 從內嵌表格載入資料。 |
resident | 如果應該從先前載入的表格載入資料,可使用 resident。 table label 是建立原始表格的 LOAD 或 SELECT 陳述式之前的標籤。標籤結尾應該加上冒號。 在 QlikView 12.00 或更新版本使用 distinct 和 resident LOAD 陳述式的組合時,資料載入順序與 QlikView 11.20 不同。若要定義所需的載入順序,請新增 order by 子句。 |
autogenerate | 如果 QlikView 應該自動產生資料,可使用 autogenerate。 size ::= number Number 是表示要產生記錄筆數的整數。欄位清單不可包含從資料庫要求資料的運算式。在運算式中只能使用常數和無參數函數 (例如 rand()、recno())。 |
extension | 您可以從分析連線載入資料。您需要使用 extension 子句叫用伺服器端延伸 (SSE) 外掛程式中定義的函數,或評估指令碼。 您可以將單一表格傳送至 SSE 外掛程式,並傳回單一資料表格。若外掛程式沒有指定傳回的欄位名稱,欄位將會命名為 Field1, Field2,諸如此類。 Extension pluginname.functionname( tabledescription );
表格欄位定義中的資料類型處理 會在分析連線中自動偵測資料類型。若資料有數值和至少一個非 NULL 文字字串,則該欄位會被視為文字。在任何其他情況下,會被視為數值。 您可以使用 String() 或 Mixed() 圍繞欄位名稱,以強制執行資料類型。
無法在延伸表格欄位定義之外使用 String() 或 Mixed(),且您無法在表格欄位定義中使用其他 QlikView 函數。 更多分析連線相關資訊 如需在 QlikView Server 或 QlikView Desktop 中建立分析連線,請參閱:分析連線 您可以在 GitHub 存放庫中閱讀更多關於分析連線的資訊。qlik-oss/server-side-extension |
where | where 是指明選項中是否應該包含記錄的子句。如果 criterion 為 True,將包含選項。 criterion 是邏輯運算式。 |
while | while 是指明是否應該重複讀取記錄所用的子句。只要 criterion 為 True,就會讀取相同的記錄。若要使用,while 子句一般必須包含 IterNo( ) 函數。 criterion 是邏輯運算式。 |
group_by | group by 是定義應該對哪些欄位彙總 (分組) 資料所用的子句。 彙總欄位應該以某些方式包含在載入的運算式中。只有彙總欄位才能在載入的運算式中的彙總函數之外使用。 groupbyfieldlist ::= (fieldname { ,fieldname } ) |
order_by | order by 是 load 陳述式處理常駐表格記錄前將這些記錄排序所用的子句。常駐表格可按照一或多個欄位以遞增或遞減順序排序。排序主要以數值進行,其次以國家排序順序進行。只有在資料來源是常駐表格時,才能使用此子句。 排序欄位可指定常駐表格按照哪些欄位排序。可以按照常駐表格的名稱或編號 (第一個欄位的編號是 1) 指定欄位。 orderbyfieldlist ::= fieldname [ sortorder ] { , fieldname [ sortorder ] } sortorder 以 asc 表示遞增,以 desc 表示遞減。如果未指定 sortorder,將會採用 asc。 fieldname、path、filename 和 aliasname 是指出個別名稱代表什麼意義的文字字串。來源表格的任何欄位均可做為 fieldname。不過,透過 as 子句 (aliasname) 建立的欄位若不在範圍內,無法在同一個 load 陳述式內使用。 |
注意!如果並未透過 from、inline、resident、from_field 或 autogenerate 子句指定資料的來源,將從後面的 SELECT 或 LOAD 陳述式結果載入資料。後面的陳述式不應該有前置詞。
範例: