从驱动器 Qliksense 中的文件夹加载所有文件

问题描述 投票:0回答:1

我试图从 Qliksnese 上的驱动器中的文件夹中获取所有文件(谷歌表格),但出现以下错误 noFileSize。是语法问题吗?

这里有以下脚本:

LIB CONNECT TO 'GDR_1V_WORKLOAD_MANAGEMENT';

SELECT title,
        id,
        mimeType
    FROM ListFiles
    WITH PROPERTIES (
    driveId='driveId',
    query='"folderId" in parents and mimeType = "application/vnd.google-apps.spreadsheet"'
    );

for Each file_name in FieldValueList('title');
     Qualify *; // making sure field names are unique to aviod synthetic keys
     LOAD
        *
     FROM [lib://GDR_1V_WORKLOAD_MANAGEMENT/folderId/$(file_name)];
   next

脚本中driveId和folderId是真实的Id,不是变量。

qliksense
1个回答
0
投票

看起来您正确执行了第一步,即从驱动器和所需文件夹中获取 Google 表格文件列表。但是,为了实际从这些文件内的工作表中提取任何数据,您需要执行更多步骤。

这里有一些您可以用来实现的脚本:

Lib Connect To 'Google_Drive_&_Spreadsheets';

[Google Sheets]:
Select
    title,
    id,
    driveId,
    mimeType,
    parents_id
From ListFiles
  With Properties (
    driveId='',
    query='"folderId" in parents and mimeType = "application/vnd.google-apps.spreadsheet"'
  )
;

For vFileNum = 0 to NoOfRows('Google Sheets') - 1
    Let vCurrentFileId = Peek('id', vFileNum, 'Google Sheets');
    Let vCurrentFileName = Peek('title', vFileNum, 'Google Sheets');
    
    [Google Sheets - $(vCurrentFileName)]:
    NoConcatenate Select
        worksheetKey,
        sheetId,
        index,
        title,
        rowCount,
        colCount
    From ListWorksheets
      With Properties (
        spreadsheetKey='$(vCurrentFileId)'
      )
    ;
    
    For vWorksheetNum = 0 to NoOfRows('Google Sheets - $(vCurrentFileName)') - 1
        Let vCurrentWorksheetName = Peek('title', vWorksheetNum, 'Google Sheets - $(vCurrentFileName)');
        Qualify *;
        
        [Google Sheets - $(vCurrentFileName) - $(vCurrentWorksheetName)]:
        NoConcatenate Select *
        From GetSheetValues
          With Properties (
            spreadsheetKey='$(vCurrentFileId)',
            range='''$(vCurrentWorksheetName)''',
            valueRenderOption='FORMATTED_VALUE',
            dateTimeRenderOption='FORMATTED_STRING',
            generatedNumberedColumns='false',
            skipRows=''
          )
        ;
        
        Unqualify *;
    Next vWorksheetNum
    Drop Table [Google Sheets - $(vCurrentFileName)];
Next vFileNum

以下是有关此脚本功能的一些注释:

  • [Google Sheets]
    表正在收集Google表格文件列表,与您的操作方式相同。
  • 我使用
    For vFileNum = 0 to NoOfRows('Google Sheets') - 1
    循环浏览上面拉入的 Google 表格文件列表。
  • 我在循环中为当前文件创建一个 ID 和名称变量(
    vCurrentFileId
    vCurrentFileName
    )。
  • 然后,我们使用
    ListWorksheets
    端点来拉取循环中当前文件的工作表列表。
  • 然后我们开始一个新的循环来遍历当前文件中的每个工作表。为此,我们使用
    For vWorksheetNum = 0 to NoOfRows('Google Sheets - $(vCurrentFileName)') - 1
  • 我们创建一个新变量
    vCurrentWorksheetName
    设置为当前工作表名称。
  • 我们使用
    Qualify *;
    语句在这里开始表限定。
  • 我们使用
    GetSheetValues
    端点从循环中的当前工作表中提取所有数据。我们使用
    vCurrentWorksheetName
    变量来指定要加载哪个工作表。
© www.soinside.com 2019 - 2024. All rights reserved.